STM32之USART的基本知識點
掃描二維碼
隨時隨地手機看文章
USART又稱為通用同步異步收發(fā)器,是利用分數比特率發(fā)生器提供寬范圍的比特率選擇。STM32F10x系列的芯片都提供了功能比較強大的USART串口,基本上的串口功能都可以通過硬件來實現。
USART具有以下比較典型的特征:
1.全雙工異步通信;
2.單線半雙工通信;
3.發(fā)送方為同步傳輸提供時鐘;
4.可配置的使用DMA的多緩沖器通信—在SRAM中利用集中式DMA緩沖接受/發(fā)送;
5.單獨的接收器和發(fā)送器使能端;
6.檢測標志,接受緩沖器滿,發(fā)送緩沖器空,傳輸結束標志;
7.4個錯誤檢測標志:溢出錯誤,噪音錯誤,幀錯誤,檢驗錯誤;
8.10帶標志的中斷源等。
任何USART雙向通信都至少需要兩個腳:接受數據輸入(RX)和發(fā)送數據輸出(TX)。
在異步模式下,總線在發(fā)送和接受前應該處于空閑狀態(tài)。
在同步模式下需要用到SCLK引腳:發(fā)送器時鐘輸出。此引腳輸出用于同步傳輸的時鐘(在START和STOP位上沒有時鐘,軟件可選,可以在最后一個數據位送出一個時鐘脈沖)。時鐘相位和極性都是軟件可編程的。
發(fā)送器中,發(fā)送器會根據M位的狀態(tài)發(fā)送8位或9位的數據字。當發(fā)送使能位(TE)被設置時,使能USART同步串口,這時發(fā)送移位肌寄存器中的數據在TX引腳上輸出,相應的時鐘脈沖在SCLK引腳輸出。字符發(fā)送在TX引腳上首先移除數據的最低有效位,每個字符之間都有一個低電平的起始位,之后是停止位,其數目是可配置的。
Tips:在數據傳輸期間不能復位TE位,否則將破壞TX引腳上的數據,因為比特率計數器停止計數,正在傳輸的當前數據將會丟失,TE位被激活后將發(fā)送一個空閑位。
在單字節(jié)通信過程中,先讀USART_SR寄存器,再寫USART_DR寄存器,可以完成對TC位的清0.同時TC位也可以通過對TC位軟件寫0來清除,此清0方式只在多緩沖器通信模式下推薦實用。
設置SBK可以發(fā)送一個斷開符號。斷開幀長度取決于M位,如果設置SBK=1,在完成當前數據發(fā)送后,將在TX線上發(fā)送一個斷開符號。斷開復發(fā)發(fā)送完成時(在斷開符號的停止位時),SBK被硬件復位。USART在最后一個斷開幀的結束處插入邏輯1,保證能識別下一幀的起始位。
Tips:如果在開始發(fā)送斷開幀之前軟件又復位了SBK位,斷開符號將不被發(fā)送。如果要發(fā)送兩個聯系的斷開幀,SBK位應該在前一個斷開符號的停止位之后置起。





