- <article data-content="[{"type":"block","id":"pfSY-1742737651919","name":"code","data":{"wrap":false,"tokensPerLine":[],"language":"","theme":"default"},"nodes":[{"type":"block","id":"YdWK-1742737651918","name":"code-line","data":{},"nodes":[{"type":"text","id":"GG3Q-1742737651917","leaves":[{"text":"void SPI_Loopback_Test(void) \r","marks":[]}]}]},{"type":"block","id":"jtJY-1742737679191","name":"code-line","data":{},"nodes":[{"type":"text","id":"KKjJ-1742737679190","leaves":[{"text":"{\r","marks":[]}]}]},{"type":"block","id":"y66Y-1742737679193","name":"code-line","data":{},"nodes":[{"type":"text","id":"Q32M-1742737679192","leaves":[{"text":"  uint8_t tx_buffer[16] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,\r","marks":[]}]}]},{"type":"block","id":"Dpwb-1742737679196","name":"code-line","data":{},"nodes":[{"type":"text","id":"LLmz-1742737679194","leaves":[{"text":"                           0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10};\r","marks":[]}]}]},{"type":"block","id":"f9v0-1742737679198","name":"code-line","data":{},"nodes":[{"type":"text","id":"7xI6-1742737679197","leaves":[{"text":"  uint8_t rx_buffer[16] = {0};\r","marks":[]}]}]},{"type":"block","id":"pfEo-1742737679200","name":"code-line","data":{},"nodes":[{"type":"text","id":"MHkJ-1742737679199","leaves":[{"text":"  \r","marks":[]}]}]},{"type":"block","id":"p03a-1742737679202","name":"code-line","data":{},"nodes":[{"type":"text","id":"UbzP-1742737679201","leaves":[{"text":"  // 发送并接收数据\r","marks":[]}]}]},{"type":"block","id":"nLed-1742737679204","name":"code-line","data":{},"nodes":[{"type":"text","id":"AlHr-1742737679203","leaves":[{"text":"  HAL_SPI_TransmitReceive(&hspi3, tx_buffer, rx_buffer, 16, 100);\r","marks":[]}]}]},{"type":"block","id":"skOr-1742737679206","name":"code-line","data":{},"nodes":[{"type":"text","id":"8RHW-1742737679205","leaves":[{"text":"  \r","marks":[]}]}]},{"type":"block","id":"3D0m-1742737679208","name":"code-line","data":{},"nodes":[{"type":"text","id":"d4rH-1742737679207","leaves":[{"text":"  // 验证数据一致性\r","marks":[]}]}]},{"type":"block","id":"vnfE-1742737679210","name":"code-line","data":{},"nodes":[{"type":"text","id":"h6pq-1742737679209","leaves":[{"text":"  if(memcmp(tx_buffer, rx_buffer, 16) == 0) {\r","marks":[]}]}]},{"type":"block","id":"X7WW-1742737679212","name":"code-line","data":{},"nodes":[{"type":"text","id":"T6a4-1742737679211","leaves":[{"text":"    // 数据匹配,测试通过\r","marks":[]}]}]},{"type":"block","id":"ANN1-1742737679214","name":"code-line","data":{},"nodes":[{"type":"text","id":"Sh10-1742737679213","leaves":[{"text":"    HAL_UART_Transmit(&huart1, (uint8_t *)&rx_buffer, 16, 0xFFFF);\r","marks":[]}]}]},{"type":"block","id":"gHL0-1742737679216","name":"code-line","data":{},"nodes":[{"type":"text","id":"oZGd-1742737679215","leaves":[{"text":"  }\r","marks":[]}]}]},{"type":"block","id":"jlks-1742737679218","name":"code-line","data":{},"nodes":[{"type":"text","id":"WMMt-1742737679217","leaves":[{"text":"}","marks":[]}]}]}],"state":{}}]"><div yne-bulb-block="code" data-theme="default" style="white-space-collapse: preserve;" data-language="">void SPI_Loopback_Test(void) 
 
- {
 
-   uint8_t tx_buffer[16] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
 
-                            0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10};
 
-   uint8_t rx_buffer[16] = {0};
 
-   
 
-   // 发送并接收数据
 
-   HAL_SPI_TransmitReceive(&hspi3, tx_buffer, rx_buffer, 16, 100);
 
-   
 
-   // 验证数据一致性
 
-   if(memcmp(tx_buffer, rx_buffer, 16) == 0) {
 
-     // 数据匹配,测试通过
 
-     HAL_UART_Transmit(&huart1, (uint8_t *)&rx_buffer, 16, 0xFFFF);
 
-   }
 
- }</div></article>
       效果如下:
 
        可以看到数据收到后通过串口发送了出来,和传输的数据是一样的,其实SPI还有很多用处,很多外设模块使用的都是SPI接口,有时候只发送(比如一些TFT的控制),更多的是传感器,不过需要注意很多从机的传感器是需要主机提供时钟的,也就是说在读取的时候也需要主机给时钟驱动。