




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ARMCortex-M3嵌入式控制技術
——基于STM32F103RCT6
STM32F103硬件系統與KEILMDK工程第七章
串口通信與聲碼器
TM32F103RCT6微控制器具有5個串口,其中USART1~3是帶有同步串行通信能力的同步異步串行口,而UART4~5是標準的異步串行通信口。本章將以STM32F103RCT6微控制器的USART2為例,介紹其片內串口外設的工作原理,并借助實例詳細介紹串口通信的程序設計方法,包括串口發送數據和基于串口中斷服務函數接收數據的方法。1串口通信工作原理2STM32F103串口3
串口通信寄存器類型實例4串口通信庫函數類型實例5聲碼器7.1串口通信工作原理串口通信是指數據的各位按串行的方式沿一根總線進行的通信方式,RS-232標準的UART串口通信是典型的異步雙工串行通信,通信方式如左圖所示。UART串口通信需要兩個引腳,即TXD和RXD,TXD為串口數據發送端,RXD為串口數據接收端。STM32F103微控制器的串口與計算機的串口按圖7-1的方式相連,串行數據傳輸沒有同步時鐘,需要雙方按相同的位傳輸速率異步傳輸,這個速率稱為波特率,常用的波特率有4800bps、9600bps和115200bps等。UART串口通信的數據包以幀為單位,常用的幀結構為:1位起始位+8位數據位+1位奇偶校驗位(可選)+1位停止位,如右圖所示。7.2STM32F103串口TM32F103RCT6微控制器共有5個串口,其中,USART1~3為帶同步串行通信功能的通用同步異步串行口,UART4~5為標準的異步串行通信口。這里以USART2工作在標準的異步串行通信方式下為例,介紹STM32F103RCT6微控制器的串口工作原理。7.2STM32F103串口串口USART2的基地址為0x40004400,其各個寄存器的情況如下所述。(1)串口數據寄存器USART_DR(偏移地址0x04)
32位的串口數據寄存器USART_DR只有第[8:0]位有效,用于發送串口數據時記為TDR,用于接收串口數據時記為RDR,TDR和RDR是映射到同一個地址的兩個物理寄存器,通過讀、寫指令來區分使用了哪個寄存器,即讀USART_DR時自動識別為RDR,寫USART_DR時自動識別為TDR。(2)波特率寄存器USART_BRR(偏移地址為0x08,復位值為0x0)
32位的波特率寄存器USART_BRR只有第[15:0]位域有效,其中,第[15:4]位域記為DIV_Mantissa[11:0],第[3:0]位域記為DIV_Fraction[3:0]。波特率的計算公式為:波特率=fck/(16×USART_DIV),而USART_DIV=DIV_Mantissa+DIV_Fraction/16,例如,對USART2而言,當fck=PCLK1=32MHz時,如果波特率設為9600bps,則可配置DIV_Mantissa=208,DIV_Fraction=5;如果波特率設為115200bps,則可配置DIV_Mantissa=17,DIV_Fraction=6,實際波特率為115108bps,誤差為0.08%(可接收范圍內)。
(3)串口狀態寄存器USART_SR(偏移地址為0x0,復位值為0xC0)
32位的串口狀態寄存器USART_SR只有第[9:0]位有效,如表所示。位號名稱屬性含義31:10
保留9CTS可讀/可寫CTS標志位。當nCTS線路輸入跳變時,硬件置位,寫入0清零8LBD可讀/可寫LIN中止檢測標志位。LIN中止發生后硬件置位,寫入0清零7TXE只讀發送數據寄存器空標志位。TDR內容傳給移位寄存器時硬件置1,寫DR寄存器清06TC可讀/可寫發送完成標志位。發送完成硬件置1,寫入0清零(寫DR+讀SR也可清0)5RXNE可讀/可寫接收數據沒有就緒標志位。接收數據準備好時硬件置1,讀DR或寫0均可清零4IDLE只讀空閑線路檢測標志位。空閑時自動置1,讀DR+讀SR可清零3ORE只讀溢出錯誤標志位。接收溢出時硬件置1,讀DR+讀SR清零2NE只讀噪聲錯誤標志位。接收的位在采樣時出現噪聲時則硬件置1,讀DR+讀SR可清零1FE只讀幀錯誤標志位。幀錯誤發生時硬件置1,讀DR+讀SR可清零該位0PE只讀校驗位錯誤標志位。接收的數據校驗錯誤時硬件置1,讀DR+讀SR可清零該位(4)串口控制寄存器USART_CR1(偏移地址為0x0C,復位值為0x0)
32位的串口控制寄存器USART_CR1只有第[13:0]位有效,如表所示位號名稱屬性含義31:14
保留13UE可讀/可寫USART有效位。寫入1開啟USART,寫入0關閉12M可讀/可寫字長位。為0表示8位數據位;為1表示9位數據位11WAKE可讀/可寫USART喚醒方式位。為0表示空閑位喚醒;為1表示最后有效數據位喚醒10PCE可讀/可寫校驗控制位。為0表示無校驗;為1表示有校驗9PS可讀/可寫校驗選擇位。為0表示偶校驗;為1表示奇校驗8PEIE可讀/可寫PE中斷有效位。為1表示校驗位出錯觸發中斷,為0表示不觸發7TXEIE可讀/可寫TXE中斷有效位。為1表示發送數據進入移位寄存器后觸發中斷,為0表示不觸發6TCIE可讀/可寫發送完成中斷有效位。為1表示發送數據完成后觸發中斷,為0表示不觸發5RXNEIE可讀/可寫RXNE中斷有效位。為1表示接收數據就緒或溢出時觸發中斷,為0表示不觸發4IDLEIE可讀/可寫空閑中斷有效位。為1表示空閑將觸發中斷,為0表示不觸發3TE可讀/可寫發送有效位。為0表示關閉發送單元;為1表示開啟發送單元2RE可讀/可寫接收有效位。為0表示關閉接收單元;為1表示開啟接收單元1RWU可讀/可寫接收喚醒位。為0表示接收處于活躍模式下;為1表示處于靜默模式下0SBK可讀/可寫發送中止符位。為1表示中止符將被發送,為0表示不發送中止符綜上所述,可知串口的操作主要有如下3種:(1)串口初始化串口初始化包括3個主要的操作,即配置串口通信的波特率、設置串口數據幀的格式以及開啟串口接收中斷等。對于STM32F103RCT6,還應通過寄存器USART_CR1打開接收單元和發送單元。(2)發送數據串口發送數據一般通過函數調用實現,發送數據前應先判斷前一個發送的數據是否發送完成,即判斷USART_SR寄存器的TC位是否為1,如果為1表示前一個數據發送完成,則可以啟動本次數據發送。發送數據只需要將待發送的數據寫入串口數據寄存器USART_DR中,發送單元會按擬定的波特率將數據串行發送出去。(3)接收數據串口接收數據一般通過串口接收中斷實現,需要開啟串口接收中斷,當接收到新的數據就緒時,在串口中斷服務函數中讀取串口接收到的數據。7.3串口通信寄存器類型實例在STM32F103RCT6學習板上,PA2和PA3口通過網標TXD232和RXD232與串口電平芯片ST3232的T2IN和R2OUT管腳相連,參考第2章圖3-2和圖3-6。本節將討論寄存器類型的串口USART2通信實例。具體實現步驟如下所示:(1)在工程PRJ13的基礎上,新建工程“PRJ15”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ15”下。此時的工程PRJ15與PRJ13完全相同。(2)新建文件uart2.c和uart2.h,保存在目錄“D:\STM32F103RCT6PRJ\PRJ15\BSP”下。代碼:代碼:代碼:代碼:添加文件uart2.c到工程管理器的“BSP”分組下編譯鏈接和運行工程PRJ15,同時在計算機端打開串口調試助手,其顯示結果如圖所示。在圖中,點擊“手動發送”,即將“DEF”三個字符由計算機發送給STM32F103RCT6開發板,然后,開發板的STM32F103RCT6微控制器將這三個字符再回送給上位機(這里表示計算機)。工程PRJ15的運行流程7.4串口通信庫函數類型實例本節介紹庫函數類型的串口通信工程實例,與寄存器類型工程PRJ15實現相同的功能,具體建設步驟如下:(1)在工程PRJ14的基礎上,新建工程“PRJ16”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ16”下。此時的工程PRJ16與工程PRJ14完全相同。(2)新建文件uart2.c和uart2.h,保存在目錄“D:\STM32F103RCT6PRJ\PRJ16\BSP”下。代碼:代碼:代碼:將文件uart2.c添加到工程管理器的“BSP”分組下,將目錄“D:\STM32F103RCT6PRJ\PRJ16\STM32F10x_FWLib\src”下的文件stm32f10x_usart.c添加到工程管理器的“LIB”分組下。7.4聲碼器聲碼器SYN6288是一種中文語音合成芯片,通過硬件的形式實現了將中文文本轉化為語音(TTS)。一般地,上位機(這里指ARM微控制器)通過串口將文本數據發送到SYN6288,然后,SYN6288通過文本(包括漢字、數字和字母等)的編碼值,在語音庫中查找其數字形式存儲的發音,再通過片內的數模轉換器(還集成了數字濾波器等)將數字形式的語音轉換為模擬語音信號,并送出模擬語音信號。SYN6288可以直接驅動8歐姆0.5W的揚聲器。7.4.1聲碼器工作原理借助于網標TXD_AUDIO和RXD_AUDIO,STM32F103RCT6微控制器的PA9和PA10管腳與SYN6288的RXD和TXD相連接。由于SYN6288的輸入端RXD為與標準的串口信號反向,所以,需要借助于一個反相器(這里使用了三極管S8050)連接TXD_AUDIO和RXD。在STM32F103RCT6微控制器中,PA9和PA10復用了USART1_TX和USART1_RX功能,即PA9和PA10可作為串口USART1的TXD和RXD端口。聲碼器SYN6288只能工作在波特率為9600bps、19200bps和38400bps下,并且要求串口數據格式為“1位起始位、8位數據位、無校驗位、1位停止位”。因此,可配置STM32F103RCT6微控制器串口USART1工作在9600bps波特率下,然后,借助于串口USART1按照SYN6288規定的數據包協議向其發送文本數據,實現文本數據的語音轉換與輸出。SYN6288的數據包格式包結構包頭(1字節)數據區長度數據區命令字(1字節)命令參數(1字節)文本數據異或校驗碼(1字節)數據0xFD0x000x??0x??0x??0x??0x??...0x??0x??說明固定為0xFD0x??為數據區的字節數見下表長度必須小于等于200字節全部數據(不含校驗碼)的異或值包結構包頭(1字節)數據區長度數據區包結構包頭(1字節)數據區長度數據區命令字(1字節)命令參數(1字節)文本數據異或校驗碼(1字節)數據0xFD0x000x020x21無無0xDE查詢SYN6288的工作狀態“數據區”的控制命令格式數據區(長度小于等于203個字節)命令字(1字節)命令參數(1字節)文本(最多200字節)異或校驗碼(1字節)取值含義高5位含義低3位含義0x01播放文本可取值0,1,2,...,15中的任一值當取值為0時,無背景音樂;當取值為1至15中的某一數k時,播放編號為k的背景音樂0文本采用GB2312編碼要轉化為語音的文本全部數據(含包頭、表示數據區長度的2個字節、命令字、命令參數和文本,不含異或校驗碼)的異或值1文本采用GBK編碼2文本采用BIG5編碼3文本采用UNICODE碼0x31設置波特率00000b0設置波特率為9600bps無文本1設置波特率為19200bps2設置波特率為38400bps0x02停止播放無參數0x03暫停播放0x04繼續播放SYN6288配置波特率數據包SYN6288播放控制的數據包波特率(bps)數據包96000xFD0x000x030x310x000xCF192000xFD0x000x030x310x010xCE384000xFD0x000x030x310x020xCD播放控制數據包停止播放0xFD0x000x020x20xFD暫停播放0xFD0x000x020x030xFC繼續播放0xFD0x000x020x040xFB轉義文本表序號轉義文本含義1[v?]這里的“?”可取值為0至16,表示播放文本的音量大小,0為靜音,16為最大音量,默認為“[v10]”2[m?]這里的“?”可取值為0至16,表示播放背景音樂的音量大小,0為靜音,16為最大音量,默認為“[m4]”3[t?]這里的“?”可取值為0至5,表示語速,0為最慢,5為最快,默認為“[t4]”4[n?]數字的發音方式,這里的“?”可取值為0至2,為1表示數字單個發音(例如“12”發音為“一二”,為2表示相鄰數字合成為數值發音(例如“12”發音為“十二”),為0表示自動識別,默認為“[n0]”5[y?]數字1的讀法,“?”只能取值0或1,為0時,“1”讀“幺”;為1時,“1”讀“一”,默認為“[y0]”6[o?]文本朗讀方式,“?”只能取值0或1,為0時,自然朗讀;為1時,逐字發音,默認為“[o0]”7[r][r]后面緊跟的漢字按姓氏發音,用于多音字的情況8[2][2]后緊跟的兩個漢字聯合成一個詞語發音,中間無停頓9[3][3]后緊跟的三個漢字聯合成一個詞語發音,中間無停頓聲碼器SYN6288支持4種文本編碼體系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人職業技能培訓課件下載
- 東南大學交通工程課件
- 世界名城課件
- 城市綠化用地租賃合同范本
- 【課件】多普勒效應++課件-高二下學期物理人教版(2019)選擇性必修第一冊
- 內蒙古交通職業技術學院《淮揚美食文化主題設計》2023-2024學年第一學期期末試卷
- 四川博睿特外國語學校2025年高三下學期第二次聯考數學試題含解析含解析
- 尋甸回族彝族自治縣2024-2025學年數學四年級第二學期期末學業質量監測試題含解析
- 不同職業的服裝課件設計
- 上海歐華職業技術學院《風景園林設計基礎中小場地設計》2023-2024學年第一學期期末試卷
- 2024年護士資格證考試內外科基礎護理試題及答案
- 慢性病管理的重要試題及答案
- 銷售差價提成管理制度
- 《東歐社會主義國家的改革與演變》社會主義國家的改革與演變化課件-2
- 2025-2030中國口服輪狀病毒疫苗行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025年鄭州鐵路職業技術學院單招職業傾向性測試題庫必考題
- 2025年許昌職業技術學院單招職業技能測試題庫及答案一套
- 2025年安陽職業技術學院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025陜西省建筑安全員-B證考試題庫及答案
- 中央2024年國家藥品監督管理局中國食品藥品檢定研究院招聘筆試歷年參考題庫真題考點解題思路附帶答案詳解
- 交通性腦積水的健康宣教
評論
0/150
提交評論