專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> STM32 >> 瀏覽文章

USART筆記-基于STM32F107VCT6

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年08月18日   【字體:

USART   通用同步異步收發(fā)器

通用同步異步收發(fā)器(USART)提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。 支持同步單向通信和半雙工單線通信,也支持LIN( 局部互連網(wǎng))智能卡協(xié)議IrDA(紅外數(shù)據(jù)組織)SIR ENDEC 規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS) 操作。它還允許多處理器通信。使用多緩沖器配置的DMA方式,可以實現(xiàn)高速數(shù)據(jù)通信。
 
簡單點講:
USART模式支持:通用的全雙工異步通信模式(UART)、智能卡模式(ISO7816-3,單線半雙工異步模式,但與UART是有區(qū)別的)、同步模式(類SPI)、硬件流控模式(調(diào)制解調(diào)器)、IrDA 模式、LIN通信模式。
 
USART UART在功能上的區(qū)別如下圖[摘自用戶手冊]

USART的中斷可以查看用戶手冊,使能中斷,需要使能NVIC中的,同時還要使能USART模塊中的中斷使能位:【如果按照步驟做后,程序運行不正確,可直接通過偏移地址直接查看各硬件寄存器的相關(guān)位,來看程序配置的結(jié)果是否正確】
   NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQChannel;
   NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;
   NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
   NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStruct);
 
   USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);

部分主要特性:
●  全雙工的,異步通信 
●  NRZ標(biāo)準(zhǔn)格式 
●  分?jǐn)?shù)波特率發(fā)生器系統(tǒng) 
    ─   發(fā)送和接收共用的可編程波特率,最高達(dá)4.5Mbits/s 
●  可編程數(shù)據(jù)字長度(8 位或9位) 
●  可配置的停止位-支持1 或2個停止位 
●  LIN主發(fā)送同步斷開符的能力以及LIN從檢測斷開符的能力 
    ─   當(dāng)USART硬件配置成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é)
●  單線半雙工通信
●  單獨的發(fā)送器和接收器使能位
●  校驗控制 【硬件完成】
    ─   發(fā)送校驗位 
    ─   對接收數(shù)據(jù)進行校驗 
●  檢測標(biāo)志 
    ─   接收緩沖器滿 
    ─   發(fā)送緩沖器空 
    ─   傳輸結(jié)束標(biāo)志 
●  四個錯誤檢測標(biāo)志 
    ─   溢出錯誤 
    ─   噪音錯誤 
    ─   幀錯誤 
    ─   校驗錯誤
● 10個帶標(biāo)志的中斷源 
    ─  CTS改變 
    ─  LIN斷開符檢測 
    ─   發(fā)送數(shù)據(jù)寄存器空 
    ─   發(fā)送完成 
    ─   接收數(shù)據(jù)寄存器滿 
    ─   檢測到總線為空閑 
    ─   溢出錯誤 
    ─   幀錯誤 
    ─   噪音錯誤 
    ─   校驗錯誤 
●  多處理器通信 -- 如果地址不匹配,則進入靜默模式
●  兩種喚醒接收器的方式:地址位(MSB ,第9位),總線空閑 

USART功能概述
接口通過三個引腳與其他設(shè)備連接在一起( 見圖248 ) 。任何USART雙向通信至少需要兩個腳:接
收數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX) 。 
RX:接收數(shù)據(jù)串行輸。通過過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。 
TX:發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的I/O 端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時,TX引腳處于高電平在單線和智能卡模式里,此I/O 口被同時用于數(shù)據(jù)的發(fā)送和接收。

