标题:基于瑞萨的简易声音采集系统
概述:
1 上位机由VC6 编写,通过串口向MCU 发送“开始”或者“停止”命令,并将接收到的采集数据显示
2 下位机根据接收到的命令进入 待机模式 或者 工作模式,在工作模式下,定时器触发AD采集信号,并将信号以一定的格式发送到上位机;在待机模式下,MCU进入低功耗的HALT模式,通过串口响应可以退出HALT模式。
主要技术:
上位机参考 Visual C++/Turbo C 串口通信编程实践,进行串口编程实践
并自定义了数据的传输格式,包括校验 保证传输的准确性
采用双缓冲绘图的方式 (CreateCompatibleBitmap, CreateCompatibleDC)放置绘图过程中出现闪烁现象
MCU 主要利用了 串口2 定时器 AIN3 通道的AD转换 5ms的定时器 以及低功耗
MCU 利用了状态机编程的思想 主要包括以下5个状态
0:(工作->待机) / 待机准备
1:待机
2:(待机->工作)/初始化
3:工作
4:工作中出错
并根据串口接收到的控制命令 确定进入何种状态
当收到上位机发来的 “开始” 命令时,进入状态2
当收到上位机发来的 “停止” 命令时,进入状态0
当上位机接收数据,发现校验错误时,发送“错误”命令,此时,MCU进入状态4
状态转换入下图所示
红线表示程序自动进行的状态转换
蓝色虚线表示收到串口命令后进行的状态装换
紫色为低功耗的HALT模式情况
HALT 模式下 由于没有关闭串口 所以可以通过串口唤醒CPU 并且不丢失上位机发来的命令数据
目前的通信格式中 传送2个字节的10位分辨率结果总共需要10个字节的数据包,
因此 设置5ms的采样间隔 波特率为38400 是满足要求的
声音放大硬件电路已经在之前的开发进程中进行了说明
测试视频已经上传
视频地址:http://union.bokecc.com/flash/player.swf?vid=5331C9EEDD0AF607&siteid=290666218ACBA694&playerid=EEA982EE6B20F4D1&playertype=1
总结:
通过参加这次的瑞萨开发活动,熟悉了瑞萨的开发环境,并接触了Applilet编程助手,同时完成了一个完整的包括上位机和下位机的简易数据采集系统,锻炼了自己系统设计的能力。今后,在数据通信上 可以考虑采用USB CAN 或者网络通信,在通信协议上 可以采用更加成熟的商业上现有的通信模式,如model bus等。在硬件设计上,对麦克风及放大电路还可以更能优化。同时,上位机根据采集到的音频信号还可以做进一步的分析。