K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)

开发板:K210 AIRV R3版 widora

开发环境:kendryte IDE 官方的

必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图

(一) 新建文件夹10my_code_tfcard_music

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第1张图片

礼物 + 地球

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第2张图片

实例 搜索music 选择开发版本(develop) 然后下载到刚才新建的文件夹中

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第3张图片

安装依赖

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第4张图片

清理 + 构建

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第5张图片

我这边报错了

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第6张图片

显示 未定义 ,应该是我上一节SD/TF卡章节的锅吗

 

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第7张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第8张图片

用到SPI0(上一节SD卡用的就是SPI0) 于是 我们自己补充一下宏定义就行

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第9张图片

重新安装一次依赖(我习惯这样) , 然后 清理 + 构建

这样就废了, 看了一下, 原来是安装依赖的锅, 不要重新安装依赖,直接清理+构建就行

环境搭建完毕 下面开始改代码

(二) 修改代码

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第10张图片

TF卡的引脚 先给绑定上

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第11张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第12张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第13张图片

保存以下 SD卡搞定引脚

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第14张图片

紫色区域先不管, 就里面dmac_init等下要看的, 现在先看SD卡要不要改

去看看点击sdcard_test() 然后按F12跳转

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第15张图片

里面就sdinit有用 点金去看看

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第16张图片

这些都没用到的 可以删了, 并且我给SPI设置频率为30M,我这边测试可以跑的起, 之前跑10M的(如果不行自己降低速率)

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第17张图片

先一条龙看看有没有读取SD卡成功

报错了

把3个函数删掉就行, 双击进去, 删除就行

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第18张图片

再一条龙走起

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第19张图片

SD卡读不了 莫非速度太快了, 改回20M试试

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第20张图片

确实是SPI太块了, 改20M我这边OK了 (因为之前CPU跑800M/2=400M的, 这次跑了320M/2 = 160M)

在main.c 里面的sysctl_pll_set_freq(SYSCTL_PLL0, 320000000UL); 这个函数 说明跑的160M还是320M?

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第21张图片

SD卡 + fat文件系统移植没问题, 下面看看I2S音频了

 

(三)下面直接看I2S(音频协议)

线看原理图 

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第22张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第23张图片

I2S_WS -> IO33

I2S_DO -> IO34

I2S_BCK-> IO35

去config ->device那边绑定一下引脚即可,记得保存

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第24张图片

下面看看代码 I2S在第17章

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第25张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第26张图片

看看dmac 没什么好看的 就是DMA, 在14章

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第27张图片

直接用就行 里面干了啥不用管,它给我们写好了

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第28张图片

main.c这个刚才测试过了 没用了 把他注释掉

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第29张图片

直接看wav_test

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第30张图片

看看这个初始化,看了下 应该是初始化播放器的 不用管

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第31张图片

这边用到了一个DMA中断, 等下要看看里面中断执行了什么

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第32张图片

i2s_init() 才是用到的I2S

i2s_init(I2S_DEVICE_0, I2S_TRANSMITTER, 0x03);

对应 IIS0, 发送模式,通道掩码是3(什么作用的 说明书没有)

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第33张图片

继续 

i2s_tx_channel_config(

I2S_DEVICE_0, I2S_CHANNEL_0, RESOLUTION_16_BIT, SCLK_CYCLES_32,

/*TRIGGER_LEVEL_1*/ TRIGGER_LEVEL_4, RIGHT_JUSTIFYING_MODE);

对应 I2S0,通道0,发送位数16位,时钟选择32位的(I2S配置的那个时钟),DMA深度4,右对齐

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第34张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第35张图片

初始 wav音频解码器 不用管

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第36张图片

开始放歌

i2s_play(I2S_DEVICE_0, DMAC_CHANNEL3, (void *)wav_file.buff_current,

wav_file.buff_current_len, wav_file.buff_current_len, 16, 2);

对应 I2S0,解码器用的通道3(有个DMA中断的等下要看),存放的歌缓存,

缓存的长度,单次发送帧数(应该是256*1024),单次采样位宽16,2声道

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第37张图片

开始解码,完之后就跳出死循环

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第38张图片

看看DMA中断

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第39张图片

很明显,是通过DMA来判断是不是播放完还是继续播放这些的 用的状态机形式

我的SD卡只有2首歌, 试试beyong的歌, 不知道mp3能不能用wav播放

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第40张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第41张图片

一条龙试试

 

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第42张图片

播放是沙沙声,应该是播不了,我去搜搜wav格式的歌

printf("result:%d\n", status);

if(BG_READ_WORD(index) != RIFF_ID)

return UNVALID_RIFF_ID;

返回了结果3,为无效ID,应该就是mp3不行了

我在U盘搞了个qiao.wav 试试

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第43张图片

再一条龙试试

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第44张图片

成功了 接上喇叭也能听到声音了 我这边用的8欧 2W的喇叭 非常小声

widola的喇叭接在这里

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第45张图片

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)_第46张图片

功放用的NS4168

果然带不起我的8欧2W

建议你们用4欧2W及其以下的

 

代码太大 还是贴链接,里面有首测试的qiao.wav 所以文件有点大

 

链接:https://pan.baidu.com/s/1bP-I8wC5QoDdkfzM6XL1pA 
提取码:5qn9 
复制这段内容后打开百度网盘手机App,操作更方便哦

 

 

 

你可能感兴趣的:(K210)