TTLとは、UART(周辺機器がシリアルストリームを自動的に受信/送信する場所)またはビットバンギング(ビットを手動で設定/リセット/トグルする場所)を意味しますか?
SPIをお勧めします。これは比較的簡単なプロトコルで、必要に応じてマスター側でビットバンすることができます。(ただし、組み込みの SPI ペリフェラルを使用する方がはるかに簡単です。) SPI マスターはクロック ライン (SCLK) とデータ ライン (MOSI = マスター アウト スレーブ イン) を送信します。ここで、データ ビットはクロックの指定されたエッジで有効になります。ライン; クロック ラインの指定されたエッジでデータ ビットが有効なスレーブからデータ ライン (MISO = master in slave out) を受信します。複数のスレーブがある場合、通常は各スレーブに 1 つのチップ セレクト (CS) ラインを使用します。CS がローの場合、問題のスレーブはアクティブです。それ以外の場合は、クロック/データ信号を無視し、MISO ラインを妨害しないことになっています。SPI はシンプルで、HC594 または HC595 出力レジスタでも機能します (MOSI を SER に、SCLK を SCK に接続し、CS から RCK) は、マイクロコントローラの出力ポート ピンが不足していて、追加のピンが必要な場合に使用します。3 つ以上の SPI デバイスがある場合は、HC138 をデコーダとして使用して、一連のアドレス ビットから個々のデバイス CS ラインを生成し、マイクロプロセッサからマスター チップ セレクト ラインを生成することを検討してください。(一度に 1 つの CS ラインのみがローになると想定されているため)
I2Cは苦痛です。その主な利点は、多数の周辺機器間で共有される 2 線 (+ 電源とグランド) ですべてを実行できることです。ただし、アドレスの競合やその他の多くのことを処理する必要があります。また、SPI よりも遅く、オープン コレクター ラインを備えているため、消費電力 + ノイズ耐性は、プルアップ抵抗 (または電流源) に使用するものに関連しています。
UART は最速のソリューションです。SPI には、両側が同じクロック信号を使用するため、往復伝搬時間に関連する速度制限があります。(信号パス = マスターが SCLK ピンを変更し、スレーブがそれを認識して MISO ピンを変更することで応答し、マスターが次の SCLK エッジで MISO 信号を使用するため、スレーブからの信号はそれまでに到着しているはずです) UART では、着信および発信ビットストリームは独立しており、UART エンドポイント A が UART エンドポイント B にコマンドを送信し、B が応答するのを待ってから次のコマンドを送信するための高レベル プロトコルでない限り、レイテンシがスループットの低下を意味するわけではありません。非常に高速なシリアル ストリームでは、LVDSの使用を検討する必要があります信号の完全性を維持します。ただし、UART バイトの解析は、SPI に比べて面倒です。SPI では明確に区切られたパケットがありますが、UART では区切られていないシリアル ストリームを扱っており、データ自体の解析からパケット化を行う必要があります。
編集:UARTのもう1つのプラスは、プロセッサが大きな送信/受信バッファを自動的に処理できる場合があるため、プログラムが送信される大きなバイトの塊をキューに入れ、感じたときに受信したバイトの束を解析できることです。いいね。ハードウェアは、個々のバイトの送受信の即時性を処理でき、プログラムが何か他のことをしているときに到着する個々のバイトが失われることを心配する必要がなくなります。