STM32W108無線射頻模塊串行通信接口

串行通信控制模塊

STM32W108有兩個串行通信控制器:SC1SC2,它們爲全雙工同步和異步串行通信提供瞭如下幾個選項:

l   SPI(串行外設接口),主從型

l   I2C(內部集成電路),主型

l   UART(通用異步接收器/發送器),只有SC1

l   接收和發送FIFO和DMA通道,SPI和UART模式

接收和發送FIFOs可以獲得更快的數據傳輸速度,對於高速的SPIUART,分配專用的接收和發送的DMA通道,以減少CPU的負荷,增加了串行中斷控制器的CPU服務時間。輪詢操作也可以直接訪問串行數據寄存器,圖8.1顯示了串行通信控制器的組件關係。

注:用符號SCx代替SC1SC2去表示一個寄存器命名中的一部分,例如SCx_Tx表示SC1_TxSC2_Tx都有效。

DMA

DMA通道部分介紹瞭如何配置和使用串行接收和傳輸DMA通道。

接收DMA通道有專門的規定來記錄UART接收錯誤,DMA通道從接收FIFO中傳送一個字符到緩衝區時,它會檢查存儲的奇偶校驗以及幀錯誤狀態標誌。當一個錯誤被標記時,SC1_RXERRA/B寄存器將被更新,標記接收的第一個帶有奇偶校驗或幀錯誤接收字符的偏移量。同樣,如果接收溢出錯誤發生時,SC1_RXERRA/B寄存器標記錯誤偏移量。接收FIFO硬件產生INT_SCRXOVF中斷,並且DMA狀態寄存器會立即指示錯誤,但在這種情況下,該錯誤偏移量是輸入接收FIFO的實際溢出位置之前的4個字符。兩種情況會清除錯誤指示:在SC1_DMACTRL寄存器中設置適當的SC_RXDMARST位,或卸載並重新加載相應的DMA緩衝區。

 

中斷

UART中斷髮生在以下事件:

l   發送FIFO爲空和最後一個字符移出(根據SCx_INTMODE,SC1_UARTTXIDLE寄存器位從0到1的跳變或爲高電平)

l   發送FIFO從滿到不滿(根據SCx_INTMODE,SC1_UARTTXFREE寄存器位從0到1跳變或爲高電平)

l   接收FIFO從空變爲不空(根據SCx_INTMODE,SC1_UARTRXVAL寄存器位從0到1跳變或爲高電平),

l   發送DMA緩衝區的A/B完成(SC_TXACTA/B由1跳轉到0)

l   接收DMA緩衝區的A/B完成(SC_RXACTA/B由1跳轉到0)

l   接收到的字符奇偶校驗錯誤

l   接收到的字符有幀錯誤

l   接收FIFO滿時,接收字符丟失(接收溢出錯誤)

爲了確保CPU中斷,在第二級的INT_SCxCFG寄存器設置所需的中斷位,並且通過在INT_CFGSET寄存器中將INT_SCx位置1啓用NVIC中的頂級SCx中斷。 

 

本文出自《STM32W108嵌入式無線傳感器網絡》邱鐵,夏鋒,周玉編著.清華大學出版社,2014年5月
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章