RpiRs-001、およびRpiRs-002に搭載されるLPC810に書き込んでいるサンプルプログラムは、ラズパイとの間でI2C通信を行い、UART信号に変換します。
今回は、ラズパイからLPC810へのI2C書き込み(データ55h)に対する、LPC810によるUART送信の応答時間を測定してみました。
- ビットレート指定は、300/600/1200/2400/4800/9600/19200/38400/57600/115200(bps)の10種。
オシロスコープによる波形は、以下の通り。(上段がラズパイからLPC810へのI2C書き込み、下段がLPC810が出力するUART出力です)
(600bps)
(1200bps)
(2400bps)
(4800bps)
(9600bps)
(19200bps)
(38400bps)
(57600bps)
(115200bps)
整理すると下表のようになります。参考としてビット幅も併記しましたが、応答時間との相関が見られ、ビットレートが遅いほど応答時間も長くなっています。
LPC810側は、I2C受信バッファ(64byte)をポーリングしてUART送信バッファ(64byte)に移送し、送信許可ビットをセットする、ということをやっています。
ビットレートによって、この処理時間が変化することは考えにくいため、おそらくLPC内のUARTモジュールの応答時間なんだろうと推察します。
bps | 応答時間(us) | ビット幅(us) |
---|---|---|
300 | 5600 | 3333 |
600 | 2240 | 1666 |
1200 | 1840 | 833 |
2400 | 950 | 416 |
4800 | 500 | 208 |
9600 | 404 | 104 |
19200 | 344 | 52 |
38400 | 322 | 26 |
57600 | 298 | 17 |
115200 | 280 | 8.7 |