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