




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业设计(论文)-帽盖压铸模具设计
- Salfredin-C1-生命科学试剂-MCE
- 2-3-Dinor-fluprostenol-生命科学试剂-MCE
- 《蜘蛛开店》课件 部编版语文二年级下册
- 2025年互联网广告精准投放算法效果评估与优化实践总结报告
- 厨师长菜品差评情绪管理
- 大暑新媒体运营报告
- IT业绩年度报告
- 汉语句子题目及答案
- 保洁主管考试题库及答案
- 2024北京朝阳区六年级毕业考英语试题及答案
- 关爱眼健康远离近视眼科普呵护眼睛让视界更精彩课件
- 【课件】跨学科实践:探索厨房中的物态变化问题(教学课件)初中物理人教版(2024)八年级上册
- PHPstorm激活码2025年5月13日亲测有效
- 区块链与供应链管理的完美结合实现高效项目融资
- 胆石症中西医结合诊疗专家共识(2025年)解读课件
- 《桥梁下部结构》课件
- 环水保考试试题及答案
- 成人机械通气患者俯卧位护理课件
- 四川省内江市市中区2025年小数毕业模拟试卷(含答案)
- 管理学原理第十章控制
评论
0/150
提交评论