請教STM32F103與DSP採用SPI通訊的問題

2021-06-08 18:27:32 字數 2371 閱讀 8795

1樓:

首先nss配置為硬體的話,相應引腳的gpio應配置為第二功能;

其次確認spi外設的時鐘和使能設定;

還有主從機的配置;

如果stm32是主機,當需要讀取從機資料的時候,必須有主機發起,由主機來提供匯流排時鐘。

如果要發資料,發出資料後返回值不關心,但還是要讀取以清空暫存器;

如果要收資料,不關心發出什麼資料,可以發0x00或0xff;

還取決於從機的控制協議;

比如從機受到0x55後會返回2個位元組資料;用下面的函式

ltd0=spi1_sr_byte(0x55) ; // 傳送指令,不關心收什麼

ltd1=spi1_sr_byte(0x00) ; // 接收資料,不關心發什麼

ltd2=spi1_sr_byte(0x00) ; // 接收資料,不關心發什麼

下面是個例程

unsigned char spi1_sr_byte(unsigned char ltd) // ltd是要傳送的資料

2樓:連郎雪沛雯

dsp首先和stm32都要用3.3v的電源來供電,dsp還有自己的核心電壓來供電。然後確定stm32為整個系統的主cpu,作為spi的主裝置,dsp作為從裝置。

spi三根線連線好就可以實現stm32與dsp的spi通訊,注意stm32的spi設定與dsp的spi設定的通訊格式和clk要相同,通訊速率也要一致才能通訊

請教stm32f103與dsp採用spi通訊的問題

3樓:匿名使用者

dsp首先和stm32都要用3.3v的電源來供電,dsp還有自己的核心電壓來供電。然後確定stm32為整個系統的主cpu,作為spi的主裝置,dsp作為從裝置。

spi三根線連線好就可以實現stm32與dsp的spi通訊,注意stm32的spi設定與dsp的spi設定的通訊格式和clk要相同,通訊速率也要一致才能通訊

請教stm32的spi通訊中的crc校驗問題 spi

4樓:蘑菇飯資訊

crc校驗僅用於保證全雙工通訊的可靠性。資料傳送和資料接收分別使用單獨的crc計算器。

通過對每一個接收位進行可程式設計的多項式運算來計算crc。crc的計算是在由spi_cr1暫存器

中cpha和cpol位定義的取樣時鐘邊沿進行的。

注意: 該spi介面提供了兩種crc計算方法,取決於所選的傳送和/或接收的資料幀格式:8位資料幀採

用cr8;16位資料幀取樣crc16-ccitt。

crc計算是通過設定spi_cr1暫存器中的crcen位啟用的。設定crcen位時同時復位crc寄

存器(spi_rxcrcr和spi_txcrcr)。當設定了spi_cr1的crcnext位,spi_txcrcr的內

容將在當前位元組傳送之後發出。

注意: 在傳輸spi_txcrcr的內容時,如果在移位暫存器中收到的數值與spi_rxcrcr的內容不匹

配,則spi_sr暫存器的crcerr標誌位被置1。如果在tx緩衝器中還有資料,crc的數值僅在

資料位元組傳輸結束後傳送。在傳輸crc期間,crc計算器關閉,暫存器的數值保持不變。

注意: 請參考產品說明書,以確認有此功能(不是所有型號都有此功能)。

spi通訊可以通過以下步驟使用crc:

● 設定cpol、cpha、lsbfirst、br、ssm、ssi和mstr的值;

● 在spi_crcpr暫存器輸入多項式;

● 通過設定spi_cr1暫存器crcen位使能crc計算,該操作也會清除暫存器spi_rxcrcr

和spi_txcrc;

● 設定spi_cr1暫存器的spe位啟動spi功能;

● 啟動通訊並且維持通訊,直到只剩最後一個位元組或者半字;

● 當把最後一個位元組或半字寫進傳送緩衝器,設定spi_cr1的crcnext位,指示硬體在最後

一個資料位元組傳送完成後,傳送crc。在傳送crc期間,crc計算停止;

● 當最後一個位元組或半字被髮送後,spi傳送crc,crcnext位被清除。同樣,接收到的

crc和spi_rxcrcr值進行比較,如果比較不相配,spi_sr上的crcerr標誌被置位,

當設定了spi_cr2暫存器的errie時,則產生中斷。

注意: 當spi時脈頻率較高時,使用者在傳送crc時必須小心。因為在crc傳輸期間,使用cpu的時間

應儘可能少。為了避免在接收最後的資料和crc時出錯,在傳送crc過程中應禁止函式呼叫。

當spi時脈頻率較高時,建議採用dma模式以避免spi速度效能的降低。

當stm32f10***配置為從模式並且使用了nss硬體模式,nss管腳應該在資料傳輸和crc傳輸

期間保持為低。

請問STM32F103中,while 1 裡的語句執行是多長時間執行一次

如果是乙個賦值語句,應該是三個指令。72m時鐘的話就是差不多0.1微妙左右。while迴圈語句的迴圈體至少執行一次嗎 while迴圈語句的迴圈體不是至少執行一次。while迴圈語句的迴圈體不是至少執行一次。for i 0 i 3 i 若開始滿足 i 3 則不執行 while i 若 i 開始為假,則...

STM32F103的APB1時脈頻率最大為多少

apb1最大頻率是36mhz,這個在初始化的時候就已經設定了的,如果用庫函式預設就是36mhz,在main函式執行前就設定了,一般可以不管。如果自己操作暫存器就不一定了。然後psc的問題 其實裡面有兩個分頻的概念,apb預分頻和計數器時脈頻率 ck psc 的關係指的是ahb分頻得到apb1,一般a...

stm32串列埠,STM32怎麼跟串列埠屏連線好

你好,在配置串列埠時,開啟串列埠接受中斷,在中斷中讀取串列埠資料,然後根據此資料呼叫不同的功能函式 name usart1 irqhandler brief 串列埠1中斷 note 接受來自傳送端的資料,並根據資料呼叫函式即可 void usart1 irqhandler void if usart...