娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月06日(星期四)

正在發(fā)生

2020年02月06日 | 基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

發(fā)布者:RoboPilot 來源: elecfans關(guān)鍵字:STM32F4  單片機(jī)  USART  寄存器控制 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

USART又叫通用同步異步收發(fā)器,塔提供了一種靈活的方法與工業(yè)使用標(biāo)準(zhǔn)NRZ異步春航數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇,支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯(lián)網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范以及調(diào)制解調(diào)器(CTS/RTS)操作,它還允許多處理器通信,使用多換成器配置的DMA方式,可以實現(xiàn)高速數(shù)據(jù)通信。


USART寄存器控制框圖如下

基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

可通過對 USART_CR1 寄存器中的 M 位進(jìn)行編程來選擇 8(置0) 位或 9(置1) 位的字長。TX 引腳在起始位工作期間處于低電平狀態(tài)。在停止位工作期間處于高電平狀態(tài)。


空閑字符可理解為整個幀周期內(nèi)電平均為“1”(停止位的電平也是“1”),該字符后是下一個數(shù)據(jù)幀的起始位。


停止字符可理解為在一個幀周期內(nèi)接收到的電平均為“0”。發(fā)送器在中斷幀的末尾插入 1 或 2 個停止位(邏輯“1”位)以確認(rèn)起始位。


發(fā)送和接收由通用波特率發(fā)生器驅(qū)動,發(fā)送器和接收器的使能位分別置 1 時將生成相應(yīng)的發(fā)送時鐘和接收時鐘。

基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

字符發(fā)送

USART 發(fā)送期間,首先通過 TX 引腳移出數(shù)據(jù)的最低有效位。該模式下,USART_DR 寄存 器的緩沖區(qū) (TDR) 位于內(nèi)部總線和發(fā)送移位寄存器之間。


每個字符前面都有一個起始位,其邏輯電平在一個位周期內(nèi)為低電平。字符由可配置數(shù)量的停止位終止。


USART 支持以下停止位:0.5(智能卡模式下接收數(shù)據(jù)使用)、1(默認(rèn))、1.(智能卡模式下發(fā)送與接收使用)5 和 2(正常USART模式,單線模式和調(diào)制解調(diào)器模式支持該值) 個停止位。


注意:數(shù)據(jù)發(fā)送期間不應(yīng)復(fù)位 TE 位。發(fā)送期間復(fù)位 TE 位會凍結(jié)波特率計數(shù)器,從而將損壞 TX 引 腳上的數(shù)據(jù)。當(dāng)前傳輸?shù)臄?shù)據(jù)將會丟失。


使能 TE 位后,將會發(fā)送空閑幀。


停止位的配置


步驟:

1.通過向%20USART_CR1%20寄存器中的%20UE%20位寫入%201%20使能%20USART。

2.%20對%20USART_CR1%20中的%20M%20位進(jìn)行編程以定義字長。

3.%20對%20USART_CR2%20中的停止位數(shù)量進(jìn)行編程。

4.%20如果將進(jìn)行多緩沖區(qū)通信,請選擇%20USART_CR3%20中的%20DMA%20使能%20(DMAT)。按照多緩沖區(qū)%20通信中的解釋說明配置%20DMA%20寄存器。

5.%20使用%20USART_BRR%20寄存器選擇所需波特率。

6.%20將%20USART_CR1%20中的%20TE%20位置%201%20以便在首次發(fā)送時發(fā)送一個空閑幀。

7.%20在%20USART_DR%20寄存器中寫入要發(fā)送的數(shù)據(jù)(該操作將清零%20TXE%20位)。為每個要在單緩%20沖區(qū)模式下發(fā)送的數(shù)據(jù)重復(fù)這一步驟。

8.%20向%20USART_DR%20寄存器寫入最后一個數(shù)據(jù)后,等待至%20TC=1。這表明最后一個幀的傳送已%20完成。禁止%20USART%20或進(jìn)入暫停模式時需要此步驟,以避免損壞最后一次發(fā)送。


單字節(jié)通信

始終通過向數(shù)據(jù)寄存器寫入數(shù)據(jù)來將%20TXE%20位清零。


TXE%20位由硬件置%201,它表示:

●%20數(shù)據(jù)已從%20TDR%20移到移位寄存器中且數(shù)據(jù)發(fā)送已開始。

●%20TDR%20寄存器為空。

