本项目介绍如何利用STM32微控制器和VS1003音频解码芯片,通过串口2的DMA功能实现高效的数据传输,以完成实时录音功能。
这是一个使用STM32F103驱动VS1003B芯片的范例程序,上位机采用C#编写,并且所有代码都是开源的。这套方案中包含一个PL2302 USB转串口模块以及用于写ADPCM文件头的软件,因此是一套完整的录音解决方案。
该系统所使用的硬件包括:
1. STM32F103RCT6 ARM芯片开发板
2. PL2303 USB转TTL模块
3. VS1003B解码模块(带咪头)
接线方式如下:
STM32连接电脑USB:
- TX--PA3
- RX--PA2
STM32连接VS1003B:
- PA5--SCLK
- PA6--MISO
- PA7--MOSI (这三个引脚用于SPI数据读取)
- PC6--DREQ
- PC7--XCS
- PC8--XDCS
- PC9--XRST (这四个引脚用来控制VS1003的IO口)
当单片机上电后,串口1会输出数字32895,表明VS1003B芯片工作正常。此时耳机中可以听到一声正弦波测试音,表示开发板状态良好。
接下来,串口2将发送一段持续时间为10秒的录音数据。在WindowsFormsApp1程序(C#编写)中设置波特率为921600来接收这些数据,并保存为xxx.spx文件;然后使用ConsoleApp1生成对应的xxx.wav格式音频文件。
这套方案经过实际测试,已确认能够正常工作。