STM32F10xxx架構(gòu):通用同步異步收發(fā)器USART--USART通用
USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯(lián)網(wǎng))、智能卡協(xié)議、IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范、調(diào)制解調(diào)器(CTS/RTS)操作。允許多處理器通信。使用多級緩沖配置的DMA方式,可以實(shí)現(xiàn)高速數(shù)據(jù)通信。
USART主要特性:
全雙工異步通信,NRZ標(biāo)準(zhǔn)格式,分?jǐn)?shù)波特率發(fā)生器系統(tǒng)(發(fā)生和接收共用的可編程波特率,最高達(dá)4.5Mbits/s),8-9位數(shù)據(jù)長度,1-2位停止位,LIN主發(fā)送同步斷開符的能力及LIN從檢測斷開符的能力(當(dāng)配置成LIN時生成13位斷開符,檢測10/11位斷開符),發(fā)送方為同步傳輸提供時鐘,IRDA SIR編解碼器(正常模式下支持3/16位持續(xù)時間),智能卡模擬功能(支持ISO7816-3標(biāo)準(zhǔn)的異步智能卡協(xié)議,用到0.5/1.5個停止位),單線半雙工通信,可配置的使用DMA的多緩沖器通信(在SRAM里利用集中式DMA緩沖接收/發(fā)送字節(jié)),單獨(dú)的發(fā)送器和接收器使能位,檢測標(biāo)志(接收緩沖器滿,發(fā)送緩沖器空,傳輸結(jié)束標(biāo)志),校驗(yàn)控制(發(fā)送校驗(yàn)位,對接收數(shù)據(jù)進(jìn)行校驗(yàn)),四個錯誤檢測標(biāo)志(溢出,噪音,幀錯誤,校驗(yàn)錯誤),10個帶標(biāo)志中斷源(CTS改變,LIN斷開符檢測,發(fā)送數(shù)據(jù)寄存器空,發(fā)送完成,接收數(shù)據(jù)寄存器滿,檢測到總線為空閑,溢出錯誤,幀錯誤,噪音錯誤,校驗(yàn)錯誤),多處理器通信(如果地址不匹配,則進(jìn)入靜默模式),從靜默模式中喚醒(通過總線檢測和地址標(biāo)志檢測),兩種喚醒接收器的方式(地址位MSB 第9位,總線空閑)。
USART功能概述:
1、USART雙向通信至少需要兩個腳:RX(接收數(shù)據(jù)輸入)、TX(發(fā)送數(shù)據(jù)輸出)。
RX:接收數(shù)據(jù)串行輸入,通過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。
TX:發(fā)送數(shù)據(jù)輸出,當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的IO端口配置。當(dāng)發(fā)送器被激活并且不發(fā)送數(shù)據(jù)時,TX引腳處于高電平。在單線和智能卡模式里,此引腳被同時用于數(shù)據(jù)的發(fā)送和接收。
總線在發(fā)送和接收前應(yīng)處于空閑狀態(tài),起始位(1個),數(shù)據(jù)位(1個,8-9位,最低有效位在前),停止位(0.5,1.5,2位,表明數(shù)據(jù)幀結(jié)束),分?jǐn)?shù)波特率發(fā)生器(12位整數(shù)和4位小數(shù)的表示方法),狀態(tài)寄存器1個(USART_SR),數(shù)據(jù)寄存器1個(USART_DR),波特率寄存器1個(USART_BRR,12位整數(shù)和4位小數(shù))。一個智能卡模式下的保護(hù)時間寄存器(USART_GTPR)。
2、USART工作于同步模式時,需要一個引腳:CK。
CK:發(fā)送器時鐘的輸出,此引腳輸出用于同步傳輸?shù)臅r鐘。在start和stop位上沒有時鐘脈沖,軟件可選地,可以在最后一個數(shù)據(jù)位送出一個時鐘脈沖。數(shù)據(jù)可以在RX上同步被接收。這可以用來控制帶移位寄存器的外部設(shè)備(例如LCD驅(qū)動器),時鐘相位和極性都是軟件可編程的。在智能卡模式里,CK可以為智能卡提供時鐘。
3、USART工作于IRDA模式時,需要兩個引腳:IRDA_RDI(數(shù)據(jù)輸入),IRDA_TDO(數(shù)據(jù)輸出)
4、USART工作于硬件流控模式時,需要兩個引腳:nCTS,nRTS。
nCTS:清除發(fā)送,若是高電平,在當(dāng)前數(shù)據(jù)傳輸結(jié)束時阻斷下一次的數(shù)據(jù)發(fā)送。
nRTS:發(fā)送請求,若是低電平,表明USART準(zhǔn)備好接受數(shù)據(jù)。
USART特性描述:
字長可以通過編程USART_CR1寄存器中的M位,選擇成8位或者9位。在起始位期間,TX腳處于低電平,在停止位期間處于高電平。
空閑符號被視為完全由“1”組成的完整的數(shù)據(jù)幀,后面跟著包含了數(shù)據(jù)的下一幀的開始位(“1”的位數(shù)也包含了停止位的位數(shù))。
斷開符號被視為在一個幀周期內(nèi)全部接收到“0”(包括停止位期間,也是“0”)。在斷開幀結(jié)束時,發(fā)送器再插入1或2個停止位(“1”)來應(yīng)答起始位。
發(fā)送和接收由一共用的波特率發(fā)生器驅(qū)動,當(dāng)發(fā)送器和接收器的使能分別置位時,分別為其產(chǎn)生時鐘。
USART寄存器描述:
1、USART狀態(tài)寄存器(USART_SR)
1】地址偏移:0x00,復(fù)位值:0x00C0
2】位31-位10:保留位,硬件強(qiáng)制為0
位9:CTS(CTS標(biāo)志位):在USART4和USART5上不存在這一位。參照上文所述的硬件流模式(USART功能概述里面)。如果設(shè)置了“CTSE位”,當(dāng)nCTS輸入變化狀態(tài)時,該位被硬件置高。由軟件將其清零。如果USART_CR3中的CTSIE為“1”,則產(chǎn)生中斷。 置為0時,表示nCTS狀態(tài)線上沒有變化,置為1時,表示nCTS狀態(tài)線上發(fā)生變化。
位8:LBD(LIN斷開檢測標(biāo)志):當(dāng)探測到LIN斷開時,該位由硬件置“1”,由軟件清“0”(向該位寫0)。如果USART_CR3中的LBDIE為“1”,則產(chǎn)生中斷。 置為0時,表示沒有檢測到LIN斷開,置為1時,表示檢測到LIN斷開。
位7:TXE(發(fā)送數(shù)據(jù)寄存器空):當(dāng)TDR寄存器中的數(shù)據(jù)被硬件轉(zhuǎn)移到移位寄存器的時候,該位被硬件置位,如果USART_CR1寄存器的TXEIE為1,則產(chǎn)生中斷。對USART_DR的寫操作,將該位清零。注意在單緩沖器傳輸中使用該位。 置為0時表示數(shù)據(jù)還沒有被轉(zhuǎn)移到移位寄存器,置為1時,表示數(shù)據(jù)已經(jīng)被轉(zhuǎn)移到移位寄存器。
位6:TC(發(fā)送完成):當(dāng)包含數(shù)據(jù)的一幀發(fā)送完成后,并且TXE=1時,由硬件將該位置1。如果USART_CR1中的TCIE為1,則產(chǎn)生中斷。由軟件序列清除該位(先讀USART_SR,然后寫入USART_DR)。TC位也可以通過寫“0”來清除,只有在多緩沖通訊中才推薦這種清除程序。置為0時,表示發(fā)送未完成,置為1時,表示發(fā)送完成。
位5:RXNE(讀數(shù)據(jù)寄存器非空):當(dāng)RDR移位寄存器中的數(shù)據(jù)被轉(zhuǎn)移到USART_DR寄存器中,該位被硬件置位。如果USART_CR1寄存器中的RXNEIE為1,則產(chǎn)生中斷。對USART_DR的讀操作可以將該位清0。RXNE位也可以通過寫0來清除,只有在多緩沖通訊錄中才推薦這種清除程序。置為0表示數(shù)據(jù)沒有收到,置為1表示收到數(shù)據(jù),且可以讀出。
位4:IDLE(檢測到總線空閑):當(dāng)檢測到總線空閑時,該位被硬件置位。如果USART_CR1中的IDLEIE為1,則產(chǎn)生中斷。由軟件序列清除該位(先讀USART_SR,然后讀USART_DR)。置為0時,表示沒有檢測到空閑總線,為1時表示檢測到空閑總線。備注:IDLE位不會被置高直到RXNE位被置起(即又一次檢測到空閑總線)
位3:ORE(過載錯誤):當(dāng)RXNE仍然是1的時候,當(dāng)前被接收在移位寄存器中的數(shù)據(jù),需要傳送至RDR寄存器時,硬件將該位置位。如果USART_CR1中的RXNEIE為1的話,則產(chǎn)生中斷。由軟件序列將其清零(先讀USART_SR,然后讀USART_CR)。置為0時表示沒有過載錯誤,置為1時表示檢測到過載錯誤。備注:如果該位被置位時,RDR寄存器的值不會丟失。但是移位寄存器中的數(shù)據(jù)會被覆蓋。如果設(shè)置了EIE位,在多緩沖器通信模式下,ORE標(biāo)志置位會產(chǎn)生中斷。
位2:NE(噪聲錯誤標(biāo)志):當(dāng)接收到的幀檢測到噪音時,由硬件對該位置位。由軟件序列對其清零(先讀USART_SR,然后讀USART_DR)。置為0時表示沒有檢測到噪聲,置為1時表示檢測到噪聲。備注:該位不會產(chǎn)生中斷,因?yàn)樗蚏XNE一起出現(xiàn),硬件會在設(shè)置RXNE標(biāo)志時產(chǎn)生中斷。在多緩沖區(qū)通信模式下,如果設(shè)置了EIE位,則設(shè)置NE標(biāo)志時會產(chǎn)生中斷。
位1:FE(幀錯誤):當(dāng)檢測到同步錯位,過多的噪聲或者檢測到斷開符,該位被硬件置位,由軟件序列將其清零,先讀USART_SR,再讀USART_DR。為0時表示沒有檢測到幀錯誤,為1時表示檢測到幀錯誤或者break符。備注:該位不會產(chǎn)生中斷,因?yàn)樗蚏XNE一起出現(xiàn),硬件會在設(shè)置RXNE標(biāo)志時產(chǎn)生中斷。如果當(dāng)前傳輸?shù)臄?shù)據(jù)既產(chǎn)生了幀錯誤,又產(chǎn)生了過載錯誤,硬件還是會擠出該數(shù)據(jù)的傳輸,并且只設(shè)置ORE標(biāo)志位。在多緩沖區(qū)通信模式下,如果設(shè)置了EIE位,則設(shè)置FE標(biāo)志會產(chǎn)生中斷。
位0:PE(校驗(yàn)錯誤):在接收模式下,如果出現(xiàn)奇偶校驗(yàn)錯誤,硬件對該位置位。由軟件序列對其清零(依次讀USART_SR和USART_DR)。在清除PE位前,軟件必須等待RXNE標(biāo)志位被置“1”。如果USART_CR1中的PEIE為“1”,則產(chǎn)生中斷。置為0時表示沒有奇偶校驗(yàn)錯誤,置為1時表示存在奇偶校驗(yàn)錯誤。
2、USART數(shù)據(jù)寄存器(USART_DR)
1】地址偏移:0x04,復(fù)位值:不定
2】位31-9:保留位,硬件強(qiáng)制為0;
位8-0:DR[8:0],數(shù)據(jù)值。包含了發(fā)送和接收的數(shù)據(jù)。由于它是由兩個寄存器組成的,一個給發(fā)送用(TDR),一個給接受用(RDR),該寄存器兼具讀和寫的功能。TDR寄存器提供了內(nèi)部總線和輸出移位寄存器之間的并行接口。RDR寄存器提供了輸出移位寄存器和內(nèi)部總線之間的并行接口。當(dāng)使能校驗(yàn)位(USART_CR1中的PCE位被置位)進(jìn)行發(fā)送時,寫到MSB的值(根據(jù)數(shù)據(jù)長度不同,MSB是第7位或者第8位)會被后來的校驗(yàn)位所取代。當(dāng)使能校驗(yàn)位進(jìn)行接收時,讀到MSB位時接收到的校驗(yàn)位。
3、波特比率寄存器(USART_BRR)
1】地址偏移:0x08,復(fù)位值:0x0000
2】位31-16:保留位,硬件強(qiáng)制置為0;
位15-4:DIV_Mantissa[11:0],USARTDIV的整數(shù)部分。這12位定義了USART分頻器除法因子(USARTDIV)的整數(shù)部分。
位3-0:DIV_Fraction[3:0],USARTDIV的小數(shù)部分。
分?jǐn)?shù)波特率的產(chǎn)生:
接收器和發(fā)送器的波特率在USARTDIV的整數(shù)和小數(shù)寄存器中的值應(yīng)設(shè)置成相同。
Tx/Rx 波特率 = fck/(16*USARTDIV)
這里的fck是給外設(shè)的時鐘(PCLK1用于USART2,3,4,5),(PCLK2用于USART1)。
USARTDIV是一個無符號的定點(diǎn)數(shù),則12位的值設(shè)置在USART_BRR寄存器。備注在寫入USART_BRR之后,波特率計數(shù)器會被波特率寄存器的值所替換。因此,不要再通信進(jìn)行中改變波特率寄存器的數(shù)值。
從USART_BRR寄存器得到USARTDIV
例1:若DIV_Mantissa = 27,DIV_Fraction=12(USART_BRR = 0x1BC),則:
Mantissa(USARTDIV) = 27
Fraction(USARTDIV) = 12/16 = 0.75
所以此時USARTDIV = 27.75
例2:要求USARTDIV = 25.62,則:
DIV_Fraction = 16*0.62 = 9.92,最接近的整數(shù)是10 = 0x0A
DIV_Mantissa = mantissa(25.620) = 25 = 0x19
于是USART_BRR = 0x19A
例3:要求USARTDIV = 50.99,則:
DIV_Fraction = 16*0.99 = 15.84,最接近的整數(shù)是16 = 0x10 => DIV_frac[3:0]溢出 => 進(jìn)位必須加到小數(shù)部分。
DIV_Mantissa = mantissa(50.990+進(jìn)位) = 51 = 0x33
于是USART_BRR = 0x330,USARTDIV = 51
4、控制寄存器1(USART_CR1)
1】地址偏移:0x0C,復(fù)位值:0x0000
2】位31-14:保留位,硬件強(qiáng)制為0
位13:UE(USART使能):當(dāng)該位被清零,在當(dāng)前字節(jié)傳輸完成后的USART的分頻器和輸出停止工作,以減少功耗。該位由軟件設(shè)置和清零。置0時,USART分頻器和輸出被禁止,置1時,USART模塊使能。
位12:M(字長):該位定義了數(shù)據(jù)字的長度,由軟件對其設(shè)置和清零。置為0時表示一個起始位,8個數(shù)據(jù)位,n個停止位。置位1時,表示一個起始位,9個數(shù)據(jù)位,n個停止位。注意在數(shù)據(jù)傳輸過程中(發(fā)送和接收時)不能修改這個位。
位11:WAKE(喚醒的方法):該位決定了把USART喚醒的方法,由軟件對該位設(shè)置和清零。為0時,表示被空閑總線喚醒,為1時表示被地址標(biāo)記喚醒。
位10:PCE(檢驗(yàn)控制使能):用該位選擇是否進(jìn)行硬件校驗(yàn)控制(對于發(fā)送來說就是校驗(yàn)位的產(chǎn)生,對于接受來說,就是校驗(yàn)位的檢測)。當(dāng)使能了該位,在發(fā)送數(shù)據(jù)的最高位(如果M=1,最高位是第9位,如果M是0,最高位是第8位)插入校驗(yàn)位。對接受到的數(shù)據(jù)檢查其檢驗(yàn)位。軟件對它置“1”或者清“0”,一旦設(shè)置了該位,當(dāng)前直接傳輸完成后,校驗(yàn)控制才生效。置0時表示禁止校驗(yàn)控制,置為1時表示使能校驗(yàn)控制。
位9:PS(校驗(yàn)選擇):當(dāng)校驗(yàn)控制使能后,該位用來選擇采用偶校驗(yàn)還是奇校驗(yàn)。軟件對它置1或清0.當(dāng)前字節(jié)傳輸完成后,該選擇生效。置為0時表示為偶校驗(yàn),置為1時表示為奇校驗(yàn)。
位8:PEIE(PE中斷使能):該位由軟件設(shè)置或清除。置為0時禁止產(chǎn)生中斷,置為1時,當(dāng)USART_SR中的PE為“1”時,產(chǎn)生USART中斷。
位7:TXEIE(發(fā)送緩沖區(qū)空中斷使能):該位由如軟件設(shè)置或清除。為0時禁止產(chǎn)生中斷,為1時,當(dāng)USART_SR中的TXE為“1”時,產(chǎn)生USART中斷。
位6:TCIE(發(fā)送完成中斷使能):該位由軟件設(shè)置或清除。置為0時表示禁止產(chǎn)生中斷,置為1時表示當(dāng)USART_SR中的ORE或者RXNE為1時,產(chǎn)生USART中斷。
位5:RXNEIE(接收緩沖區(qū)非空中斷使能):該位由軟件設(shè)置或清除,為0時表示禁止產(chǎn)生中斷,為1時表示當(dāng)USART_SR中的IDLE為1時,產(chǎn)生USART中斷。
位4:IDLEIE(IDLE,總線空閑中斷使能):該位由軟件設(shè)置或清除。當(dāng)為0時表示禁止產(chǎn)生中斷,為1時當(dāng)USART_SR中的IDLE為1時,產(chǎn)生USART中斷。
位3:TE(發(fā)送使能):該位使能發(fā)送器,由軟件設(shè)置或清除。為0時表示禁止發(fā)送,為1時表示使能發(fā)送。備注在數(shù)據(jù)傳輸過程中,除了在智能卡模式下,如果TE位上有個0脈沖(即設(shè)置為“0”之后,再設(shè)置為“1”),會在當(dāng)前數(shù)據(jù)字傳輸完成后,發(fā)送一個前導(dǎo)符(空閑總線)。另外,在當(dāng)TE被設(shè)置后,在真正的數(shù)據(jù)發(fā)送開始前,有一個比特時間的延遲。
位2:RE(接收使能):該位由軟件設(shè)置或清除。當(dāng)設(shè)置為0時,禁止接收,當(dāng)設(shè)置為1時,使能接收并開始搜尋RX引腳上的起始位。
位1:RWU(接收喚醒):該位用來決定是否把USART設(shè)置為靜默模式。該位由軟件設(shè)置或清除,當(dāng)喚醒序列到來時,硬件也會將其清零。置為0時表示接收器處于正常工作模式,置為1時,表示接收器處于靜默模式。備注,在把USART置于靜默模式(設(shè)置RWU位)之前,USART要已經(jīng)先接受了一個數(shù)據(jù)字節(jié),否則在靜默模式下,不能被空閑總線檢測喚醒。另外當(dāng)配置為地址標(biāo)記檢測喚醒(wake位 = 1),在RXNE位被置位時,不能用軟件修改RWU位。
位0:SBK(發(fā)送斷開幀):使用該位來發(fā)送斷開字符,該位可以由軟件設(shè)置或清除。操作過程應(yīng)該是軟件設(shè)置位,然后再斷開幀的停止位時,由硬件將其復(fù)位。當(dāng)該位被設(shè)置為0時,表示沒有發(fā)送斷開字符,當(dāng)設(shè)置為1時,表示將要發(fā)送斷開字符。
5、控制寄存器2(USART_CR2)
1】地址偏移:0x10,復(fù)位值:0x0000
2】位31-15:保留位,硬件強(qiáng)制為0;
位14:LINEN(LIN模式使能):該位由軟件設(shè)置或清除。設(shè)置為0表示禁止LIN模式,設(shè)置為1表示使能LIN模式。在LIN模式下,可以用USART_CR1寄存器中的SBK位發(fā)送LIN斷開符(低13位),以及檢測LIN同步斷開符。
位13-12:STOP(停止位):這兩位用來設(shè)置停止位的位數(shù)。00表示一個停止位,01表示0.5個停止位,10表示2個停止位,11表示1.5個停止位。備注:USART4和USART5不能用0.5停止位和1.5停止位。
位11:CLKEN(時鐘使能):用來使能CK引腳。為0時表示禁止CK引腳,為1表示使能CK引腳。備注,在USART4和USART5上不存在這一位。
位10:CPOL(時鐘極性):在同步模式下,可以用該位選擇SLCK引腳上時鐘輸出的極性。和CPHA位一起配合來產(chǎn)生需要的時鐘/數(shù)據(jù)采樣關(guān)系。為0時表示總線空閑時CK引腳上保持低電平。為1時表示總線空閑時CK引腳上保持高電平。USART4和USART5上不存在這一位。
位9:CPHA(時鐘相位):在同步模式下,可以用該位選擇SLCK引腳上時鐘輸出的相位。和CPOL位一起配合來產(chǎn)生需要的時鐘/數(shù)據(jù)的采樣關(guān)系。為0時表示在時鐘的第一個邊沿進(jìn)行數(shù)據(jù)捕獲,為1時表示在時鐘的第二個邊沿進(jìn)行數(shù)據(jù)捕獲。備注在USART4和USART5上不存在這一位。
位8:LBCL(最后一位時鐘脈沖):在同步模式下,使用該位來控制是否在CK引腳上輸出最后最后那個數(shù)據(jù)字節(jié)(MSB)對應(yīng)的時鐘脈沖。為0時表示最后一位數(shù)據(jù)的時鐘脈沖不從CK輸出。為1時表示最后一位數(shù)據(jù)的時鐘脈沖會從CK輸出。備注:最后一個數(shù)據(jù)位就是第8或者第9個發(fā)送的位(根據(jù)USART_CR1寄存器中的M位所定義的8或9位數(shù)據(jù)幀格式),在USART4和USART5上不存在這一位。
位7:保留位,硬件強(qiáng)制為0。
位6:LBDIE(LIN斷開符檢測中斷使能):斷開符中斷屏蔽(使用斷開分隔符來檢測斷開符),為0時表示禁止中斷,為1時表示只要USART_SR寄存器中的LBD為1就產(chǎn)生中斷。
位5:LBDL(LIN斷開符檢測長度):該位用來選擇是11位還是10位斷開符檢測。為0時表示為10位斷開符檢測,為1時表示為11位的斷開符檢測。
位4:保留位,硬件強(qiáng)制為0。
位3-0:ADD[3:0]:本設(shè)備的USART節(jié)點(diǎn)地址。該位域給出本設(shè)備USART節(jié)點(diǎn)的地址。這是在多處理器通信下的靜默模式中使用的,使用地址標(biāo)記來喚醒某個USART設(shè)備。
3】備注:在使能發(fā)送后不能再改寫CPOL,CPHA,LBCL三個位。
6、控制寄存器3(USART_CR3)
1】地址偏移:0x14,復(fù)位值:0x0000
2】位31-11:保留位,硬件強(qiáng)制為0;
位10:CTSIE(CTS中斷使能):為0時禁止中斷,為1時USART_SR寄存器中的CTS為1時產(chǎn)生中斷。備注,在USART4和USART5上不存在這一位。
位9:CTSE(CTS使能):為0時禁止CTS硬件流控制,為1時CTS模式使能。只有nCTS輸入信號有效(拉成低電平)時才能發(fā)送數(shù)據(jù)。如果在數(shù)據(jù)傳輸過程中,nCTS信號變?yōu)闊o效,那么發(fā)送完這個數(shù)據(jù)后,傳輸就停止下來。如果當(dāng)nCTS為無效時,往數(shù)據(jù)寄存器里面寫數(shù)據(jù),則要等到nCTS有效時才會發(fā)送這個數(shù)據(jù)。備注,在USART4和USART5上不存在這一位。
位8:RTSE(RTS使能):為0時表示禁止RTS硬件流控制,為1時表示RTS中斷使能,只有接受緩沖區(qū)內(nèi)有空余空間時才請求下一個數(shù)據(jù)。當(dāng)前數(shù)據(jù)發(fā)送完成后,發(fā)送操作就需要暫停下來,如果可以接受數(shù)據(jù)了,將nRTS輸出置為有效(拉至低電平)。備注,在USART4和USART5上不存在這一位。
位7:DMAT(DMA使能發(fā)送):該位由軟件設(shè)置或清除。為0時表示禁止發(fā)送時的DMA模式,為1時表示為使能發(fā)送時的DMA模式。備注,在USART4和USART5上不存在這一位。
位6:DMAR(DMA使能接收):該位由軟件設(shè)置或清除。為0時表示禁止接收時的DMA模式,為1時表示使能接收時的DMA模式。備注在USART4和USART5上不存在這一位。
位5:SCEN(智能卡模式使能):該位用來設(shè)置智能卡模式。為0時表示禁止智能卡模式,為1時表示使能智能卡模式。備注在USART4和USART5上不存在這一位。
位4:NACK(智能卡NACK使能):為0時表示校驗(yàn)出錯時,不發(fā)送NACK,為1時表示校驗(yàn)錯誤出現(xiàn)時,發(fā)送NACK。備注,在USART4和USART5上不存在這一位。
位3:HDSEL(半雙工選擇):選擇單線半雙工模式,為0表示不選擇半雙工模式,為1表示選擇半雙工模式。
位2:IRLP(紅外低功耗):用來選擇普通模式還是低功耗紅外模式。為0時表示為普通模式,為1時表示為低功耗模式。
位1:IREN(紅外模式使能):該位由軟件設(shè)置或清零。為0時表示不使能紅外模式,為1時表示使能紅外模式。
位0:EIE(錯誤中斷使能):在多緩沖區(qū)通信模式下,當(dāng)有幀錯誤,過載或者噪聲錯誤時(USART_SR狀態(tài)寄存器中的FE=1,或者ORE=1,或者NE=1)產(chǎn)生中斷。為0時表示禁止中斷,為1時表示只要USART_CR3中的DMAR=1,并且USART_SR中的FE=1,或者ORE=1,或者NE=1,則產(chǎn)生中斷。
7、保護(hù)時間和預(yù)分頻寄存器(USART_GPTR)
1】地址偏移:0x18,復(fù)位值:0x0000
2】位31-16:保留位,硬件強(qiáng)制為0
位15-8:GT[7:0]:保護(hù)時間值,該位規(guī)定了以波特時鐘為單位的保護(hù)時間,在智能卡模式下,需要這個功能。當(dāng)保護(hù)時間過去后,才會設(shè)置發(fā)送完成標(biāo)志。
位7-0:PSC[7:0]:預(yù)分頻值。
a、在紅外(IRDA)低功耗模式下,PSC[7:0] = 紅外低功耗波特率,對系統(tǒng)時鐘分頻以獲得低功耗模式下的頻率:源時鐘被寄存器中的值(僅有8位有效)分頻。00000000:保留-不要寫入該值;00000001:對源時鐘1分頻;00000010:對源時鐘2分頻。
b、在紅外(IRDA)正常模式下,PSC只能設(shè)置為00000001
c、在智能卡模式下,PSC[4:0]:預(yù)分頻值,對系統(tǒng)時鐘進(jìn)行分頻,給智能卡提供時鐘。寄存器中給出的值(低5位有效)乘以2后,作為對源時鐘的分頻因子。00000:保留-不要寫入該值;00001:對源時鐘進(jìn)行二分頻;00010:對源時鐘進(jìn)行4分頻;00011:對源時鐘進(jìn)行6分頻。。。。備注,在智能卡模式下位[7:5]在智能卡模式下沒有意義,UART4和UART5上不存在這一位。
評論