記事のディレクトリ
1.stm32のSPI送受信の原理
データレジスタは、書き込み用(送信バッファ)と読み取り用(受信バッファ)の2つのバッファに分割(分オープン)されます。データレジスタへの書き込みはTxバッファに書き込み、データレジスタからの読み取りはRxバッファに保持されている値を返します。
SPIレジスタには16ビットがあり、そのうち8ビットは読み取り操作に使用され、残りの8ビットは書き込み操作に使用されます。DRレジスタにデータを書き込むと、図に示すようにデータがTXバッファにロードされ、バッファ内のデータがMOSIピンを介して送信されます。逆に、DRレジスタが読み取られると、 RXバッファは処理のためにプログラマに返され、RXバッファのデータはMISOピンから取得されます。
2、halライブラリ関数SPIブロッキング
2.1関連する機能
HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,uint32_t Timeout)
2.2説明
HAL_SPI_TransmitReceive(SPI_HandleTypeDef * hspi、uint8_t * pTxData、uint8_t * pRxData、uint16_t Size、uint32_t Timeout)関数は、サイズデータを送信し、終了するためにサイズデータを受信する必要があります。 |(hspi-> RxXferCount> 0U))この位置で、受信カウント値が0になるまで、SIZEデータを受信したことを意味します。それ以前は、後続のプログラムは実行できませんが、SPIの完了を待ちます。データ受信中。