3195| 1
|
[官方教程] K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系... |
K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系统)_只能wav格式(用的wav解码器)开发板:K210 AIRV R3版 widora 开发环境:kendryte IDE 官方的 必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图 1.新建文件夹10my_code_tfcard_music礼物 + 地球 实例 搜索music 选择开发版本(develop) 然后下载到刚才新建的文件夹中 安装依赖 清理 + 构建 我这边报错了 显示 未定义 ,应该是我上一节SD/TF卡章节的锅吗 用到SPI0(上一节SD卡用的就是SPI0) 于是 我们自己补充一下宏定义就行 重新安装一次依赖(我习惯这样) , 然后 清理 + 构建 这样就废了, 看了一下, 原来是安装依赖的锅, 不要重新安装依赖,直接清理+构建就行 环境搭建完毕 下面开始改代码 2.修改代码TF卡的引脚 先给绑定上
保存以下 SD卡搞定引脚 紫色区域先不管, 就里面dmac_init等下要看的, 现在先看SD卡要不要改 去看看点击sdcard_test() 然后按F12跳转 里面就sdinit有用 点进去看看 这些都没用到的 可以删了, 并且我给SPI设置频率为30M,我这边测试可以跑的起, 之前跑10M的(如果不行自己降低速率) 一条龙看看有没有读取SD卡成功 报错了 把3个函数删掉就行, 双击进去, 删除就行 再一条龙走起 SD卡读不了 莫非速度太快了, 改回20M试试 确实是SPI太块了, 改20M我这边OK了 (因为之前CPU跑800M/2=400M的, 这次跑了320M/2 = 160M) 在main.c 里面的sysctl_pll_set_freq(SYSCTL_PLL0, 320000000UL); 这个函数 说明跑的160M还是320M? SD卡 + fat文件系统移植没问题, 下面看看I2S音频了 3.下面直接看I2S(音频协议)线看原理图 I2S_WS -> IO33 I2S_DO -> IO34 I2S_BCK-> IO35 去config ->device那边绑定一下引脚即可,记得保存 下面看看代码 I2S在第17章 看看dmac 没什么好看的 就是DMA, 在14章
main.c这个刚才测试过了 没用了 把他注释掉 直接看wav_test 看看这个初始化,看了下 应该是初始化播放器的 不用管 这边用到了一个DMA中断, 等下要看看里面中断执行了什么 i2s_init() 才是用到的I2S i2s_init(I2S_DEVICE_0, I2S_TRANSMITTER, 0x03); 对应 IIS0, 发送模式,通道掩码是3(什么作用的 说明书没有) 继续 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,右对齐 初始 wav音频解码器 不用管 开始放歌 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声道 开始解码,完之后就跳出死循环 看看DMA中断
我的SD卡只有2首歌, 试试beyong的歌, 不知道mp3能不能用wav播放 一条龙试试 播放是沙沙声,应该是播不了,我去搜搜wav格式的歌 printf("result:%d\n", status); if(BG_READ_WORD(index) != RIFF_ID) return UNVALID_RIFF_ID; 返回了结果3,为无效ID,应该就是mp3不行了 我在U盘搞了个qiao.wav 试试
成功了 接上喇叭也能听到声音了 我这边用的8欧 2W的喇叭 非常小声 widola的喇叭接在这里
果然带不起我的8欧2W 建议你们用4欧2W及其以下的 代码太大 还是贴链接,里面有首测试的qiao.wav 所以文件有点大 链接:https://pan.baidu.com/s/1bP-I8wC5QoDdkfzM6XL1pA 版权声明:本文为CSDN博主「jwdeng1995」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed