復刻:キーワードガイダンス第8回「ソフトシリアル通信」
2014-04-28


初出:技術評論社「組込みプレスVol.10」(平成20(2008)年2月25日発売)

●時代はシリアル通信
パラレルインターフェースが主流だったPCでのHDD接続インターフェースも最近ではすっかりSATAというシリアルインターフェースに置き換わっています。
USBやIEEE1394などを使用する機器も一般的になりました。
パソコン周辺機器がシリアルインターフェースに置き換えられる動きは
主にパラレルインターフェースの高速化の限界に起因するものです。
パラレルインターフェースが高速化できない問題は主に以下により発生します。

(1) 複数の信号が受信側に到達する時間のずれの問題(スキュー)
(2) 複数の信号線間の電磁的干渉による信号劣化問題(クロストーク)

●組込み分野でのシリアル通信
一方で非力な組込み機器の内部環境でシリアルインターフェースを
採用する場合には、以下のように目的が少し異なった方向で展開されます。

(a) ワンチップマイコンなどのピン数の削減
(b) 通信用の接続線が少ないことによる関連部品点数の削減
(c) 可動部の通信接続本数の削減
(d) CPUと周辺コントローラ部品との接続線の節約
(e) ワンチップマイコンの機能ランクを下げたコスト削減
(f) 専用通信コントローラを持っていないワンチップマイコンの応用

(c)の例としては折りたたみ式の携帯電話のヒンジ部分を通して
キーボード部と表示部の間との通信を行わせるような部分で、
配線材を多く通すことが物理的に難しいような場合があります。
通常、シリアル通信の方式は非同期(調歩同期)式と同期式の
2つの方式に分類されます。
クロック同期(同期式)でデータを送信側から受信側のデバイスに
送信する場合、最低限必要な信号線はクロック線とデータ線の2本だけです。
送信側では以下の様な手順でデータを送信します。

(ア) クロック線にLOW出力
(イ) データ線に送りたいデータの状態(HIGH/LOW)を出力
(ウ) クロック線にHIGH出力

以上で1ビットのデータを送信したことになります。
1バイトのデータを送りたければ以上の手順を対象ビットを変えて
8回繰り返せば済みます。
100バイトを送信したければ更に処理を100回繰り返せば良いことになります。
このような処理はワンチップマイコンなどに専用コントローラが内蔵されていることも多いため、実際には送信用レジスタに1バイト単位でデータを書き込めば自動的に上記の手順が実行されます。

●ソフトシリアル通信
さて、(ア)〜(ウ)の手順というのは実はソフトウェアでプログラミング
しても同様のことを実現できます。
ワンチップマイコンのGPIOという汎用の入出力ポートに1ビット単位の
データを書き込むわけです。
このようにGPIOに対するプログラミングでシリアル通信を実現する方法をここでは特別に「ソフトシリアル通信」と呼ぶことにします。
この方式で対応可能なのはクロック同期式シリアル通信です。
SPI(Serial Peripheral Interface)方式や
I2C(Inter-Integrated Circuit)(アイスケアシー)方式という
2つの方式が代表的で、以下の特徴があります。

・周辺チップのインターフェースとして一般的
・1対1という接続形態が可能
・1対nという接続形態が可能
・送信側の都合でクロックの発生を行ってよい
・クロックパルス幅は均一でなくてもよい

これらの方式は(ア)〜(ウ)の手順の上位の手順が複雑ではありますが、
基本的にはプログラミング可能です。
SPI方式は全二重通信が可能な3線式インターフェースであるのに対してI2C方式は半二重通信の2線式インターフェースとなります。

●悪い実装例
(ア)〜(ウ)の手順のプログラムの構造は局所的なループとなり、実際に
この処理プログラムを呼び出した元のプログラムはループが終わるまで
次の処理を呼び出すことが出来ません。
ソフトシリアル通信の多くはこのような「サブルーチン方式」

続きを読む

[組込み]
[キーワードガイダンス]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット