SPI と UART どちらを使おうか、迷っています。

Rxマイコンは、UART と、SPI の、
両方の通信ポートが備わっています。

また、接続したいセンサボードの側にも、
UART(LVTTL)と、SPI(slave)のポートがあります。

動作(プロトコル)はどちらを使った場合も同じで、
Rxマイコンからデータ読み出し命令を送り、
センサボードは、センサ値を返す(SPIの場合は同期)
どちらにせよ役割は果たす(速度も含めて)のですが。

皆さんは、UARTとSPIをどのように使い分けているでしょうか。

信号線数:SPI=3線+ss線 > UART=2線
速度:SPI 1MHz*8byte > UART 961.6kbps-ヘッダー

信号線数を少なくしたい時はUART、
通信容量が多く処理のボトルネックになる場合はSPI、
と考えて良いのでしょうか。

  • yasudaさん

    私の場合は信号線を共有したい場合にI2CやSPI(SSは独立ですが)を、非共有の場合にUARTを採用します。

    クリティカルな要件があるなら、それをクリアできる接続方法を、そうでないなら、処理に慣れた接続方式でいいと思います。

    (スレッド一覧にある通り、通信トラブルに関する話題が多いです)

    by すと@kon
  • すとさん

    早速のご回答ありがとうございます。
    1:n の場合は、SPIのマイコンピンと信号線の共有が
    効果的ですね。

    今回の私の場合は、
    GPS(UART)、XBee(UART)、IMU(UART or SPI)、
    という事で、共有は出来ません。
    処理ルーチンを統一出来るUARTでやってみようかと思います。

    高いbaudrateが出なくて通信に時間がかかり、
    メイン処理のリアルタイム性を悪化させるようなら、
    その時に高速化狙いでSPIを再度検討してみます。