前面給小伙伴講過串口發送和接收異常的可能原因,今天我們講下SPI全雙工模式下數據接收異常的一個原因。
我們知道,SPI是一主多從的總線結構,主機和哪個從機是通過CS片選來決定的。
我們再來看下SPI的框圖:
除了有發送緩沖區和接受緩沖區外,還有一個移位寄存器,所以當使用SPI發送最后一個字節到發送緩沖區時,倒數第二個字節還在移位寄存器中沒有發出,此時如果應用程序將從機CS拉高的話,就會導致從機失效,從而不會發出正確的數據。
那么如何解決呢?
只需要在拉高CS片選前,調用下面這個語句即可:
while(SET == (spi_i2s_flag_get(SPI0,SPI_FLAG_TRANS)));
這句的意思是等待SPI通訊空閑,對應讀取的標志位是SPI_STAT 寄存器中的bit7位
當該位為0時,就標志著SPI緩沖區和移位寄存器中都沒有數據了,你就可以放心大膽的控制CS片選腳啦。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6037文章
44560瀏覽量
635544 -
嵌入式
+關注
關注
5083文章
19129瀏覽量
305436 -
SPI
+關注
關注
17文章
1706瀏覽量
91622
發布評論請先 登錄
相關推薦
全雙工與半雙工的區別 主要是自己學習下
的線序位置上;在半雙工模式下,只需接4根線,參照T568B標準,一般使用1 、2、3、6 線序位置上的四根線,即:白橙、橙、白綠、綠 四根線;白橙、橙 用于發送數據 ,白綠、綠 用于
發表于 12-14 20:59
請問SPI全雙工模式通信中主機與從機之間只接MISO線能夠正常工作嗎?
我的AD采集芯片與STM32之間通過SPI通信,只需STM以中斷的方式讀取AD采集芯片中的數據,采用的是全雙工模式,但是只接了MISO線和時鐘線,并沒有接MOSI這條線。現在我有個疑問
發表于 08-13 02:07
STM32的串口在全雙工模式下會出現鎖死問題的現象
之前曾經寫過一篇《關于CubeMX的串口全雙工接收發送鎖死的問題》的文章,討論了STM32的串口在全雙工模式下會出現鎖死問題的現象。當時的解
發表于 08-16 07:41
api參考說單個iis只能半雙工,全雙工需要兩個iis組合,全雙工模式下兩個iis使用的引腳是否可以配置成一樣呢?
api參考說單個iis只能半雙工,全雙工需要兩個iis組合,這樣全雙工模式下兩個iis使用的引腳
發表于 02-17 07:56
CH32V103基礎教程50-SPI-全雙工通信,軟件控制NSS模式
本章教程主要在SPI雙線全雙工模式下進行主從收發實驗,并采用軟件控制NSS方式。 1、SPI簡介及相關函數介紹關于SPI主從
發表于 04-25 16:51
CH32V103基礎教程51-SPI-全雙工通信,軟件控制NSS模式
本章教程主要在SPI雙線全雙工模式下進行主從收發實驗,并采用軟件控制NSS方式。 1、SPI簡介及相關函數介紹關于SPI主從
發表于 04-26 16:30
AT32F4xx SPI使用全雙工模式通訊
AT32F4xx SPI使用全雙工模式通訊演示AT32F403Axx SPI使用全雙工模式通訊,其余系列的使用方式與此類似。
發表于 10-27 07:27
全雙工傳輸,全雙工傳輸原理是什么?
全雙工傳輸,全雙工傳輸原理是什么?
全雙工模式(Full-duplex Transmissions)是指同時發生在兩個方向上的一種數據傳輸
發表于 03-17 16:22
?4572次閱讀
全雙工與半雙工技術解析
隨著信息技術的迅猛發展,通信系統的性能要求日益提高。在數據傳輸中,雙工模式的選擇對于提高系統效率、降低通信延遲具有重要意義。 一、全雙工模式 全雙工
評論