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