RS-422/485通信はその長距離通信が可能な故に今でも工場とかでは幅広く使われています。
RS-422、RS-485 共に差動信号による伝送で10Mbpsのスピードで、最大1.2kmまでデータの伝送が可能です。
RS-422とRS-485の違いは1ライン当たりのドライバ、レシーバーの数と全2重、Point to Pointと半2重、マルチドロップの違いです。
RS-422/485に関する詳しい説明は省かせていただきますので以下のサイトを参考にして下さい。
アイ・ビー・エス・ジャパン株式会社のページ
FiberOpticNetworking’s blog RS-232、RS-422、RS-485の違いは何ですか?
このボードに使用しているRS-422/485のチップはAnalog Devices社のADM2582EBRWZです。
このチップはロジック部分と通信部分がアイソレーションされていて、
最高通信レート: 16 Mbps、1ラインに256ノードの接続可能となっています。
詳しくは以下のデータシートをご覧下さい。
ADM2582EBRWZ データシート
回路図とEagle用のデータはGithubにて公開しています。
kaz19610303/SPRESENSE_RS422_485
ジャンパー設定
SJ1 受信イネーブル制御ピン選択 1: EMMC_DATA3 3:I2S_DIN
SJ2 送信イネーブル制御ピン選択 1: EMMC_DATA2 3:I2S_DOUT
SJ3 ショートでRXラインの終端抵抗有効
SJ4 ショート:RS-485 オープン:RS-422
SJ5 ショート:RS-485 オープン:RS-422
(SJ4とSJ5は両方オープンまたは両方ショートに設定してください)
CN3はアイソレーション電源出力です。
1、2ピン 3.3v
3、4ピン GND
テストプログラム
RS-485で送信下データを自身で受信して、受信したデータをモニターに出力するだけのプログラムです。
ジャンパーの設定
SJ1 1-2ショート
SJ2 1-2ショート
SJ3 ショート
SJ4 ショート
SJ5 ショート
/*
Spresense RS-422/485 ボード(NS-SPR-0301) テストプログラム
rS-422/485 test
Set Jummper
SJ1 1-2ショート
SJ2 1-2ショート
SJ3 ショート
SJ4 ショート
SJ5 ショート
Next Step LLC
https://next-step.asia/
https://github.com/kaz19610303/SPRESENSE_RS422_485
*/
# define Receive_Enable 21 // 受信許可ピン Active LOW
# define Transmit_Enable 20 // 送信許可ピン Active High
void setup() {
// initialize both serial ports:
Serial.begin(9600); // Monitor terminal
Serial2.begin(9600); // RS-422/485 terminal
pinMode(21,OUTPUT);
pinMode(20,OUTPUT);
digitalWrite(Receive_Enable, LOW); // Receive Enable
digitalWrite(Transmit_Enable, HIGH); // Transmit Enable
}
void loop() {
Serial2.println("1234567890"); // Send RS-422/485
while (Serial2.available()) { // Recive RS-422/485
Serial.write(Serial2.read()); // Send Monitor terminal
}
delay(1000);
}