<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Silicon Labs EFM32系列 LPUART應用指南

Silicon Labs EFM32系列 LPUART應用指南

作者: 時(shí)間:2016-10-15 來(lái)源:網(wǎng)絡(luò ) 收藏

EFM32 系列LEUART使用指南

本文引用地址:http://dyxdggzs.com/article/201610/307293.htm

簡(jiǎn)介: 本指南目的在于說(shuō)明如何使用EFM32的低能耗 UART (LEUART?) 模塊。即使在器件處于深度休眠模式EM2的情況下,LEUART 也能進(jìn)行全功能UART通信。與智能中斷功能及靈活的DMA 相結合,可實(shí)現簡(jiǎn)單且節能的串行通信。

* 在模式下可使用DMA進(jìn)行數據傳輸;

* 9600波特率下接收數據僅消耗150nA電流;

* 使用32.768kHz作為模塊時(shí)鐘源時(shí)擁有完整UART功能;

* 可配置的接收數據匹配功能;

* 可工作于EM0~EM2模式。

目錄

1 LEUART 原理........................................................................................................................... 3

1.1 一般原理 ......................................................................................................................... 3

2 LEUART 配置........................................................................................................................... 4

2.1 幀、傳輸和奇偶校驗 ..................................................................................................... 4

2.2 時(shí)鐘源 ............................................................................................................................. 4

2.3 波特率 ............................................................................................................................. 5

2.4 DMA集成 ........................................................................................................................ 5

2.5 脈沖發(fā)生器和擴展器 ..................................................................................................... 5

2.6 中斷 ................................................................................................................................ 6

2.7 凍結模式和低頻域同步 ................................................................................................. 6

2.8 DMA集成 ........................................................................................................................ 6

2.9 GPIO和引腳分配 ............................................................................................................ 6

1 LEUART 原理

LEUART:Low Energy Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器,是EFM32片上外設,能夠在滿(mǎn)足極低功耗的同時(shí)提供串口通信功能。

1.1 一般原理

EFM32的LEUART是一個(gè)獨特的低功耗UART,能在極為苛刻的功耗預算下提供雙向通信。僅需一個(gè)32.768 kHz 的時(shí)鐘源即可實(shí)現波特率高達9600的UART通信。這意味著(zhù)EFM32的LEUART可在深度休眠模式EM2下工作,在消耗極低能量的情況下等待接收到來(lái)的UART幀。當一個(gè)UART幀被LEUART完全接收時(shí),CPU可被快速喚醒。還可以選擇用DMA將多個(gè)幀傳送到存儲器中,然后再喚醒CPU。LEUART還具有處理更高層通信協(xié)議的能力。例如,可以選擇阻塞進(jìn)入的幀,直到檢測到一個(gè)可配置的起始幀;還可以選擇檢測一個(gè)可配置的信號幀 (例如用于指示一次傳輸結束)。 與接收過(guò)程一樣,在EM2模式,可直接從CPU逐幀發(fā)送數據,也可以通過(guò)DMA來(lái)發(fā)送較大的幀組。EFM32 LEUART包含支持異步串行通信所需要的所有硬件,因而需要最少的軟件干預,而且消耗極低的能量。 LEUART的優(yōu)勢在于能工作在EM2模式,此時(shí)大多數其他模塊都出于節能考慮而被關(guān)斷。低能耗串行通信選項與不需要CPU干預即可讀寫(xiě)存儲器的DMA能力相結合,為系統設計人員在低能耗應用中使用EFM32提供了寬泛的功能。

2 LEUART 配置

2.1 幀、傳輸和奇偶校驗

