一种基于SPI控制器播放音频的方法、设备及介质与流程
- 国知局
- 2024-07-31 19:46:23
本发明涉及音频播放,尤其涉及一种基于spi控制器播放音频的方法、设备及介质。
背景技术:
1、支付云音箱是集收款、播报、营销、服务于一体的智能终端,通过链接互联网实现支付信息播报,具备声音洪亮、待机时间长、播报更快、操作简单等特点,广泛应用于便利店、快餐店、超市、菜市场等场景。
2、音频播放是支付云音箱产品的重要功能,现有的技术主要有两种方式:一种使用内置或者外置的音频模块(ad转换器和da转换器)进行播放,使用ad转换器以一定的采样频率将连续的音频模拟信号采样并量化为离散的音频数字信号,然后播放的时候就是按原来的采样频率使用da转换器将音频数字信号转换为音频模拟信号并输出。该方案依赖音频模块实现,成本较高,且有些芯片本身不带da转换器;另外一种是使用pwm(脉冲宽度调制)信号来播放音频,该方案需要高频率与高优先级中断,cpu无法响应其他任务。
3、音频文件通常通过a/d转换将连续的电压信号通过脉冲编码调制pcm(pulse codemodulation)将连续的电压信号转换为pcm,需要进行采样和量化,主要指标有以下两点:
4、采样频率(sampling rate):单位时间内采集的样本数,即:采样周期的倒数,指两个采样之间的时间间隔。采样频率越高,声音质量越好,但同时占用的带宽越大。
5、采样位数:表示一个样本的二进制位数,即:每个采样点用多少比特表示。计算机中音频的量化深度一般为4、8、16、32位(bit)等。例如:采样位数为8bit时,每个采样点可以表示256个不同的采样值。采样位数的大小影响声音的质量,采样位数越多,量化后的波形越接近原始波形,声音的质量越高,而需要的存储空间也越多。
6、支付云音箱播放的音频文件通常采用16位pcm文件,采样频率16khz,位深度16位,单声道,原始数据,编码16位pcm。
7、播放音频就是按原来采样的速率再用dac输出对应的数据,使用pwm方式播放16khz采样频率、16位的pcm音频文件,需要开启一个16khz的定时器和80khz的pwm,以16khz的频率在定时器中断中改变pwm的占空比,从而改变输出的电压值,实现以16khz采样速率播出音频,该方案广泛在低成本产品使用,但其存在两个问题:
8、1、改变pwm占空比的时候,需要重启pwm时钟,先关闭pwm的时钟再打开,会导致切换占空比的时候,会有一个间隔延迟,可能是芯片问题,这会导致会听到明显噪声。
9、2、占用资源多,在播放音频的过程中需要以16khz的频率进入中断修改占空比,为了确保播放质量,中断优先级需设置较高,cpu无法处理其他任务。
技术实现思路
1、有鉴于此,本发明的目的在于提出一种基于spi控制器播放音频的方法。
2、为了实现上述的技术目的,本发明所采用的技术方案为:
3、本发明提供了一种基于spi控制器播放音频的方法,包括如下步骤:
4、步骤1、按设定的采样频率采样音频数据;
5、步骤2、将所述音频数据的格式转换为pcm格式的音频文件;
6、步骤3、将所述音频文件的数值转换成pwm数据;
7、步骤4、根据所述音频文件的采样频率配置spi控制器的传输速率;
8、步骤5、将所述pwm数据转换成spi数据;
9、步骤6、采用多个缓冲存储器编写对应的spi数据,并通过dma控制器将spi数据轮流发送给spi控制器;
10、步骤7、所述spi控制器按配置的传输速率将spi数据进行连续发送,实现音频文件的播放。
11、进一步的,所述步骤1具体为:通过模数转换器按设定的采样频率fs将连续的音频模拟信号采样并量化为离散的音频数字信号,所述音频数字信号是原始的音频数据;所述设定的采样频率fs采用16khz。
12、进一步的,所述步骤2具体包括:
13、步骤21、分析所述音频数据的格式;
14、步骤22、判断所述音频数据的格式是否为pcm格式,若是,则直接进入步骤3;否则,使用音频编码工具将非pcm格式的音频数据转换为pcm格式的音频文件;所述音频编码工具采用adoube auditon软件。
15、进一步的,所述步骤3具体包括:
16、步骤31、设置所述音频文件的位数,并根据所述音频文件的位数确定取值范围;
17、步骤32、根据所述取值范围确定spi控制器需要使用的字节个数,确保每个字节的每一位正好对应取值范围中的每一个数;
18、步骤33、根据音频文件的大小判断是否需要对音频文件进行压缩,若是,根据压缩比例将所述音频数字信号的数值转换为模拟pwm的占空比所对应的pwm数据;否则,直接将所述音频数字信号的数值作为pwm数据。
19、进一步的,所述步骤31具体为:
20、所述音频文件的位数选用16,则所述音频数字信号的数值用16位的二进制来表示,所述音频数字信号的数值对应的取值范围是0~65535,共有65536个取值,所述音频数字信号在幅度上也分为65536层;
21、所述步骤32具体为:
22、发送一个周期的pwm数据需要65536位,即所述spi控制器需要使用8192个字节,确保每个字节的每一位正好对应取值范围中的每一位;
23、所述步骤33具体为:
24、步骤331、将16位的所述音频文件压缩至9位,则9位对应的取值范围是0~511,发送一个周期的pwm数据需要512位,即64个字节;
25、步骤332、定义所述音频数字信号的数值为x,转换后的数值为y,则得到转换公式为:y=x×(512/65536)=x/128;
26、步骤333、将转换后的数值y作为pwm数据。
27、进一步的,所述步骤4具体为:
28、当所述音频文件的位数为16位且采样频率fs为16khz时,设置spi控制器的传输速率为24mhz。
29、进一步的,所述步骤5具体包括:
30、步骤51、所述pwm数据的一个周期为512位,所述spi控制器根据pwm数据确定每个字节中每一位应发的数值,每一位应发的数值为0或1;若所述pwm数据的具体值为m,0≤m≤512,则一个周期512位中的前m位的应发数值为1,后512-m位的应发数值为0;
31、步骤52、将一个周期512位中的每一位根据应发的数值分别进行置0或置1处理,得到512位的spi数据。
32、进一步的,所述步骤6具体包括:
33、步骤61、采用至少两个缓冲存储器,初始化两个缓冲存储器,每个缓冲存储器用于存储一个周期的spi数据;
34、步骤62、配置所述缓冲存储器的大小为188字节*20,确保所述缓冲存储器的编写速度大于dma控制器的发送速度;
35、步骤63、当第一个缓冲存储器编写完对应的spi数据后,通过dma控制器将spi数据发送给spi控制器;当所述dma控制器在发送第一个缓冲存储器内的spi数据时,对第二个缓冲存储器进行编写操作,当第二个缓冲存储器编写完对应的spi数据后,通过dma控制器将spi数据发送给spi控制器;当所述dma控制器在发送第二个缓冲存储器内的spi数据时,再次对第一个缓冲存储器进行编写操作,实现循环发送。
36、本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述的一种基于spi控制器播放音频的方法。
37、本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的一种基于spi控制器播放音频的方法。
38、采用上述的技术方案,本发明与现有技术相比,其具有的有益效果为:
39、1、与pwm实现音频播放方案一样,根据音频数据以16khz的频率改变占空比从而输出的电压。使用spi方式播放pcm格式的音频文件可以通过节省codec芯片大大降低产品的成本和功耗,并保证了音频播放的质量与速度,未降低产品品质,在支付云音响市场白热化竞争下,大幅提高产品的竞争力。该发明适用性强,可兼容市面绝大多数的mcu芯片平台。
40、spi是使用串行移位寄存器通过mosi信号线将字节一位一位地移出去传送给从机,每一位只能发0和1,要想使其发出pwm占空比信号就要控制其在单位时间内发出的0和1的个数,并且spi数据的发送速率要匹配上音频文件的采样频率;采用16位的音频文件时,发出一个pwm需要64字节,音频采样率16khz,16khz*64*8bit=8.192m,播放频率要是采样频率的两倍以上,故将spi控制器的传输速率设置为24mhz,同一个pwm数据循环发送三次,为了使spi控制器的传输速率更加贴近音频播放速率,同一个pwm数据第一次发送完整的64kb,第二和第三次发送数组的前62个即62byte,该方式最为贴近实际播放速率。
41、2、为了在播放音频文件时可以释放部分cpu资源,使用dma控制器,dma控制器发送数据时无须cpu干预,节省cpu资源进行其他操作。设置两个缓冲存储器,所述缓冲存储器的大小为188字节*20,确保所述缓冲存储器的编写速度大于dma控制器的发送速度。当dma控制器在发送第一个缓冲存储器时,可以对第二个缓冲存储器进行写操作,发送第二个缓冲存储器时对第一个缓冲存储器进行写操作,实现循环发送。
本文地址:https://www.jishuxx.com/zhuanli/20240731/183975.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表