首页 AVR和数据闪存的数字录音机

AVR和数据闪存的数字录音机

举报
开通vip

AVR和数据闪存的数字录音机AVR和数据闪存的数字录音机 AVR335:使用AVR和数据闪存的数字录音机 特性 ?数字式语音录音机 ?8位语音记录 ?8KHz采样频率 ?声音频率可至4000Hz ?最大录音时间4 1/4分钟 ?非常小的电路板尺寸 ?少于700字节的代码 前言 此篇应用笔记描述了如何使用任意带有A/D转换器的AVR单片机、AT45DB161B串行存储器及很少的外围元件来实现录制、存储和回放语音。 本应用指南详细的展示了应用A/D转换器录音、串行外设接口—SPI—访问外部DataFlash存储器和脉冲宽度...

AVR和数据闪存的数字录音机
AVR和数据闪存的数字录音机 AVR335:使用AVR和数据闪存的数字录音机 特性 ?数字式语音录音机 ?8位语音记录 ?8KHz采样频率 ?声音频率可至4000Hz ?最大录音时间4 1/4分钟 ?非常小的电路板尺寸 ?少于700字节的代码 前言 此篇应用笔记描述了如何使用任意带有A/D转换器的AVR单片机、AT45DB161B串行存储器及很少的外围元件来实现录制、存储和回放语音。 本应用指南详细的展示了应用A/D转换器录音、串行外设接口—SPI—访问外部DataFlash存储器和脉冲宽度调制—PWM—进行回放的方法。典型的需要一个或更多的这些模块的应用如温度记录器、电话应答机或者数字录音机。 AT45DB161B DataFlash是一个仅需要2.7伏的串行接口闪速存储器。它的16Mbit的存储空间按每页528字节4096页有序排列。除了它的主存储器之外,DataFalsh还包含两个大小为528字节的静态随机存储器缓冲区。缓冲区允许几乎连续的数据流写入DataFlash。 AT45DB161B使用一个SPI串行接口顺序地存取数据。这个接口便于硬件布局,提高系统的可靠性,尽量减少开关噪声,并降低封装尺寸和有效引脚数。典型的应用是图像存储,数据存储和数字化语音存储。DataFlash运转时的SPI时钟频率高达20MHz,典型的有效工作电流4mA。它是由单一的电源电压供电(从2.7V到3.6V)读写操作。 它的串行接口兼容连续的外围接口——SPI——模式0到模式3,因此,它可以容易的链接到AVR微控制器。 在本篇应用指南中AVR AT90S853单片机用于应用麦克风进行模拟采样并且将之转变成数字值。其内置的SPI控制数据的传输和DataFlash。AVR的PWM特征用于回放。编码非常小(<550字节),因此适合较小的AVR设备。 操作原理 在模拟语音信号存储进DataFlash之前先转换成数字信号。转换经过几个阶段完成。 图1 模拟信号举例 首先,通过周期采样(图2 )将模拟信号(图1 )转化为离散的时间信号。其间的时间间隔的两个样本被称为“采样周期”和互惠的“采样频率”。 根据采样定理,采样频率至少是最高信号频率的两倍。否则,频域的连续周期信号将导致频谱重叠,既是所谓的“频谱混叠” 。这种混叠信号不能单独恢复其样本。 一段语音信号中包含的主要信息在下3000Hz以下。因此,低通滤波器可用于限制信号。 一个理想的截止频率为3000Hz的低通滤波器的采样频率必须是6000Hz。根据不同的过滤器,过滤器斜坡或多或少倾斜。特别是对一个一阶滤波器,如限流滤波器在此应用,有必要选择一个更高阶的采样频率。上限由A/D转换器的特性而定。 确定代 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 了模拟采样频率的数字值称为“量化” 。模拟信号的量化是通过分配模拟值为最接近的“未定义的”数字值(图3 ) 。一些数字值被称为“分辨率” , 并始终是有限的,例如这个例子中的256个8位数字信号或10个。因此,量化的模拟信号总是导致丢失信息。这种“量化误差”是和数字信号的分辨率成反比例的。它也和 “动态范围”信号成反比例,在最低值和最高值范围间( 例子中3—8之间) 。AT90S8535单片机的A / D转换器可以通过设置AGND和AREF的最低和最高值来调整信号的动态范围。 另一方面,在此之后麦克风放大器可以调整以覆盖模数转换 器的动态范围。 这两种方法减少量化误差。此外,后一种方法通常会提高了信号的信噪比—SNC—因此应当首选。 图4显示的数字值代表了模拟信号。这些值是通过模数转换器转换的结果。 在这种应用中,信号不会超过一个最低和最高值。部分的信号低于最低值或高于最大值。它们可以被取消,以便节省内存。 这是转换低速整个信号和丢弃的部分超过“最大值”的信号 (图5 ) 。 图2 时间离散信号 图3 量化信号 图4 数字信号 图5 渐降数字信号 此应用产生8位信号。这个信号可立即存储在DataFlash 中。 DataFlash并不需要在程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 前单独的去掉周期。在使用“内置擦除主存储器缓冲页面程序”或“通过缓冲主内存页面程序”的命令, DataFlash将在实际程序之前自动清除指定的页面内的存储器阵列编程。如果系统需要更快的编程吞吐量(大于200k bit/s) ,地区的主存储器阵列可预先删除,以降低整体的编程时间。一个非强制的“页面擦除”命令可提供清除单一页面的内存,同时可选的“中断擦除”命令允许一次删除8页的内存。当前擦去的部分主存储器阵列,在“没有内置擦除缓冲区主存储器页面编程”命令应当利用以实现更快的编程时间。 第一种方法是最有效的编码,因为没有额外的擦除周期必须执行。但是,这一应用指南使用块擦除来说明大部分的内存可以预先擦除如果需要的话。擦除整个的内存可能会花上几秒钟。 当记忆体已被删除,数据可以记录到的所有网页都填满了。 再写入DataFlash时 ,使用缓冲区1。当此缓冲区写满(528样本)第529转换工作时缓冲区写入主内存储器。数据会一直记录到“记录”按钮被放开或内存已满。如果整个内存填满了,在DataFlash被删除之前不能存储新的数据。如果内存只有部分填满, “记录”按钮按下第二次,新的数据会直接附加到现有的数据。 播放的声音始终是DataFlash起始状态。当所有记录的数据回放时或“重放”按钮被放开时才停止播放录音。 该DataFlash允许直接从主内存页面或复制页面到两个缓冲器中的一个并且阅读该缓冲区来读回数据。直接存储都的方法不适合两个地址的应用,一个用于网页一个用于字节的位置,并且一个长时间的初始化程序需要一个字节一个字节的转移给DataFlash。这就是8位PWM信号的510时钟周期需要超过一个PWM周期的时间。 因此,一个内存页被复制到一个缓冲区。当从此缓冲区读取数据时下一个内存页将复制到另一个缓冲区。当所有数据都被从第一缓冲区连续读到另一缓冲区,而第一个重新装入。从DataFlash缓冲区读数据是与PWM频率同步的。 图6 两个PWM循环周期 应用脉冲宽度调制( PWM )回放数字值 。在图6中 ,如样本信号所示的采样2和3信。一个PWM信号周期由一个计数器计数到最高值,可由解析图来描绘( 例中8处) ,并计数到零。当PWM值反相匹配数字信号值时输出开启而当它再一次降到这个值以下时关闭输出。因此,在例子中深色区域代表电源信号。图7所示的PWM输出信号既是示例信号。 PWM频率必须至少是信号频率的二倍。建议一个PWM频率至少高出4倍, 根据输出滤波器。 要想如此要么降低信号频率、提高系统时钟频率要么降低信号分辨率。 图7 过滤的PWM输出信号 在此应用中输出滤波器截止频率设定为4000Hz,这大概是四分之一的PWM频率( 15686Hz) 。 系统的时钟速度和PWM的分辨率决定了PWM频率。 带有8 MHz的系统时钟的频率为10位的PWM是3922Hz( 8MHz/ 2 • 210 = 3922MHz) ,9位分辨率的7843Hz,以及8位分辨率的15686Hz。 只有最后值高到足以充当4000Hz信号的载波频率。因此,原来的10位数字采样转换为8位。 输出过滤器平滑的输出信号,并且移除高频率PWM载波信号。由此产生的输出信号中的例子信号看起来有点像画在图8上 。除了量化误差(在这个例子中只有8数字值的量化误差)和遗失的放大率,信号看起来差不多像模拟输入信号(图1)。 图8 PWM输出信号 单片机和存储器电路 图9单片机和存储器电路图 用户可以通过三个按键来控制音响系统,所谓的“擦除” , “录音”和“回放” 。如果没有按下按钮,内部的上拉电阻通过PD0-PD2提供电压。推按钮将输入线连到GND 。 用一个LED作为系统状态指示。 该DataFlash通过SPI总线直接连接到AVR单片机上。如果ISP的特征能改编AVR的编码指令,片选线上的上拉电阻(/CS )防止DataFlash使能。如果ISP功能无法使用,这个电阻可以省略。 模拟电压, AVCC ,通过RC低通滤波器连接到VCC。参考电压设定为AVCC 。 晶体振荡器有两个22pf的去耦电容生成系统时钟。 麦克风和话筒电路 图10麦克风和话筒电路 麦克扩音器是一个简单的反相放大器。增益设定R1和R9 (增益=R1/R9 ) 。R4用于麦克电源和C1区块一些直流分量的放大器。 R2和R3的设置偏移。R5和C8组成一个简单的一阶低通滤波器。此外R5保护放大器如果输出短路 。 话筒电路由五部分组成,低通切比雪夫滤波器和一元增益放大器。 该过滤器是由两个错开的调节器组成,二阶切比雪夫滤波器( R6 ,R7, R8 , C2 , C7和R7, R10, R11,C9,C5)和逆一阶滤波器( R11,C4)。这三个滤波器的截止频率轻微的相互转换( “交错” ) 整个滤波电路的通频带限制波纹。总的截止频率设置为4000Hz,几乎是四分之一的PWM频率( 15686Hz) 。 一元增益放大器防止获得电路的输出反馈。把任何C3区域内的直流电组成部分连接到话筒上。 操作设置 程序启动时端口被安装。 有“设置”子程序完成。 SPI 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 定义了一个设备作为主要的和其他设备被连接起来作为这个主要设备的附属。在此应用中AVR单片机的功能作为一个主控制和DataFlash像一个附属。SS引脚可以作为输入/输出引脚就如AT90S8535在此应用中是个主控制一样。 AT90S8535的SPI被定义作为端口B 的替换函数(PB7到PB5)。 在这个应用中DataFlash的控制信号也在端口B处建立 (PB0到PB2和PB4)。 自由引脚(PB3)被用于控制LED的状态。 为主设定,信号序列时钟(SCK),主控输出/附从输入 (MOSI),片选(/CS),写保护 (/WP)和复位(RST)是输出,而主控输入/从属输出(MISO)和预备/忙(RDY/BSY)是输入。 LED的PB3端口通常被定义为一个输出数据定向寄存器为0Xbd. 当输出为高电平时端口B被定义状态并且内部上拉电阻输入状态。 AT90S8535的A/D转换器连接到端口A。 所以端口A高电平输入。 端口D对于按钮起输入和一个PWM信号的输出的作用。 这里在输出引脚PD4中应用定时器1的PWM函数。 最后,中断使能。 在这种使用二次中断(“A/D转换器”和“定时器1溢出” ),必要时可直接地用于使能和非使能的子程序中。 主循环 在这个主循环中,扫描三个电钮。 如果按下其中一个按键, LED 亮来表示系统繁忙并且调用子程序。子循环执行,直到放开按键,作为“擦除”和“回放”功能的软件去除。 在主循环中,LED关闭表示系统闲置。 图11 主循环 擦除 该DataFlash可以选择预删除。 图12 擦除 当调用“擦除”子程序时,建立一个标志来指示下一个录音周期的新数据被存 在DataFlash的最开始。 SPI要建立访问DataFlash 。不能应用中断。数据以便DataFlash的数据命令是最高有效位第一并且AT90S8535单片机是主控。 数据存储器既允许CS从高电平切换到低电平时SCK为低电平(SPI模式0)也可以CS从高电平切换到低电平时SCK为高电平(SPI模式3)。本应用中SPI被设置为模式3.为了达到可能的最高速度,选择了最低分频,如果使用8M晶体振荡器,SPI总线频率为2M。 执行块擦出操作时,拉低CS线,在传送命令0x50之后跟着是2个存储位(0),9位块地址,13个任意位。顺序是从高位到低位,每位之后,SPI寄存器都被检查,直到SPI产生传送完成中断。所有顺序写完之后,CS被拉高时,块擦除启动。空闲/忙引脚将被数据存储器拉低,直到块被擦除。之后下一块以同样方式被擦除,直到512个块全部擦除。被擦除的区域,读出的数据为0xff。 录音 录音子程序由A/D转换和一个等待“录音”键按下的空循环组成。本应用中使用了ADC0脚,这需要ADC复用选择寄存器(ADMUX)置为零。在ADC控制状态寄存器(ADCSR)中,设置32分频以使能ADC,设置单次转换模式,使能中断,清除中断标志。同时A/D转换器也立即启动。第一次转换时间比常规的长(832个时钟周期而不时448个)。这次转换之后,ADC产生中断,说明转换已经完成,转换结果可以从数据寄存器读出。 对来自麦克风的模拟信号以15,686Hz进行采样。这个频率与PWM输出相同。 为了达到15,686Hz的采样频率,每510个时钟周期进行一次采样(15,686HzX510=8MHz)。AD转换器每510个时钟周期以32分频的ADC时钟执行一次单次转换。一个单次转换需要14个ADC时钟。所以,一次转换结束要在14×32=448个时钟后。 转换结束之后,产生中断。然后中断程序在下一个新的A/D转换开始之前执行一个循环来补满缺少的510-448=62个时钟。 10位的转换结果是转换开始2个时钟之后A/D转换器输入引脚上的电压值。 从AGND到AREF被分成10位,本应用是0到5V。麦克风电路输出信号的电压范围时从2.3V到3.5V。所以10位转换结果被一个代表最低电压的值减。也就是代表2.3V的0x1D5。代表大于3.5V的电压值的数据通过去掉两个最高位移除。这些都在转换结果传递给“写存储器”子程序时自动执行,因为它的“flash_data”变量被定义为“char”(8位)。最后的8位数据在进入下一次A/D转换结束中断之前写入DataFlash。 图13.录音 写数据到DataFlash 图14.写数据到DataFlash 写数据到DataFlash是,先把数据写到一个缓冲器中,缓冲器满之后,再将其内容写到一页主存储器中。 在“写数据到Flash”子程序中,变量“j”标志缓冲器中字节号,变量“k”表示缓冲器将要写到的页的号码。如果新数据标志表明DataFlash是空的,则清零两个计数器。 如果存储器已经包含一些数据,变量指示下一个可用区域,确保新数据直接添加到存储器中。 为了保存通过两个函数调用的这些变量,它们被定义为静态变量。 写数据到缓冲器,拉低CS,命令0x84被装入DataFlash。在这之后是14位任意数据和10位缓冲器地址。之后8位数据写入。 顺序是从高位到低位,每位之后,SPI寄存器都被检查,直到SPI产生传送完成中断。所有顺序写完之后,CS被拉高。 如果缓冲器满而且还有剩余的页,缓冲器中的内容被复制到存储器的下一页中。如果存储器之前擦除过,数据可以不用先擦除直接写入。 如果存储器满了,程序将等待“录音键”释放。这时,录进的数据将全部丢失。 回放 在“回放”子程序中,DataFlash中的数据被读出并调整以15,686Hz的8位PWM输出。为了达到高速,数据并不是直接从主存储器中读出,而是交替的传送到两个缓冲器中的一个里面,之后从缓冲器中读出。16位定时/计数器1被用作PWM发生器并在OC1B输出。设置在定时/计数器控制寄存器A和B(TCCRA/TCCRB)定义。为了使PWM运行在可能的最高频率,PWM时钟分频器设置为1。 设置结束之后,把CS线拉低并且发送适当命令到DataFlash。当CS拉高时页到缓冲器传送被启动。当DataFlash将就绪/忙引脚拉高时缓冲器1中包含了有效的数据。之后下一页传送到缓冲器2被启动。两个缓冲器是独立的,在DataFlash仍然忙于从第2页复制数据到缓冲器2时,数据可以仍从缓冲器1中读出。 从缓冲器中读出一个字节需要向DataFlash中写入一个虚拟的数据。SPI主 机向从机执行写动作可以使它们的SPI数据寄存器内容-SPDR-被交换。在向DataFlash写入一个虚拟字节之后,AVR控制器的SPDR中包含了DataFlash输出的数据。 图15. 回放 PWM计数器值为“0”时,定时器1产生溢出中断。这个中断用于DataFlash输出数据与PWM频率同步。缓冲器的数据被移动到AVR控制器之后,将执行一个循环,直到定时器1产生溢出中断。之后数据被写到定时器/计数器1输出比较寄存器B(OCR1B)中,当PWM计数器达到最大值(8位PWM值是255)时,数据自动锁存到PWM输出。 缓冲器中最后一个数据被读出之后,缓冲器切换。 存储器内容全部播放完之后,禁用所有中断,并停止定时/计数器1. 图16.下页到下个缓冲器 图17.有效缓冲器输出到扬声器 STK200开发板的使用 应用笔记描述的内容可以在STK200开发板上进行测试和改进。这时需要注意一些问题。 芯片插座 应用中用到了A/D转换器,所以,微控制器放在标有“A/D部分”的插座上,麦克风放大器输出连在标有“模拟”的插针上。 跳线 根据“setup_all”子程序中的设置,只用了按键和LED。它们是端口B的0到2和4到7,端口D的4。 SPI电阻器 为了避免在板SPI编程和连接到端口B的期间互相干扰,在芯片插座和端口PB5到PB7之间加入了10K电阻。如果DataFlash打算连接到这些插针上,需要在板反面将电阻引脚焊接到一起。 使用在板SPI编程 芯片插座和端口B插针的电阻短接之后,连接器件时,会导致在下载和校验时产生一些问题。如果出现问题,可以在下载和校验时断开器件或者按照图9在PB4和电源之间加一个10K电阻。 修改和优化 麦克风输出信号会随着型号而改变。为了达到麦克风输出信号最接近AREF,麦克风放大器增益选择很重要。 数据几乎同从A/D中读出并写入DataFlash。这使压缩数据成为可能,并且这对长时间录音和有立体声要求时很有帮助。 本应用中使用了两种表示状态的方法。 一个是使用全局变量(也就是在“回放”子程序中使用的“wait”)。另一个时使用寄存器中一个没有被用到的位。在“擦除”子程序中,模拟比较器状态和控制寄存器中的ACIS1位被用来指示新数据需要存到下一个位置。只要在不使 用模拟比较器时,这样做对程序运行没有一点消极作用,反而节省了一个全局变量寄存器。 15,686Hz的采样频率(510个时钟周期)是由ADC中断和一个延时循环产生的。如果定时器没有做为其他用途,这可以用一个独立定时器(定时/计数器0或者定时/计数器2)替换。 参考文献 1.Proakis,j.g.andManolakis,D.G.(1992) Digital Signal Processing:Principles,Algorithms,and Applications Second Edition 2.Datasheets: Atmel AVR AT90S8535 Atmel AT45D161B DataFlash 使用资源 表1.外设使用 元件清单 表2.控制器和存储器电路 表3.麦克风和扬声器电路
本文档为【AVR和数据闪存的数字录音机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_650122
暂无简介~
格式:doc
大小:367KB
软件:Word
页数:0
分类:
上传时间:2018-03-19
浏览量:7