LEUART使用幀來(lái)進(jìn)行數據傳輸。一個(gè) LEUART 幀由1個(gè)起始位、8或9個(gè)數據位、1個(gè)可選的奇偶校驗位和1個(gè)或2個(gè)停止位組成 (見(jiàn)圖2.1 )。一次傳輸由一個(gè)起始位啟動(dòng),起始位將數據線(xiàn)從空閑的高電平狀態(tài)拉為低電平。此后,數據位和奇偶校驗位被依序發(fā)送,直到幀傳輸被停止位結束,停止位將數據線(xiàn)保持在高電平。然后,數據線(xiàn)或者進(jìn)入其高電平空閑狀態(tài),或者發(fā)送一個(gè)新的起始位。當一個(gè)幀已準備好要被發(fā)送時(shí),它被從發(fā)送寄存器傳送到移位寄存器,數據位在移位寄存器中被逐位發(fā)送,最低有效位在先??蓪⒄麄€(gè)幀格式反相,(例如)以允許使用低電平作為空閑狀態(tài)。 在數據位結束后可以選擇添加奇偶校驗位來(lái)實(shí)現簡(jiǎn)單的錯誤檢測。有3種不同的奇偶校驗模式:無(wú)校驗、偶校驗和奇校驗。奇偶校驗位的產(chǎn)生和校驗都由硬件完成,有中斷標志用于指示在幀中是否檢測到奇偶校驗錯誤。所希望的幀格式在所選LEUART的初始化期間設置。Emlib 提供一個(gè)初始化函數來(lái)定義使用LEUART進(jìn)行串行通信時(shí)所需要的全部設置。通信通道的所有使用方都必須在通信幀格式上完全一致。有關(guān)LEUART寄存器和功能的詳細信息,請參見(jiàn)器件的參考手冊。

2.2 時(shí)鐘源

像EFM32中的其他低能耗外設一樣,LEUART可由三個(gè)不同的時(shí)鐘源驅動(dòng),即低頻RC振蕩器(LFRCO)、低頻晶體振蕩器(LFXO)和高頻內核時(shí)鐘2分頻(HFCORECLK_LE/2)。HFCORECLK_LE本身可由高頻RC振蕩器(HFRCO)、高頻晶體振蕩器(HFXO)或上述任何一個(gè)低頻振蕩器驅動(dòng)。這種時(shí)鐘選擇的靈活性為系統設計人員使用LEUART功能提供了更寬范圍的可能性。這意味著(zhù)除了在低能耗的EM2模式下使用一個(gè)低頻時(shí)鐘源工作外,LEUART還可以在需要更多UART通信通道的情況下作為UART的補充。不過(guò),為使LEUART達到高于9600的波特率,所選時(shí)鐘源必須是HFCORECLK_LE/2,該選項不能在EM1-EM0模式下使用。

2.3 波特率

所選的LEUART時(shí)鐘源定義了能通過(guò)LEUART獲得的波特率。在標準低能耗工作模式,LEUART能基于32.768 kHz的時(shí)鐘提供300 ~ 9600的波特率。有關(guān)支持哪些波特率的詳細信息,請參見(jiàn)器件的參考手冊。Emlib包含一些用于計算可用波特率、獲取當前波特率以及設置波特率的方法。如果選擇HFCORECLK_LE/2作為L(cháng)EUART的時(shí)鐘源,則可以獲得更高的波特率,但這也意味著(zhù)LEUART將不能工作在EM1以下的模式,因而需要消耗更多的能量。此外,由于需要有一個(gè)高頻時(shí)鐘運行,所以UART和USART也都是可用的。

2.4 DMA集成

LEUART在EM2模式下具有全功能的DMA支持。與LEUART結合使用時(shí),DMA是一個(gè)非常強大的工具,可以最小化CPU的干預。 ? LEUART可被配置為在發(fā)送緩沖器為空或發(fā)送緩沖區和移位寄存器均為空時(shí)向DMA請求數據。 ? LEUART 可被配置為在接收緩沖器為滿(mǎn)時(shí)請求DMA讀取數據。 ? 當在接收寄存器中檢測到一個(gè)有奇偶校驗錯誤的幀時(shí),LEUARTn_CTRL寄存器中ERRSDMA位可被置1,不向DMA發(fā)出讀請求。 當MCU工作在EM2模式時(shí),為了執行DMA傳送,必須將DMA控制器上電。對于讀操作,如果LEUARTn_CTRL中的RXDMAWU被置位,則上電過(guò)程是自動(dòng)完成的;對于寫(xiě)操作,如果LEUARTn_CTRL中的TXDMAWU被置位,該上電過(guò)程也是自動(dòng)完成的。為確保DMA控制器在低能耗模式仍能與LEUART進(jìn)行數據傳送,必須正確配置這些位。在EM2模式,DMA使用HFRCO運行,所以該高頻振蕩器也被自動(dòng)喚醒和關(guān)斷。在使用DMA處理LEUART之前,還必須正確使能和配置DMA。有關(guān)如何初始化一次LEUART和DMA之間的交互的詳細信息,請參見(jiàn)所提供的軟件示例和器件的參考手冊。

2.5 脈沖發(fā)生器和擴展器

