STM32串口通信原理及配置方式

處理器與外部設備通信的兩種方式:
並行通信
-傳輸原理:數據各個位同時傳輸。
-優點:速度快
-缺點:佔用引腳資源多
串行通信
-傳輸原理:數據按位順序傳輸。
-優點:佔用引腳資源少
-缺點:速度相對較慢
串行通信
按照數據傳送方向,分爲:
單工:數據傳輸只支持數據在一個方向上傳輸
半雙工:允許數據在兩個方向上傳輸,但是,在某一時刻,只允許數據在一個方向上傳輸,它實際上是一種切換方向的單工通信;
全雙工:允許數據同時在兩個方向上傳輸,因此,全雙工通信是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力。
串行通信的通信方式
同步通信:帶時鐘同步信號傳輸。
-SPI,IIC通信接口
異步通信:不帶時鐘同步信號。
-UART(通用異步收發器),單總線
常見的串行通信接口:
在這裏插入圖片描述
UART異步通信方式引腳:
-RXD:數據輸入引腳。數據接受。
-TXD:數據發送引腳。數據發送。
在這裏插入圖片描述
UART異步通信方式特點:
全雙工異步通信。
分數波特率發生器系統,提供精確的波特率。
-發送和接受共用的可編程波特率,最高可達4.5Mbits/s
可編程的數據字長度(8位或者9位);
可配置的停止位(支持1或者2位停止位);
可配置的使用DMA多緩衝器通信。
單獨的發送器和接收器使能位。
檢測標誌:① 接受緩衝器 ②發送緩衝器空 ③傳輸結束標誌
多個帶標誌的中斷源。觸發中斷。
其他:校驗控制,四個錯誤檢測標誌。
串口通信過程:
在這裏插入圖片描述
STM32串口異步通信需要定義的參數:

  1. 起始位
  2. 數據位(8位或者9位)
  3. 奇偶校驗位(第9位)
  4. 停止位(1,15,2位)
  5. 波特率設置
    在這裏插入圖片描述
    串口操作相關庫函數(省略入口參數):
    void USART_Init(); //串口初始化:波特率,數據字長,奇偶校驗,硬件流控以及收發使能
    void USART_Cmd();//使能串口
    void USART_ITConfig();//使能相關中斷

void USART_SendData();//發送數據到串口,DR
uint16_t USART_ReceiveData();//接受數據,從DR讀取接受到的數據

FlagStatus USART_GetFlagStatus();//獲取狀態標誌位
void USART_ClearFlag();//清除狀態標誌位
ITStatus USART_GetITStatus();//獲取中斷狀態標誌位
void USART_ClearITPendingBit();//清除中斷狀態標誌位
串口配置的一般步驟

  1. 串口時鐘使能,GPIO時鐘使能:RCC_APB2PeriphClockCmd();
  2. 串口復位:USART_DeInit(); 這一步不是必須的
  3. GPIO端口模式設置:GPIO_Init(); 模式設置爲GPIO_Mode_AF_PP
  4. 串口參數初始化:USART_Init();
  5. 開啓中斷並且初始化NVIC(如果需要開啓中斷才需要這個步驟)
    NVIC_Init();
    USART_ITConfig();
  6. 使能串口:USART_Cmd();
  7. 編寫中斷處理函數:USARTx_IRQHandler();
  8. 串口數據收發:
    void USART_SendData();//發送數據到串口,DR
    uint16_t USART_ReceiveData();//接受數據,從DR讀取接受到的數據
  9. 串口傳輸狀態獲取:
    FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
    void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

注:使用中斷需要操作5、7、8步驟,否則不需要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章