一、项目目标
使用LPC55S69 开发板,实现任务一:
读取SD卡(SD卡自备)中的音频文件,使用板卡上的3.5mm音频接口播放音乐。
二、使用开发板卡介绍
LPCXpresso开发板- LPC55S69双cortex - m33核处理器
-板载,高速USB, Link2调试探针
-灵活扩展- Arduino®,Mikroe和PMod头文件,各种板载接口组件
32位Arm皮层®m33;TrustZone M33协处理器,
PowerQuad, CASPER, 320kb SRAM;640kb闪存,USB HS,
Flexcomm接口,SDIO, 32位计数器/定时器,
SCTimer/PWM, PLU, 16位1.0 Msamples/sec ADC,
比较器,温度传感器,AES, PUF, SHA, CRC, RN
具有超强的加密功能,具备高速USB以及全速USB接口,内置MPU,DSP等多个专用单元,可快速解决项目中各种需求.
三、实现效果介绍
编写一个通过读取TF内存卡上音乐文件,并实现播放,音乐文件读取采用FATFS文件系统,音乐接口采用I2S,并通过开发板上集成的音频功放芯片转3.5mm接口并通过外置设备播放.
四、项目实现过程介绍以及实际代码
项目基于MCUXpresso中的例程修改得到,首先使用MCUXpresso Config Tools创建一个例程。
咱们打开之后首要就是需要配置好时钟,主时钟来自32M外置晶振,通过PLL到300M后,二分频为150M,提供到System_Clock。
读取TF卡指定文件代码如下
if (sdcardWaitCardInsert() != kStatus_Success)
{
return -1;
}
if (f_mount(&g_fileSystem, driverNumberBuffer, 0U))
{
PRINTF("Mount volume failed.\r\n");
return -1;
}
#if (FF_FS_RPATH >= 2U)
error = f_chdrive((char const *)&driverNumberBuffer[0U]);
if (error)
{
PRINTF("Change drive failed.\r\n");
return -1;
}
#endif
error = f_open(&g_fileObject, _T("/song.wav"), (FA_READ | FA_OPEN_EXISTING));
if (error)
{
if (error == FR_EXIST)
{
PRINTF("File exists.\r\n");
}
else
{
PRINTF("Open file failed.\r\n");
return -1;
}
}
I2S接口初始化函数
static uint32_t I2S_GetInstance(I2S_Type *base)
{
uint32_t i;
for (i = 0; i < (uint32_t)ARRAY_SIZE(s_i2sBaseAddrs); i++)
{
if ((uint32_t)base == s_i2sBaseAddrs[i])
{
return i;
}
}
assert(false);
return 0;
}
五、实物效果展示图
串口助手显示,板卡状态已就绪,我们可以打开扬声器进行播放,播放器采用一个外置音响.
六、心得体会
LPC55S69确实强大,能很好的实现多媒体应用,以前开发总是用的keil,开发起来比较麻烦,现在使用了NXP配置工具,虽然有很多不熟悉,但是还是能很快上手,根据例程能很快学以致用,感谢硬禾学堂这次机会,让我学习到了很多.期待后续能有更好的活动.