在通指配备模仿训练器件研制中,经常会遇到需求模仿完成语音通话功用的状况。惯例的解决方案是在核算机上经过高档言语编程完成对声响的收集和播映,并经过局域网进行传输。考虑到语音通讯的模块化和可控性,文中以STM32F107VCT6作为中心处理器,选用VS1003B作为语音收集和播映器件,经过CAN总线完成语音和信令传输,规划完成了一种低成本、高质量的语音通讯办法。
1 VS1003B解码芯片介绍
VS1003B是由芬兰VLSI公司出品的一款单芯片的MP3/WMA/MIDI音频解码和ADPCM编码芯片,其内部电路如图1所示。由图可见,VS1003B包含一个高性能、具有自主产权的低功耗DSP处理器内核VSDSP,作业数据存储器为用户使用供给5 kB的指令RAM和0.5 kB的数据RAM,串行的操控和数据接口,4个惯例用处的I/O口,一个UART,一个高品质可变采样率的ADC和立体声DAC,还有一个耳机放大器和地线缓冲器。
VS1003B经过一个串行输入总线来接纳输入的比特流,它能够作为一个体系的从机。输入的比特流被解码,然后经过一个数字音量操控器抵达一个18位过采样多位ε-△DAC。解码进程经过一个串行操控总线来操控完成。除了根本的解码,在用户RAM中它还能够做其他特别使用,例如DSP音效处理。
2 规划原理
以半双工语音通讯为例,其作业原理如图2所示。当一方需求说话时,会按下PTT键,该信号被STM32微处理器检测到后,一方面向对方发送“PTT已按下”的音讯,另一方面操控已方VS1003B进入录音形式,VS1003B将收集到的音频数据编码后缓存给STM32,再经过CAN总线发送到对方。对方在收到“PTT已按下”音讯后,会操控己方VS1003B敞开语音播映形式,将对方传来的音频数据传输给VS1003B进行解码,并根据需求调理音量,供耳机播映。
VS1003B电路原理图如图3所示。J1为麦克风输入插座,用于衔接麦克风。J2为外部声响输入插座,衔接音源。J3为耳机输出插座,衔接耳机,因为内部具有耳机驱动器,VS1003B输出信号不需经过任何功放电路,然后简化了硬件电路。VS1003B各部分的供电电压不同,IOVDD(I/O电压)为3.3 V,CVDD(数字电路电压)为2.5 V,AVDD(模仿电路电压)为2.8 V。最大的采样率XTAL1/256,决议了能以正确的速度播映的音频采样率。例如,假如要播映48 kHz采样率的音频,XTAL1至少为12.288 MHz才干取得正确的播映速度。
关于STM32微处理器来说,一共需求7个IO口与VS1003B衔接。SO(串行输出)、SI(串行输入)与SCLK(串行总线时钟)别离接STM32的PB14、PB15和PB13,即接到STM32的SPI2上,VS1003B经过SPI接口输出IMA ADPCM编码的音频数据。其他的四根线中,DREQ(数据恳求)衔接到PC3,XCS(指令片选)衔接到PC10,XDCS(数据片选)衔接到PC11,XRESET(复位)衔接到STM32的14管脚(NRST),当STM32复位时,VS1003B一起复位。操作时,只有当DREQ为高(准备好)时才干读写VS1003B。
3 VS1003B程序规划
3.1 初始化VS1003B
在规划中,STM32F103VET6经过SPI总线对VS1003B进行操控,也便是经过VS1003B的串行数据接口SDI和串行操控接口SCI完成STM32F107 VCT6与VS1003B的通讯。VS1003B初始化流程如图4所示。其间,DREQ为高时可判别为硬件复位或软件复位完毕。
3.2 语音信号的收集
语音信号的收集便是把模仿的语音信号转化为可操控的数字信号。在这一处理进程中,主要是对模仿音频信号进行采样、量化和编码。
现在常见的音频信号的频率规模大致如下:电话为200Hz~3.4 kHz,调幅播送为50 Hz~7 kHz,调频播送为20Hz~15 kHz,高保真音频信号为20 Hz~20 kHz。因而音频取样频率一般定在8~48 kHz规模内。
量化是使用预先规定的有限个电平来标明每一模仿采样值的进程。量化的精度与其用来标明采样值的二进制位数有关,例如4位可标明24=16个量化等级,8位可标明28=256个量化等级。明显地,位数越多,量化值越挨近采样值,其精度也就越高,但相应的所需的存储量也越大(见表1)。
鉴于STM32F107VCT6主频最高为72 MHz,在确保声响质量的前提下,应尽量削减数据量,因而本文对声响的采样频率为8 kHz,量化精度为8 bit,此刻数据码率为64 kbit/s。
语音紧缩编码需求在坚持可懂度、音质、约束码率及下降编码进程的核算价值这几个方面进行折衷。VS1003B供给了IMA ADPCM编码,这是由互动多媒体协会(IMA)拟定的规范,归于波形编码的一种,选用麦克风和线入两种输入办法,可支撑的音频文件格局包含MP3、MP3+V、WMA、WAV、MIDI和SP-MIDI。IMA ADPCM适用于8~44.1 kHz采样频率,而且能在CPU占用率低和内存空间需求少的条件下确保较好的音质,在Windows和MAC操作体系中有广泛的使用。IMA ADPCM录音形式需求在SCI_MODE中对SM_RESET和SM_ADPCM进行置位来发动。在发动ADPCM录音前,有必要别离向SCI_AICTRL0和SCI_A%&&&&&%TRL1写入时钟切割值(据此可得到采样率)和增益值。录音流程如图5所示。记载的语音数据以512字节为单位进行存储,并由STM32处理器经过CAN总线向对方转发。
3.3 CAN通讯
CAN总线作为一种总线式串行通讯网络,与一般的通讯总线比较,具有杰出的牢靠性、实时性和灵活性等特色。考虑到模仿训练器件对语音传输间隔的要求不高,且STM32自带bxCAN,即根本扩展CAN,它支撑CAN协议2.0A和2.0B,支撑报文发送的优先级要求,支撑时刻触发通讯,间隔40 m内波特率可达1Mbit/s。因而,规划上选用CAN总线来完成语音数据传输,由STM32F107VCT6内嵌的2路CAN操控器与外围器件SN65HVD230 (也标识为VP230)收发器组成2路CAN收发电路,其间一路CAN组成信令网,完成操控信令的传输;另一路CAN组成语音网,将ADPCM紧缩编码后的数据,由STM32处理为CAN报文格局,发送到总线上,并对CAN过滤器进行设置,使之仅在收到给自己的报文时引起中止。
3.4 语音信号的播映
播映前将对方传来的语音数据存放到STM32的缓冲区,缓冲区的巨细设置为512字节,一般一次读一个扇区,然后将数据发往VS1003B。因为VS1003B有32字节的数据缓冲区,一次能够发32个字节的数据,然后检测DREQ,当DREQ为高时送下一个32字节的数据,直到发完停止。 DREQ为高标明VS1003B能够承受新的数据,假如不考虑DREQ而直接接连的给VS1003B发音频数据,将会呈现声响时断时续的状况。语音播映流程如图6所示,考虑到实践语音通讯时,本地PTT键抬起时,对方会无法听到语音,因而流程图中选用判别对方PTT键的状况来处理是否播映。
4 完毕语
本文对根据STM32微处理器和VS1003B音频解码芯片的语音通讯功用的完成进行了研讨,要点介绍了VS1003B的原理以及在语音通讯使用中的硬件电路规划和软件程序规划。经测验,该办法可较好地满意语音通讯要求,作业安稳牢靠,并在多个模仿训练器件研制项目中得到使用,具有必定的参阅价值。
- STM32单片机中文官网
- STM32单片机官方开发工具
- STM32单片机参阅规划