●%20USART_DR%20寄存器中可寫入下一個數(shù)據(jù),而不會覆蓋前一個數(shù)據(jù)。


TXEIE%20位置%201%20時該標(biāo)志位會生成中斷。

發(fā)送時,要傳入%20USART_DR%20寄存器的寫指令中存有%20TDR%20寄存器中的數(shù)據(jù),該數(shù)據(jù)將在當(dāng)%20前發(fā)送結(jié)束時復(fù)制到移位寄存器中。


未發(fā)送時,要傳入%20USART_DR%20寄存器的寫指令直接將數(shù)據(jù)置于移位寄存器中,數(shù)據(jù)發(fā)送開%20始時,TXE%20位立即置%201。


如果幀已發(fā)送(停止位后)且%20TXE%20位置%201,TC%20位將變?yōu)楦唠娖健H绻?20USART_CR1%20寄存器%20中的%20TCIE%20位置%201,將生成中斷。

向%20USART_DR%20寄存器中寫入最后一個數(shù)據(jù)后,必須等待至%20TC=1,之后才可禁止%20USART%20或使微控制器進(jìn)入低功率模式。


TC%20位通過以下軟件序列清零:

1.從%20USART_SR%20寄存器讀取數(shù)據(jù)

2.%20向%20USART_DR%20寄存器寫入數(shù)據(jù)

注意:還可通過向%20TC%20位寫入“0”將其清零。建議僅在多緩沖區(qū)通信時使用此清零序列。


中斷字符

將 SBK 位置 1 將發(fā)送一個中斷字符。中斷幀的長度取決于 M 位。(見上圖USART字符說明)

如果 SBK 位置“1”,當(dāng)前字符發(fā)送完成后,將在 TX 線路上發(fā)送一個中斷字符。中斷字符 發(fā)送完成時(發(fā)送中斷字符的停止位期間),該位由硬件復(fù)位。USART 在上一個中斷幀的 末尾插入一個邏輯“1”位,以確保識別下個幀的起始位。


注意:如果軟件在中斷發(fā)送開始前對 SBK 位進(jìn)行了復(fù)位,將不會發(fā)送中斷字符。對于兩個連續(xù)的中 斷,應(yīng)在上一個中斷的停止位發(fā)送完成后將 SBK 位置 1。


空閑字符

將 TE 位置 1 會驅(qū)動 USART 在第一個數(shù)據(jù)幀之前發(fā)送一個空閑幀。(見上圖USART字符說明)

字符接收(位數(shù)取決于M位)

起始位檢測

無論設(shè)置為16 倍或 8 倍過采樣時,起始位檢測序列相同都以16倍過采樣檢測。

在 USART 中,識別出特定序列的采樣時會檢測起始位。該序列為:1 1 1 0 X 0 X 0 X 0 0 0 0。

基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

注意:如果序列不完整,起始位檢測將中止,接收器將返回空閑狀態(tài)(無標(biāo)志位置 1)等待下降沿。


如果 3 個采樣位均為 0(針對第 3 位、第 5 位和第 7 位進(jìn)行首次采樣時檢測到這 3 位均為 0; 針對第 8 位、第 9 位和第 10 位進(jìn)行第二次采樣時檢測到這 3 位均為 0),可確認(rèn)起始位 (RXNE 標(biāo)志位置 1,RXNEIE=1 時生成中斷)。


如果兩次采樣時(對第 3 位、第 5 位和第 7 位進(jìn)行采樣以及對第 8位、第 9 位和第 10 位進(jìn) 行采樣),3 個采樣位中至少有 2 個為 0,則可驗證起始位(RXNE 標(biāo)志位置 1,RXNEIE=1 時生成中斷)但 NE 噪聲標(biāo)志位置 1。如果不滿足此條件,則啟動檢測中止,接收器返回空 閑狀態(tài)(無標(biāo)志位置 1)。


如果其中一次采樣時(對第 3 位、第 5 位和第 7 位進(jìn)行采樣或?qū)Φ?8 位、第 9 位和第 10 位 進(jìn)行采樣),3 個采樣位中有 2 個為 0,則可驗證起始位但 NE 噪聲標(biāo)志位置 1。


字符接收

USART 接收期間,首先通過 RX 引腳移入數(shù)據(jù)的最低有效位。該模式下,USART_DR 寄存 器的緩沖區(qū) (RDR) 位于內(nèi)部總線和接收移位寄存器之間。


步驟:

1.通過向 USART_CR1 寄存器中的 UE 位寫入 1 使能 USART。

