




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARMCortex-M3嵌入式控制技術(shù)
——基于STM32F103RCT6
STM32F103硬件系統(tǒng)與KEILMDK工程第七章
串口通信與聲碼器
TM32F103RCT6微控制器具有5個(gè)串口,其中USART1~3是帶有同步串行通信能力的同步異步串行口,而UART4~5是標(biāo)準(zhǔn)的異步串行通信口。本章將以STM32F103RCT6微控制器的USART2為例,介紹其片內(nèi)串口外設(shè)的工作原理,并借助實(shí)例詳細(xì)介紹串口通信的程序設(shè)計(jì)方法,包括串口發(fā)送數(shù)據(jù)和基于串口中斷服務(wù)函數(shù)接收數(shù)據(jù)的方法。1串口通信工作原理2STM32F103串口3
串口通信寄存器類型實(shí)例4串口通信庫函數(shù)類型實(shí)例5聲碼器7.1串口通信工作原理串口通信是指數(shù)據(jù)的各位按串行的方式沿一根總線進(jìn)行的通信方式,RS-232標(biāo)準(zhǔn)的UART串口通信是典型的異步雙工串行通信,通信方式如左圖所示。UART串口通信需要兩個(gè)引腳,即TXD和RXD,TXD為串口數(shù)據(jù)發(fā)送端,RXD為串口數(shù)據(jù)接收端。STM32F103微控制器的串口與計(jì)算機(jī)的串口按圖7-1的方式相連,串行數(shù)據(jù)傳輸沒有同步時(shí)鐘,需要雙方按相同的位傳輸速率異步傳輸,這個(gè)速率稱為波特率,常用的波特率有4800bps、9600bps和115200bps等。UART串口通信的數(shù)據(jù)包以幀為單位,常用的幀結(jié)構(gòu)為:1位起始位+8位數(shù)據(jù)位+1位奇偶校驗(yàn)位(可選)+1位停止位,如右圖所示。7.2STM32F103串口TM32F103RCT6微控制器共有5個(gè)串口,其中,USART1~3為帶同步串行通信功能的通用同步異步串行口,UART4~5為標(biāo)準(zhǔn)的異步串行通信口。這里以USART2工作在標(biāo)準(zhǔn)的異步串行通信方式下為例,介紹STM32F103RCT6微控制器的串口工作原理。7.2STM32F103串口串口USART2的基地址為0x40004400,其各個(gè)寄存器的情況如下所述。(1)串口數(shù)據(jù)寄存器USART_DR(偏移地址0x04)
32位的串口數(shù)據(jù)寄存器USART_DR只有第[8:0]位有效,用于發(fā)送串口數(shù)據(jù)時(shí)記為TDR,用于接收串口數(shù)據(jù)時(shí)記為RDR,TDR和RDR是映射到同一個(gè)地址的兩個(gè)物理寄存器,通過讀、寫指令來區(qū)分使用了哪個(gè)寄存器,即讀USART_DR時(shí)自動(dòng)識(shí)別為RDR,寫USART_DR時(shí)自動(dòng)識(shí)別為TDR。(2)波特率寄存器USART_BRR(偏移地址為0x08,復(fù)位值為0x0)
32位的波特率寄存器USART_BRR只有第[15:0]位域有效,其中,第[15:4]位域記為DIV_Mantissa[11:0],第[3:0]位域記為DIV_Fraction[3:0]。波特率的計(jì)算公式為:波特率=fck/(16×USART_DIV),而USART_DIV=DIV_Mantissa+DIV_Fraction/16,例如,對(duì)USART2而言,當(dāng)fck=PCLK1=32MHz時(shí),如果波特率設(shè)為9600bps,則可配置DIV_Mantissa=208,DIV_Fraction=5;如果波特率設(shè)為115200bps,則可配置DIV_Mantissa=17,DIV_Fraction=6,實(shí)際波特率為115108bps,誤差為0.08%(可接收范圍內(nèi))。
(3)串口狀態(tài)寄存器USART_SR(偏移地址為0x0,復(fù)位值為0xC0)
32位的串口狀態(tài)寄存器USART_SR只有第[9:0]位有效,如表所示。位號(hào)名稱屬性含義31:10
保留9CTS可讀/可寫CTS標(biāo)志位。當(dāng)nCTS線路輸入跳變時(shí),硬件置位,寫入0清零8LBD可讀/可寫LIN中止檢測(cè)標(biāo)志位。LIN中止發(fā)生后硬件置位,寫入0清零7TXE只讀發(fā)送數(shù)據(jù)寄存器空標(biāo)志位。TDR內(nèi)容傳給移位寄存器時(shí)硬件置1,寫DR寄存器清06TC可讀/可寫發(fā)送完成標(biāo)志位。發(fā)送完成硬件置1,寫入0清零(寫DR+讀SR也可清0)5RXNE可讀/可寫接收數(shù)據(jù)沒有就緒標(biāo)志位。接收數(shù)據(jù)準(zhǔn)備好時(shí)硬件置1,讀DR或?qū)?均可清零4IDLE只讀空閑線路檢測(cè)標(biāo)志位。空閑時(shí)自動(dòng)置1,讀DR+讀SR可清零3ORE只讀溢出錯(cuò)誤標(biāo)志位。接收溢出時(shí)硬件置1,讀DR+讀SR清零2NE只讀噪聲錯(cuò)誤標(biāo)志位。接收的位在采樣時(shí)出現(xiàn)噪聲時(shí)則硬件置1,讀DR+讀SR可清零1FE只讀幀錯(cuò)誤標(biāo)志位。幀錯(cuò)誤發(fā)生時(shí)硬件置1,讀DR+讀SR可清零該位0PE只讀校驗(yàn)位錯(cuò)誤標(biāo)志位。接收的數(shù)據(jù)校驗(yàn)錯(cuò)誤時(shí)硬件置1,讀DR+讀SR可清零該位(4)串口控制寄存器USART_CR1(偏移地址為0x0C,復(fù)位值為0x0)
32位的串口控制寄存器USART_CR1只有第[13:0]位有效,如表所示位號(hào)名稱屬性含義31:14
保留13UE可讀/可寫USART有效位。寫入1開啟USART,寫入0關(guān)閉12M可讀/可寫字長(zhǎng)位。為0表示8位數(shù)據(jù)位;為1表示9位數(shù)據(jù)位11WAKE可讀/可寫USART喚醒方式位。為0表示空閑位喚醒;為1表示最后有效數(shù)據(jù)位喚醒10PCE可讀/可寫校驗(yàn)控制位。為0表示無校驗(yàn);為1表示有校驗(yàn)9PS可讀/可寫校驗(yàn)選擇位。為0表示偶校驗(yàn);為1表示奇校驗(yàn)8PEIE可讀/可寫PE中斷有效位。為1表示校驗(yàn)位出錯(cuò)觸發(fā)中斷,為0表示不觸發(fā)7TXEIE可讀/可寫TXE中斷有效位。為1表示發(fā)送數(shù)據(jù)進(jìn)入移位寄存器后觸發(fā)中斷,為0表示不觸發(fā)6TCIE可讀/可寫發(fā)送完成中斷有效位。為1表示發(fā)送數(shù)據(jù)完成后觸發(fā)中斷,為0表示不觸發(fā)5RXNEIE可讀/可寫RXNE中斷有效位。為1表示接收數(shù)據(jù)就緒或溢出時(shí)觸發(fā)中斷,為0表示不觸發(fā)4IDLEIE可讀/可寫空閑中斷有效位。為1表示空閑將觸發(fā)中斷,為0表示不觸發(fā)3TE可讀/可寫發(fā)送有效位。為0表示關(guān)閉發(fā)送單元;為1表示開啟發(fā)送單元2RE可讀/可寫接收有效位。為0表示關(guān)閉接收單元;為1表示開啟接收單元1RWU可讀/可寫接收喚醒位。為0表示接收處于活躍模式下;為1表示處于靜默模式下0SBK可讀/可寫發(fā)送中止符位。為1表示中止符將被發(fā)送,為0表示不發(fā)送中止符綜上所述,可知串口的操作主要有如下3種:(1)串口初始化串口初始化包括3個(gè)主要的操作,即配置串口通信的波特率、設(shè)置串口數(shù)據(jù)幀的格式以及開啟串口接收中斷等。對(duì)于STM32F103RCT6,還應(yīng)通過寄存器USART_CR1打開接收單元和發(fā)送單元。(2)發(fā)送數(shù)據(jù)串口發(fā)送數(shù)據(jù)一般通過函數(shù)調(diào)用實(shí)現(xiàn),發(fā)送數(shù)據(jù)前應(yīng)先判斷前一個(gè)發(fā)送的數(shù)據(jù)是否發(fā)送完成,即判斷USART_SR寄存器的TC位是否為1,如果為1表示前一個(gè)數(shù)據(jù)發(fā)送完成,則可以啟動(dòng)本次數(shù)據(jù)發(fā)送。發(fā)送數(shù)據(jù)只需要將待發(fā)送的數(shù)據(jù)寫入串口數(shù)據(jù)寄存器USART_DR中,發(fā)送單元會(huì)按擬定的波特率將數(shù)據(jù)串行發(fā)送出去。(3)接收數(shù)據(jù)串口接收數(shù)據(jù)一般通過串口接收中斷實(shí)現(xiàn),需要開啟串口接收中斷,當(dāng)接收到新的數(shù)據(jù)就緒時(shí),在串口中斷服務(wù)函數(shù)中讀取串口接收到的數(shù)據(jù)。7.3串口通信寄存器類型實(shí)例在STM32F103RCT6學(xué)習(xí)板上,PA2和PA3口通過網(wǎng)標(biāo)TXD232和RXD232與串口電平芯片ST3232的T2IN和R2OUT管腳相連,參考第2章圖3-2和圖3-6。本節(jié)將討論寄存器類型的串口USART2通信實(shí)例。具體實(shí)現(xiàn)步驟如下所示:(1)在工程PRJ13的基礎(chǔ)上,新建工程“PRJ15”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ15”下。此時(shí)的工程PRJ15與PRJ13完全相同。(2)新建文件uart2.c和uart2.h,保存在目錄“D:\STM32F103RCT6PRJ\PRJ15\BSP”下。代碼:代碼:代碼:代碼:添加文件uart2.c到工程管理器的“BSP”分組下編譯鏈接和運(yùn)行工程PRJ15,同時(shí)在計(jì)算機(jī)端打開串口調(diào)試助手,其顯示結(jié)果如圖所示。在圖中,點(diǎn)擊“手動(dòng)發(fā)送”,即將“DEF”三個(gè)字符由計(jì)算機(jī)發(fā)送給STM32F103RCT6開發(fā)板,然后,開發(fā)板的STM32F103RCT6微控制器將這三個(gè)字符再回送給上位機(jī)(這里表示計(jì)算機(jī))。工程PRJ15的運(yùn)行流程7.4串口通信庫函數(shù)類型實(shí)例本節(jié)介紹庫函數(shù)類型的串口通信工程實(shí)例,與寄存器類型工程PRJ15實(shí)現(xiàn)相同的功能,具體建設(shè)步驟如下:(1)在工程PRJ14的基礎(chǔ)上,新建工程“PRJ16”,保存在目錄“D:\STM32F103RCT6PRJ\PRJ16”下。此時(shí)的工程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是一種中文語音合成芯片,通過硬件的形式實(shí)現(xiàn)了將中文文本轉(zhuǎn)化為語音(TTS)。一般地,上位機(jī)(這里指ARM微控制器)通過串口將文本數(shù)據(jù)發(fā)送到SYN6288,然后,SYN6288通過文本(包括漢字、數(shù)字和字母等)的編碼值,在語音庫中查找其數(shù)字形式存儲(chǔ)的發(fā)音,再通過片內(nèi)的數(shù)模轉(zhuǎn)換器(還集成了數(shù)字濾波器等)將數(shù)字形式的語音轉(zhuǎn)換為模擬語音信號(hào),并送出模擬語音信號(hào)。SYN6288可以直接驅(qū)動(dòng)8歐姆0.5W的揚(yáng)聲器。7.4.1聲碼器工作原理借助于網(wǎng)標(biāo)TXD_AUDIO和RXD_AUDIO,STM32F103RCT6微控制器的PA9和PA10管腳與SYN6288的RXD和TXD相連接。由于SYN6288的輸入端RXD為與標(biāo)準(zhǔn)的串口信號(hào)反向,所以,需要借助于一個(gè)反相器(這里使用了三極管S8050)連接TXD_AUDIO和RXD。在STM32F103RCT6微控制器中,PA9和PA10復(fù)用了USART1_TX和USART1_RX功能,即PA9和PA10可作為串口USART1的TXD和RXD端口。聲碼器SYN6288只能工作在波特率為9600bps、19200bps和38400bps下,并且要求串口數(shù)據(jù)格式為“1位起始位、8位數(shù)據(jù)位、無校驗(yàn)位、1位停止位”。因此,可配置STM32F103RCT6微控制器串口USART1工作在9600bps波特率下,然后,借助于串口USART1按照SYN6288規(guī)定的數(shù)據(jù)包協(xié)議向其發(fā)送文本數(shù)據(jù),實(shí)現(xiàn)文本數(shù)據(jù)的語音轉(zhuǎn)換與輸出。SYN6288的數(shù)據(jù)包格式包結(jié)構(gòu)包頭(1字節(jié))數(shù)據(jù)區(qū)長(zhǎng)度數(shù)據(jù)區(qū)命令字(1字節(jié))命令參數(shù)(1字節(jié))文本數(shù)據(jù)異或校驗(yàn)碼(1字節(jié))數(shù)據(jù)0xFD0x000x??0x??0x??0x??0x??...0x??0x??說明固定為0xFD0x??為數(shù)據(jù)區(qū)的字節(jié)數(shù)見下表長(zhǎng)度必須小于等于200字節(jié)全部數(shù)據(jù)(不含校驗(yàn)碼)的異或值包結(jié)構(gòu)包頭(1字節(jié))數(shù)據(jù)區(qū)長(zhǎng)度數(shù)據(jù)區(qū)包結(jié)構(gòu)包頭(1字節(jié))數(shù)據(jù)區(qū)長(zhǎng)度數(shù)據(jù)區(qū)命令字(1字節(jié))命令參數(shù)(1字節(jié))文本數(shù)據(jù)異或校驗(yàn)碼(1字節(jié))數(shù)據(jù)0xFD0x000x020x21無無0xDE查詢SYN6288的工作狀態(tài)“數(shù)據(jù)區(qū)”的控制命令格式數(shù)據(jù)區(qū)(長(zhǎng)度小于等于203個(gè)字節(jié))命令字(1字節(jié))命令參數(shù)(1字節(jié))文本(最多200字節(jié))異或校驗(yàn)碼(1字節(jié))取值含義高5位含義低3位含義0x01播放文本可取值0,1,2,...,15中的任一值當(dāng)取值為0時(shí),無背景音樂;當(dāng)取值為1至15中的某一數(shù)k時(shí),播放編號(hào)為k的背景音樂0文本采用GB2312編碼要轉(zhuǎn)化為語音的文本全部數(shù)據(jù)(含包頭、表示數(shù)據(jù)區(qū)長(zhǎng)度的2個(gè)字節(jié)、命令字、命令參數(shù)和文本,不含異或校驗(yàn)碼)的異或值1文本采用GBK編碼2文本采用BIG5編碼3文本采用UNICODE碼0x31設(shè)置波特率00000b0設(shè)置波特率為9600bps無文本1設(shè)置波特率為19200bps2設(shè)置波特率為38400bps0x02停止播放無參數(shù)0x03暫停播放0x04繼續(xù)播放SYN6288配置波特率數(shù)據(jù)包SYN6288播放控制的數(shù)據(jù)包波特率(bps)數(shù)據(jù)包96000xFD0x000x030x310x000xCF192000xFD0x000x030x310x010xCE384000xFD0x000x030x310x020xCD播放控制數(shù)據(jù)包停止播放0xFD0x000x020x20xFD暫停播放0xFD0x000x020x030xFC繼續(xù)播放0xFD0x000x020x040xFB轉(zhuǎn)義文本表序號(hào)轉(zhuǎn)義文本含義1[v?]這里的“?”可取值為0至16,表示播放文本的音量大小,0為靜音,16為最大音量,默認(rèn)為“[v10]”2[m?]這里的“?”可取值為0至16,表示播放背景音樂的音量大小,0為靜音,16為最大音量,默認(rèn)為“[m4]”3[t?]這里的“?”可取值為0至5,表示語速,0為最慢,5為最快,默認(rèn)為“[t4]”4[n?]數(shù)字的發(fā)音方式,這里的“?”可取值為0至2,為1表示數(shù)字單個(gè)發(fā)音(例如“12”發(fā)音為“一二”,為2表示相鄰數(shù)字合成為數(shù)值發(fā)音(例如“12”發(fā)音為“十二”),為0表示自動(dòng)識(shí)別,默認(rèn)為“[n0]”5[y?]數(shù)字1的讀法,“?”只能取值0或1,為0時(shí),“1”讀“幺”;為1時(shí),“1”讀“一”,默認(rèn)為“[y0]”6[o?]文本朗讀方式,“?”只能取值0或1,為0時(shí),自然朗讀;為1時(shí),逐字發(fā)音,默認(rèn)為“[o0]”7[r][r]后面緊跟的漢字按姓氏發(fā)音,用于多音字的情況8[2][2]后緊跟的兩個(gè)漢字聯(lián)合成一個(gè)詞語發(fā)音,中間無停頓9[3][3]后緊跟的三個(gè)漢字聯(lián)合成一個(gè)詞語發(fā)音,中間無停頓聲碼器SYN6288支持4種文本編碼體系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025簽訂汽車銷售合同的注意事項(xiàng)詳解
- 2025年華國內(nèi)企業(yè)勞動(dòng)合同樣本
- 2025標(biāo)準(zhǔn)版小產(chǎn)權(quán)房買賣合同
- 2025唐人街項(xiàng)目A、B棟主體工程施工合同(執(zhí)行)
- 《高中課程改革探索》課件
- 《光電子技術(shù)基礎(chǔ)》課件分享
- 6-何時(shí)獲得最大利潤(rùn)
- 2025年山南貨運(yùn)從業(yè)資格證考試題及答案
- 文山學(xué)院《婦產(chǎn)科學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧石化職業(yè)技術(shù)學(xué)院《油藏?cái)?shù)值模擬》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年第六屆美麗中國全國國家版圖知識(shí)競(jìng)賽題(附答案)
- 五星級(jí)酒店餐飲部管理制度大全
- 2025年紫金財(cái)產(chǎn)保險(xiǎn)股份有限公司招聘筆試參考題庫含答案解析
- 2025年高中作文素材積累:15個(gè)“小眾又萬能”的人物素材
- 2025年春新人教版語文一年級(jí)下冊(cè)教學(xué)課件 11 浪花
- 水利工程信息化項(xiàng)目劃分表示例、單元工程質(zhì)量標(biāo)準(zhǔn)、驗(yàn)收應(yīng)提供的資料目錄
- 2025年安徽省水利水電勘測(cè)設(shè)計(jì)研究總院股份有限公司招聘筆試參考題庫附帶答案詳解
- 2025年行政執(zhí)法人員執(zhí)法資格考試必考題庫及答案(共232題)
- DB31∕T 360-2020 住宅物業(yè)管理服務(wù)規(guī)范
- 2024-2030年中國街舞培訓(xùn)行業(yè)發(fā)展趨勢(shì)及競(jìng)爭(zhēng)格局分析報(bào)告
- 2024年度中國鮮食玉米行業(yè)發(fā)展前景分析簡(jiǎn)報(bào)
評(píng)論
0/150
提交評(píng)論