LEUART在發(fā)射器輸出端有一個(gè)可選的脈沖發(fā)生器,在接收器輸入還有一個(gè)可選的脈沖擴展器。脈沖發(fā)生器和擴展器可以將LEUART的輸入和輸出格式從NRZ變?yōu)镽ZI。來(lái)自脈沖發(fā)生器的脈沖的寬度可被配置為31.25 μs ~ 500 μs。在波特率為2400或更低的情況下,脈沖發(fā)生器還能產(chǎn)生與IrDA物理層規范兼容的RZI脈沖。

2.6 中斷

在數據接收和發(fā)送期間有大量的中斷可用,以支持中斷驅動(dòng)應用的低能耗優(yōu)勢。當接收或發(fā)送寄存器為空,或在傳輸期間檢測到任何錯誤時(shí),都可以觸發(fā)中斷。LEUART還具有在檢測到特定的可配置幀時(shí)觸發(fā)中斷的能力。這就允許在LEUART之上構建更高層的通信協(xié)議。LEUART甚至還支持一種特殊的多處理器模式,可以進(jìn)行單獨尋址和僅觸發(fā)所期望的MCU來(lái)接收并對發(fā)送的數據做出反應。這在多個(gè)UART芯片使用同一通道進(jìn)行通信的系統中是一個(gè)非常有用的特性。有了這種功能,通過(guò)使用某些只能在所期望的接收器中觸發(fā)中斷的幀來(lái)啟動(dòng)和結束數據傳輸,即可尋址所期望的接收器。在所提供的軟件示例中,信號幀中斷功能用于僅在檢測到一個(gè)特定幀時(shí)喚醒CPU。所有其他幀都被DMA加載到存儲器中,但CPU不產(chǎn)生任何響應,直到預設的信號幀被LEUART檢測到為止。

2.7 凍結模式和低頻域同步

為了修改一些LEUART寄存器,必須與低頻(LF)域實(shí)現同步。在需要修改多個(gè)寄存器時(shí),為了避免不必要的等待延遲,所有的寄存器寫(xiě)操作都應在同一個(gè)軟件模塊內部完成。該模塊由void LEUART_FreezeEnable(LEUART_TypeDef *leuart, bool enable)啟動(dòng),其中enable被設置為true;由相同的函數調用結束,不過(guò)此處enable被設置為false。這樣,所有的寄存器修改操作將會(huì )在一次同步中完成。有關(guān)訪(fǎng)問(wèn)和修改異步寄存器的詳細信息,請參見(jiàn)器件的參考手冊。

2.8 半雙工操作

LEUART提供一個(gè)將發(fā)送數據本地環(huán)回到接收引腳的選項。該功能對調試非常有用,因為L(cháng)EUART能接收它自己發(fā)送的數據。但該功能也用于允許LEUART讀和寫(xiě)同一個(gè)引腳,這是某些半雙工通信模式所需要的。當進(jìn)行全雙工通信時(shí),LEUART提供兩條數據鏈路,允許同時(shí)發(fā)送和接收數據。在半雙工模式,某一時(shí)刻只能在一個(gè)方向發(fā)送數據。LEUART有多種可能的半雙工設置:?jiǎn)螖祿溌?、雙數據鏈路或使用一個(gè)外部驅動(dòng)器。在通過(guò)一個(gè)單數據鏈路通信的情況下,發(fā)送器在不發(fā)送數據時(shí)必須為三態(tài)。如果LEUARTn_CTRL寄存器中的AUTOTRI位被置位,則在發(fā)送器不處于活動(dòng)狀態(tài)時(shí),LEUART能自動(dòng)將發(fā)送引腳置為三態(tài)。

2.9 GPIO和引腳分配

LEUART模塊具有將其TX和RX引線(xiàn)連接到幾個(gè)不同的預定義MCU引腳位置的能力。必須通過(guò)設置LEUARTn_ROUTE寄存器來(lái)使能和連接TX和RX引線(xiàn)到所期望的位置。

為使LEUART能與任何外部系統元件交互,例如RS232端口或另一外設IC,必須正確配置GPIO的I/O引腳。GPIO有多種不同的引腳模式。在官方所提供的代碼樣例中,TX引腳被配置為推挽輸出,RX引腳被使能為帶上拉的輸入。在數據線(xiàn)未被其他部件驅動(dòng)為一個(gè)確定值的情況下,上拉使輸入有一個(gè)確定的狀態(tài)。這種情況往往發(fā)生在TX模塊被使能之前使能了RX模塊。



關(guān)鍵詞: 微控制器 低功耗 UART模塊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>