2. 對 USART_CR1 中的 M 位進(jìn)行編程以定義字長。

3. 對 USART_CR2 中的停止位數(shù)量進(jìn)行編程。

4. 如果將進(jìn)行多緩沖區(qū)通信,請選擇 USART_CR3 中的 DMA 使能 (DMAR)。按照多緩沖 區(qū)通信中的解釋說明配置 DMA 寄存器。步驟 3

5. 使用波特率寄存器 USART_BRR 選擇所需波特率

6. 將 RE 位 USART_CR1 置 1。這一操作將使能接收器開始搜索起始位。


接收到字符時

● RXNE 位置 1。這表明移位寄存器的內(nèi)容已傳送到 RDR。也就是說,已接收到并可讀取數(shù)據(jù)(以及其相應(yīng)的錯誤標(biāo)志)。

● 如果 RXNEIE 位置 1,則會生成中斷。

● 如果接收期間已檢測到幀錯誤、噪聲錯誤或上溢錯誤,錯誤標(biāo)志位可置 1。

● 在多緩沖區(qū)模式下,每接收到一個字節(jié)后 RXNE 均置 1,然后通過 DMA 對數(shù)據(jù)寄存器執(zhí)行讀操作清零。

● 在單緩沖區(qū)模式下,通過軟件對 USART_DR 寄存器執(zhí)行讀操作將 RXNE 位清零。RXNE標(biāo)志也可以通過向該位寫入零來清零。RXNE 位必須在結(jié)束接收下一個字符前清零,以避免發(fā)生上溢錯誤。


注意:接收數(shù)據(jù)時,不應(yīng)將 RE 位復(fù)位。如果接收期間禁止了 RE 位,則會中止接收當(dāng)前字節(jié)。


中斷字符

接收到中斷字符時,USART 將會按照幀錯誤對其進(jìn)行處理。


空閑字符

檢測到空閑幀時,處理步驟與接收到數(shù)據(jù)的情況相同;如果 IDLEIE 位為 1,則會產(chǎn)生中斷。


上溢錯誤

如果在 RXNE 未復(fù)位時接收到字符,則會發(fā)生上溢錯誤。RXNE 位清零前,數(shù)據(jù)無法從移位 寄存器傳送到 RDR 寄存器。


每接收到一個字節(jié)后,RXNE 標(biāo)志位都將置 1。當(dāng) RXNE 標(biāo)志位是 1 時,如果在接收到下一 個數(shù)據(jù)或尚未處理上一個 DMA 請求時,則會發(fā)生上溢錯誤。發(fā)生上溢錯誤時: ● ORE 位置 1。


● RDR 中的內(nèi)容不會丟失。對 USART_DR 執(zhí)行讀操作時可使用先前的數(shù)據(jù)。

● 移位寄存器將被覆蓋。之后,上溢期間接收到的任何數(shù)據(jù)都將丟失。

● 如果 RXNEIE 位置 1 或 EIE 與 DMAR 位均為 1,則會生成中斷。

● 通過先后對 USART_SR 寄存器和 USART_DR 寄存器執(zhí)行讀操作將 ORE 位清除。

注意:ORE 位置 1 時表示至少 1 個數(shù)據(jù)丟失。存在兩種可能:

● 如果 RXNE=1,則最后一個有效數(shù)據(jù)存儲于接收寄存器 RDR 中并且可進(jìn)行讀取;

● 如果 RXNE=0,則表示最后一個有效數(shù)據(jù)已被讀取,因此 RDR 中沒有要讀取的數(shù)據(jù)。接收到新(丟失)數(shù)據(jù)的同時已讀取 RDR中的最后一個有效數(shù)據(jù)時,會發(fā)生該情況。讀取序列期間(在 USART_SR 寄存器讀訪問與 USART_DR 讀訪問之間)接收到新數(shù)據(jù)時也會發(fā)生該情況。


選擇合適的過采樣方法

接收器采用不同的用戶可配置過采樣技術(shù)(除了同步模式下),可以從噪聲中提取有效數(shù)據(jù)。


可通過編程 USART_CR1 寄存器中的 OVER8 位來選擇采樣方法,且采樣時鐘可以是波特率 時鐘的 16 倍或 8 倍。


根據(jù)應(yīng)用:

● 選擇 8 倍過采樣 (OVER8=1) 以獲得更高的速度(高達(dá) fPCLK/8)。這種情況下接收器對時鐘偏差的最大容差將會降低。

