RS-422を初め、差動信号によるシリアル通信は多用されております。
私もセンサーのデーター等で結構使用しております。
そのRS-422やRS-485と言った差動通信ですが、
実際どこまでの速度に耐えられるか?と問われ、
即答できる方は案外少ないのではないでしょうか?
同環境で速度を上げていった場合、
ある速度を境にいきなり通信が不可になる、なんて訳は無く、
実際に段々とエラー率が上がっていく、という状態になるでしょう。
ですので、エラー検出/修復を目的としたプロトコル変調をかければ、
限界速度はガッツリ上がるのではないかと予測されます。
しかしそれは小規模マイコンでは非常に負担の大きい話ですので、
実際のところ、私もデーターを素のまま送受信しているのが実情です。
さて、その環境下にて、どこまでの速度がいけるか、
というのは実際に試してみるのが手っ取り早いわけです。
これが今回の実験の主旨です。
早速、今回の実験の接続図がこれです。
差動トランシーバーであるLTC2862-2同士を接続し、
片方から連続でアスキーデーターを送出。
反対側で受けたデーターをRS-232へ変換してパソコンで表示します。
厳密なエラー率を測定するのが目的ではないので、今回はこれで十分かと。
今回使用しているLTC2862は私が愛用している差動トランシーバーの1つ。
差動信号のトランスミッターとレシーバーが内部接続されている、
半二重通信用のICです。
同一通信ライン上に256個のデバイスをぶら下げることが可能です。
電源電圧は3Vから動作可能なので、3.3V動作のマイコンと直結動作できます。
差動トランシーバーは世の中に沢山存在しておりますね。
オーソドックスなところではSN75176辺りでしょうか。
この手のICは5V動作で、通信速度も結構高速です。
しかし、入力インピーダンスの点であまり多くのデバイスをぶら下げられません。
ということで、当方ではあまり使っていないICです。
先の図を見て気付かれた方もいらっしゃるかもしれませんが、
LTC2862の後ろに-2というのが付いています。
これは通信速度制限でして、-2が付いているとMAX250kbpsです。
ちなみに-1が付いていると制限無し品で、MAX20Mbpsとなります。
うちで在庫しているのは全て速度制限品です。
大は小を兼ねると言いますが、ノイズ耐性やEMIの観点を考慮すると、
超高速通信が必要な案件以外、速度制限品を使った方が無難です。
通信線は当然、ツイストペア線が必要ですが、
今回はUL1007の電線を自分で撚った、自作ツイスト線を使用します。
ケーブル加工されたツイストペアケーブルも持っていますし、
実際の案件では そちらを使う事がほとんどです。
自作ツイスト線ならば既成ケーブルよりも条件が同等もしくは悪いでしょうから、
テストとしてはむしろ好ましいかなと。
まぁテストに使うケーブル代を抑えるという意味もありますが(笑)
最後にLTC2862への給電は送受とも3.3Vです。
ということで早速試してみます。
まずは9600bps。
私が差動通信でよく使う速度です。
結果は全く問題無し。
まぁ予想通りという感じです。
次は19200bps。
これも全く問題無し。
次に38400bps。
もしかしたら少し怪しくなってくるかな?という予想に反し、全く問題無し。
この速度で安定してるということは、9600bps程度なら超余裕状態の様ですね。
さてまだ上げてみます。
次は57600bps。
38400bpsからの上げ幅は少ないのですが、
モニターしてるパソコンのRS-232のボーレート設定の都合です。
結果はこれも全く問題無し。
次は115200bps。
どうかなぁ?と思いつつ試しましたが、結果は全く問題無し。
正直ちょっとビックリ。
こうなると230400bpsも試してみたくなりますね。
LTC2862-2の上限が250kbpsですから、ICの仕様上限近くです。
LTC2862-2への送信データーを生成しているのはPIC16F1825なのですが、
ここでちょっと問題発生。
16F1825の元クロックはクリスタルオシレーターからの8MHz。
8MHzから230400bpsを生成すると、クロック誤差が3%を超えてしまうんです。
実際試してみると、文字化けだらけで完全NG。
もちろん差動通信線の影響による文字化けという可能性もありますが、
115200bpsでの結果を踏まえると、ボーレート誤差の可能性が大きいかも?
16F1825自体のMAX動作クロックは32MHz。
8MHzを供給していますから、4倍PLLを動かして、
システムクロックを32MHzにすれば、115200bpsの際と同誤差に収める事が可能。
早速ファームを書いて試してみますが、動きません(笑)
小一時間悩んだところで、もしかして電源電圧の問題か?と気づきました。
LTC2862は3.3Vで動かしてますが、16F1825は1.8Vで動かしているのです。
改めてデーターシートを確認すると、
4倍PLLを動かしてシステムクロック32MHzで動作させるには、
最低2.5Vの電源電圧が必要でした。
ここまで来たら、最後まで確認してみたいところ。
ターゲット基板を改造してPICマイコンに3.3Vを投入する様に。
するとバッチリ動作しまして、230400bpsでの通信も完璧でした。
今回は6mのツイスト線でしたが、まだまだ延ばしても問題無さそうですね。
さすがに電線代が痛いので、おいそれとは試せませんが・・・・・