3229浏览
查看: 3229|回复: 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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图1

礼物 + 地球

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图2

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图3

安装依赖

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图4

清理 + 构建

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图5

我这边报错了

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图6

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图7

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图8

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图9

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

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

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

2.修改代码

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图10

TF卡的引脚 先给绑定上

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图11

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图12
K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图13

保存以下 SD卡搞定引脚

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图14

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

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图15

里面就sdinit有用 点进去看看

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图16

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图17

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

报错了

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图18

再一条龙走起

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图19

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图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文件系...图21

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

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

线看原理图

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图22

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图23

I2S_WS -> IO33

I2S_DO -> IO34

I2S_BCK-> IO35

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图24

下面看看代码 I2S在第17章

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图25

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图26

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图27
直接用就行 里面干了啥不用管,它给我们写好了

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图28

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图29

直接看wav_test

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图30

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图31

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图32

i2s_init() 才是用到的I2S

i2s_init(I2S_DEVICE_0, I2S_TRANSMITTER, 0x03);

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图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文件系...图34

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图35

初始 wav音频解码器 不用管

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图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文件系...图37

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图38

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图39

看看DMA中断

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图40
很明显,是通过DMA来判断是不是播放完还是继续播放这些的 用的状态机形式

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

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图41

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图42

一条龙试试

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图43

播放是沙沙声,应该是播不了,我去搜搜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文件系...图44

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图45
再一条龙试试

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图46

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

widola的喇叭接在这里

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图47

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图48
公放用的NS4168

K210入门-裸机开发(九)之IIS功放扬声器小喇叭(SD卡+fat文件系...图49

果然带不起我的8欧2W

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

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

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

版权声明:本文为CSDN博主「jwdeng1995」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jwdeng1995/article/details/108087083

empty  版主

发表于 2021-3-12 10:43:22

芜湖
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail