stm32基于pwm语音播报设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式设计论文
…基于PWM的语音0~9数字播报班级: 1221201
专业:测控技术与仪器
姓名:朱宇杰
学号: 201220120118
指导老师:钟老师
东华理工大学
利用PWM进行数字语音的播报设计
摘要随着嵌入式领域的拓展,目前许多微控制器芯片一般都不具备数据一模拟的双向通道,但几乎都集成有PWM产生模块。

本文利用stm32单片机的PWM模块,还原存储在存储器中的声音采样数据,在几乎不增加成本的情况下,实现嵌入式应用中的扩展语音功能。

关键词stm32 PWM 语音低通滤波
STM32的PWM精讲
通过对TIM1定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为17.57KHz。

其中,通道1输出的占空比为50%,通道2输出的占空比为25%,通道3输出的占空比为12.5%。

各通道互补输出为反相输出。

TIM1定时器的通道1到4的输出分别对应PA.08、PA.09、PA.10和PA.11引脚,而通道1到3的互补输出分别对应PB.13、PB.14和PB.15引脚,中止输入引脚为PB.12。

将这些引脚分别接入示波器,在示波器上观查相应通道占空比的方波配置好各通道后, 编译运行工程;点击MDK 的Debug菜单,点击
Start/Stop Debug Session;通过示波器察看PA.08、PA.09、PA.10、PB.13、PB.14、PB.15的输出波形,其中PA.08和PB.13为第一通道和互补通道,PB.09和PB.14为第二通道和其互补通道,PB.10和PB.15为第三通道和其互补通道;第一通道显示占空比为50%,第二通道占空比为25%,第三通道占空比为12.5%。

STM32处理器概述
STM32F103xx增强型系列产品中内置了多达3个同步的标准定时器。

每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。

它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。

在调试模式下,计数器可以被冻结。

任一个标准定时器都能用于产生PWM输出。

每个定时器都有独立的DMA请求机制。

PWM概述
PWM是Pulse Width Modulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。

它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于PWM技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。

PWM是一种对模拟信号电平进行数字编码的方法。

通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。

电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。

通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。

只要带宽足够,任何模拟值都可以使用PWM进行编码。

多数负载(无论是电感性负载还是电容性负载)需要的调制频率高10Hz,通常调制频率为1kHz到200kHz之间。

占空比是接通时间与周期之比;调制频率为周期的倒数。

目前,运动控制系统或电动机控制系统中实现PWM的方法主要有传统的数字电路方式、专用的PWM集成电路、单片机实现方
式和可编程逻辑器件实现方式。

用传统的数字电路实现PWM,电路设计较复杂,体积大,抗干扰能力差,系统的控制周期较长。

专用的PWM集成电路或带有PWM的单片机价格较高。

对于单片机中无PWM输出功能的情况,实现PWM将消耗大量的时间,大大降低了CPU的效率,而且得到的PWM信号精度不太高
数字播报设计思路
如安全报警应用中,系统通常已经包含了一块微控制器(用来处理人机交互以及系统的控制等),当发出警报时,可以是“B B”或“当当”的蜂鸣声;当然,更好的做法是发出清晰的语音。

用PWM产生声音的基本原理,是使用存储在Flash中的音频采样数据或通过某种算法产生的声音数据,来控制PWM每个波形的占空比;接下来通过一低通滤波器滤波,就可将声音从P WM的脉冲波里分离出来,驱动扬声器发出声音。

1 从WAV文件中提取声音采样数据
一般来说,可以从WAV文件中提取声音数据,标准的WA V格式的声音文件含有声音的采样数据和文件头。

文件头描述了后面声音数据的一些信息,如通道数、采样频率、采样位数以及数据的长度等。

我们先对0~9这几个数字进行发音,通过器件进行采集,转化为WAV格式。

通道数,是指声音的采样路数,如单声道、立体声等。

采样频率,是指每秒钟对声音的采样次数,采样频率越高,还原出
来的声音越接近原始声音,如表l所列。

要精确还原出某种频率的波形,其最小采样率应为该波形的2倍。

采样位数,指的是每次采样的采样精度。

采样位数越高,还原出来的声音的量化噪声越小,波形也越接近原波形。

WAV
文件的文件头定义:
提取声音数据时,请注意采样频率、采样位数、存储容量与存储时间的关系,如表2所列。

通常,11.025 kHz的采样频率和8位的采样位数可获得清晰的语音以及较好的音乐声,并且占有较少的存储空间。

通过了解和分析WAV文件的格式,可以将文件中的声音采样数据读取出来,并转换为C语言格式的数组结构,以便和其他程序一并编译和下载到芯片中去。

例如:
2 产生PWM波形
要还原声音,最低要求是HCSl2系列微控制器具备一个PWM 模块,芯片选择的另一个细节是要有足够的Flash存储容量,来存储声音的采样数据。

MC9S12DP256具有一个16位的PWM模
块.可产生16位解析精度的PWM波形,这意味着nr以使用1 6位的采样数据来产生PWM。

MC9S12DP256还具备256 KB的Flash,能够存储23 78 s八位11.025 kHz的采样数据。

产生PWM波形的步骤:①设置定时器.产生定时中断:如采样率为ll.025 kHz.则设置定时器的定时中断频率为11.025 kHz。

②初始化PWM模块,产生11.025kHz的PWM波形。

③等待定时器中断,在中断处理程序中取采样数据,并设置PWM占空比寄存器,判断声音是否播放完成。

若完成,则关定时器巾断,并停止PWM输出。

3 低通滤波
PWM输出后须通过低通滤波器滤波,才能还原成人耳能识别的声音。

低通滤波器的类型和参数取决于声音的采样频率和价格预算。

最简单的要数RC滤波器。

这种滤波器的优点是仪需要两个元件,另一种是有源滤波器,滤波效果好,但相对复杂。

滤波器截止频率的选择,对于音频输出是非常重要的,推荐设置在采样频率的一半。

若要获得更佳的滤波器截止频率,就要进一步对采样数据进行分析,找出最大具有有效声音数据的频
率。

当然,在一般应用中并没有要求这么严格,甚至在某些场合
中,即使用参数不非常明确的元件也能获得很好的声音输出,这时RC滤波器将是最好的选择。

推荐使用图1所示的滤波器,其截止频率为5.5 kHz(11.0 25 kHz/2)。

这个设计中,使用了2个运算放大器,足够驱动一小型扬声器。

图2也给出一种简单直接的接法:仅使用一22μF的电容用于低通滤波,驱动一5 kHz、8Ω的小扬声器。

结语
利用stm32微控制器的PWM功能可为单片机的应用增加语音功能。

对声音采样数据的存储方式是用直接的、原始的采样数据。

在具体的实际应用中,为存储更长时间的声音数据,还可对声音数据进行压缩。

相关文档
最新文档