● 選擇 16 倍過采樣 (OVER8=0) 以增加接收器對時鐘偏差的容差。這種情況下,最大速度限制為最高 fPCLK/16可通過編程 USART_CR3 寄存器中的 ONEBIT 位選擇用于評估邏輯電平的方法。有兩種選擇:

● 在已接收位的中心進(jìn)行三次采樣,從而進(jìn)行多數(shù)表決。這種情況下,如果用于多數(shù)表決的 3 次采樣結(jié)果不相等,NF 位置 1。

● 在已接收位的中心進(jìn)行單次采樣


根據(jù)應(yīng)用:

— 在噪聲環(huán)境下工作時,請選擇三次采樣的多數(shù)表決法 (ONEBIT=0);在檢測到噪聲時請拒絕數(shù)據(jù),因為這表示采樣過程中產(chǎn)生了干擾。


— 線路無噪聲時請選擇單次采樣法 (ONEBIT=1) 以增加接收器對時鐘偏差的容差。這種情況下NF 位始終不會置 1。


幀中檢測到噪聲時:

● 在 RXNE 位的上升沿時 NF 位置 1。

● 無效數(shù)據(jù)從移位寄存器傳送到 USART_DR 寄存器。

● 單字節(jié)通信時無中斷產(chǎn)生。然而,在 RXNE 位產(chǎn)生中斷時,該位出現(xiàn)上升沿。多緩沖區(qū)通信時,USART_CR3 寄存器中的 EIE 位置 1 時將發(fā)出中斷。


通過先后對 USART_SR 寄存器和 USART_DR 寄存器執(zhí)行讀操作將 NF 位清零。

注意:智能卡、IrDA 和 LIN 模式下不可采用 8 倍過采樣。在這些模式下,OVER8 位由硬件強(qiáng)制 清零。

基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

關(guān)鍵字:STM32F4  單片機(jī)  USART  寄存器控制 引用地址:基于STM32F4單片機(jī)USART寄存器控制的設(shè)計

上一篇:STM32F4發(fā)送和接收長度數(shù)據(jù)的判斷
下一篇:STM32F103系列單片機(jī)中的定時器工作原理解析

推薦閱讀