USART的智能卡模式
簡介
   CPU卡:也稱智能卡,卡內(nèi)的集成電路中帶有微處理器CPU、存儲單元(包括隨機存儲器RAM、程序存儲器ROM(FLASH)、用戶數(shù)據(jù)存儲器EEPROM)以及芯片操作系統(tǒng)COS。裝有COS的CPU卡相當(dāng)于一臺微型計算機,不僅具有數(shù)據(jù)存儲功能,同時具有命令處理和數(shù)據(jù)安全保護等功能。CPU卡芯片通俗地講就是指芯片內(nèi)含有一個微處理器,它的功能相當(dāng)于一臺微型計算機。人們經(jīng)常使用的集成電路卡(IC卡)上的金屬片就是CPU卡芯片。

 

智能卡接口
   智能卡時鐘發(fā)生器為與之相連的智能卡提供時鐘信號。智能卡使用這個時鐘產(chǎn)生在智能卡與USART模塊之間進行串行通信的波特率時鐘。如果智能卡上有CPU,該時鐘將同時提供給CPU使用。智能卡接口操作要求,在卡上的CPU運行代碼時可以調(diào)整時鐘速率,這樣可以改變通訊的波特率,或者可以提升智能卡的性能。在ISO7816-3標(biāo)準(zhǔn)中詳細(xì)描述了,協(xié)商時鐘速率和改變時鐘速率的協(xié)議。這個時鐘被用作智能卡內(nèi)CPU的時鐘,因此更新微控制器輸出的時鐘頻率必須和智能卡時鐘同步,應(yīng)注意保證沒有比短周期的40%更短的脈沖。
   ISO 7816-3標(biāo)準(zhǔn)為異步協(xié)議定義了時間基準(zhǔn)單位,稱作ETU(elementary time units),它與輸入至智能卡的時鐘頻率有關(guān)。一個ETU的長度是一個位時間。USART接收器和發(fā)送器在內(nèi)部通過Rx_SW信號相連接。必須將USART模塊設(shè)置為智能卡模式,才能實現(xiàn)從STM32F10xxx向智能卡傳輸數(shù)據(jù)。

      RST(智能卡復(fù)位)、3/5V(3V或5V)、VCC (管理VCC)以及OFF信號(智能卡檢測信號)由軟件控制GPIO
      的端口實現(xiàn)(USART硬件只提供CLK、IO兩個引腳,其他的都是軟件模式實現(xiàn))。為了使數(shù)據(jù)信號以
      正確的驅(qū)動連接到智能卡IO引腳,應(yīng)當(dāng)把USART_TX端口的GPIO位編程為復(fù)用開漏輸出模式,為把
      時鐘發(fā)生器連接到Smartcard_CLK的引腳,USART_CK端口的GPIO位應(yīng)配置為復(fù)用推挽輸出模式。

   智能卡接口是異步通信接口,但是是單線半雙工異步通信,通信與微處理器通信的過程沒有直接的關(guān)系,但是該時鐘輸送至智能卡,智能卡時鐘發(fā)生器為與之相連的智能卡提供時鐘信號。智能卡使用這個時鐘產(chǎn)生在智能卡與
USART模塊之間進行串行通信的波特率時鐘。如果智能卡上有CPU,該時鐘將同時提供給CPU使用。
    智能卡是一個單線半雙工通信協(xié)議,當(dāng)與智能卡相連接時,USART的TX驅(qū)動一根智能卡也驅(qū)動的雙向線【usart端收發(fā)都在一個引腳上,在智能卡模式下在芯片內(nèi)部通過媒介連接,這也是與智能卡的異步模式與UART通用的異步模式的區(qū)別,且智能卡的異步模式處理器還要外送時鐘給智能卡使用】。為了做到這點,SW_RX必須和TX連接到相同的I/O 口。在發(fā)送開始位和數(shù)據(jù)字節(jié)期間,發(fā)送器的輸出使能位TX_EN被置起,在發(fā)送停止位期間被釋放( 弱上拉) ,因此在發(fā)現(xiàn)校驗錯誤的情況下接收器可以將數(shù)據(jù)線拉低。如果TX_EN不被使用,在停止位期間TX被拉到高電平:這樣的話,只要TX配置成開漏,接收器也可以驅(qū)動這根線。
關(guān)閉窗口