據(jù)法國《世界報》報道,機(jī)器人究竟應(yīng)該是什么模樣?大多數(shù)中年人從小形成的概念,是那種腦袋四四方方、有胳膊有腿,頭上多半還頂著一兩根天線的扮相。當(dāng)然,看著“星戰(zhàn)”系列長大的幾代人,腦海中的機(jī)器人造型要時尚得多。比較懂行的朋友則知道機(jī)器人有“人形”和“非人形”的區(qū)別,流水線上怎么看都不像人的機(jī)械臂,其實也是如假包換的機(jī)器人。但日前德國...
在2004年由威爾·史密斯主演的科幻大片《我,機(jī)器人》中,片中的機(jī)器人公司亮出了一句響亮的廣告詞——“2035年,這是個機(jī)器的時代。”而現(xiàn)實生活中,機(jī)器手雖然在自動生產(chǎn)線等領(lǐng)域有越來越廣泛的應(yīng)用,但它依然是冷冰冰工具的形象,具有高度智慧的機(jī)器人離普通人的生活依舊遙遠(yuǎn)。不過,隨著近兩年人工智能迎來了一段爆發(fā)性成長之后,機(jī)器具備了更精準(zhǔn)地獲...
最近在調(diào)一個無線項目,用的是STM8003系列的單片機(jī)。調(diào)用讀IO口的庫函數(shù)if(SET == GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN)){//高電平操作}else{//低電平操作}結(jié)果死活讀不了高電平,但是使用if(GPIO_ReadInputPin(RF_DAT_GPIO_PORT ,RF_DAT_GPIO_PIN)){//高電平操作}else{//低電平操作}卻可以正確讀入引腳電平如是對這個庫函數(shù)進(jìn)行了跟...
我們知道示波器的運作過程大致如下圖所示:我們通過探頭給示波器輸入一個信號,被測信號經(jīng)過示波器前端的放大、衰減等信號調(diào)理電路后,然后高速ADC模數(shù)轉(zhuǎn)換器進(jìn)行信號采樣和數(shù)字量化,示波器的采樣率就是對輸入信號進(jìn)行模數(shù)轉(zhuǎn)換時采樣時鐘的頻率,通俗的講就是采樣間隔,每個采樣間隔采集一個采樣點。比如1GSa/s的采樣率,代表示波器具備每秒鐘采集10億個...

史海拾趣

問答坊 | AI 解惑

音頻的基本知識

本文檔主要包括: 第一部分 模擬聲音-數(shù)字聲音原理 第二部分 音頻壓縮編碼 第三部分 和弦鈴聲格式 第四部分 單聲道、立體聲和環(huán)繞聲第五部分 3D環(huán)繞聲技術(shù) 第六部分 數(shù)字音頻格式和數(shù)字音頻接口…

查看全部問答∨

LED卡片燈

此款卡片燈和銀行卡大小一樣,超薄、超輕、方便攜帶。就像放銀行卡一樣放錢包里即可,晚上照明也較方便取放。 該燈電子部分采用的高容量鋰電池,卡片中露出的部分向上折起,底部的LED就會發(fā)光照明,相反合并的話就會自動關(guān)閉。 …

查看全部問答∨

交流輸出單電容半橋式變壓器開關(guān)電源(part1)開關(guān)電源原理與設(shè)計(連載36)

1-8-2-2.交流輸出單電容半橋式變壓器開關(guān)電源 圖1-39是單電容半橋式變壓器開關(guān)電源的工作原理圖。這里的單電容是把圖1-36中的上分壓電容器C1或下分壓電容器省掉了的意思,因此,圖1-39的單電容半橋式變壓器開關(guān)電源是相對于圖1-36的雙電容半橋式 ...…

查看全部問答∨

wince應(yīng)用層動態(tài)顯示問題

我在做主界面,在主界面顯示之前,我要有很多初始化過程,當(dāng)然就會耗時,所以在主界面顯示之前,我要做個動態(tài)圖片顯示。我是這么實現(xiàn)的,主窗口用的是模式對話框,動態(tài)顯示用非模式對話框。 mfc vs2005 C++ wince5.0 建立一個線程如下 static D ...…

查看全部問答∨

請教嵌入式高手

請教嵌入式視頻高手!本人現(xiàn)在正在做一個在DSP芯片驅(qū)動的單片機(jī)上用LCD顯示一段視頻文件的課題,現(xiàn)在有MPEG4的編解碼(C程序源碼),請教各位大蝦,我要怎么做才能完成這個功能,謝謝!…

查看全部問答∨

求關(guān)于硬件編程方面的教材資料

最近看了點數(shù)據(jù)手冊,有NOR,NAND ,內(nèi)存等數(shù)據(jù)手冊。但是,看了后還不是會些程序,,不知道如何操作。 一方面自己英文太差了,讀的不太懂,現(xiàn)在想求點關(guān)于這方面的資料。。。。。。。 內(nèi)容關(guān)于:(時序方面、硬件編程等(要求最好有數(shù)據(jù)手冊和原 ...…

查看全部問答∨

XS128的nrf24l01的收發(fā)程序

本帖最后由 paulhyde 于 2014-9-15 03:29 編輯   前一陣子在寫XS128的nrf24l01的收發(fā)程序 還是挺難寫的 網(wǎng)上的代碼都沒有XS128的  現(xiàn)在都弄通了  所以把自己的成果傳上來 希望大家共同學(xué)習(xí)    …

查看全部問答∨

【高手指點】vhdl 進(jìn)程嵌套循環(huán)過程

【高手指點】vhdl 進(jìn)程嵌套循環(huán)過程 在進(jìn)程中嵌套循環(huán)過程的語法問題,代碼如下: procedure (signal c : integer;            signal d : integer  ) is begin    ......(省略) ...…

查看全部問答∨

用Protes玩透F2802x DSP!

呵呵,除了運行速度比實際開發(fā)板慢,其他的,都是OK!,…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 蓝田县| 许昌市| 平阴县| 台东县| 北京市| 临澧县| 吴桥县| 原阳县| 望城县| 淮阳县| 阿城市| 新巴尔虎右旗| 贵阳市| 深州市| 涟水县| 和林格尔县| 鹤壁市| 安泽县| 夏邑县| 温泉县| 承德市| 河曲县| 临潭县| 涡阳县| 陕西省| 车致| 汾西县| 湖州市| 黔江区| 澳门| 凭祥市| 津市市| 普兰县| 农安县| 昌黎县| 沂源县| 苗栗市| 英吉沙县| 佛山市| 东安县| 黄浦区|