内容介绍
内容介绍
1.资源介绍
该项目主要为LPC55S69开发板的体验项目。该开发板的主要功能如下图所示。
微控制器 |
LPC55S69双核Arm Cortex-M33微控制器运行频率高达100 MHz |
存储器 |
微型SD卡插槽(4位SDIO) |
连接 |
|
调试 |
支持外部硬件调试器 |
传感器 |
恩智浦MMA8652FCR1加速度传感器 |
音频 |
立体声音频编解码器,带线路输入/输出 |
扩展端口 |
|
用户组件 |
3个用户LED,加上复位、ISP (3)和用户按钮 |
LPC55S69-EVK开发板是NXP公司推出的,LPC55S6x MCU家族是全球首款基于通用Cortex-M33的微控制器,控制器为双核结构,运行频率高达100MHz。
开发板具有USB、SD卡插槽、音频输入输出、I2C、SPI等接口,并支持mikroBUS接口扩展。
2.功能介绍
本次任务主要是制作一个通过TF卡获取音乐播放的程序,主要使用到FATFS和I2S,因此可以通过配置基础代码进行修改,实现最终功能。
3.代码
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;
}
}
PRINTF("Configure WM8904 codec\r\n");
/* protocol: i2s
* sampleRate: 48K
* bitwidth:16
*/
if (CODEC_Init(&codecHandle, &boardCodecConfig) != kStatus_Success)
{
PRINTF("WM8904_Init failed!\r\n");
assert(false);
}
/* Initial volume kept low for hearing safety.
* Adjust it to your needs, 0-100, 0 for mute, 100 for maximum volume.
*/
if (CODEC_SetVolume(&codecHandle, kCODEC_PlayChannelHeadphoneLeft | kCODEC_PlayChannelHeadphoneRight, 30U) !=
kStatus_Success)
{
assert(false);
}
PRINTF("Configure I2S\r\n");
I2S_TxGetDefaultConfig(&s_TxConfig);
s_TxConfig.divider = DEMO_I2S_CLOCK_DIVIDER;
s_TxConfig.masterSlave = DEMO_I2S_TX_MODE;
I2S_TxInit(DEMO_I2S_TX, &s_TxConfig);
// StartSoundPlayback();
// s_TxTransfer.data = &music1[0];
// s_TxTransfer.dataSize = sizeof(music1);
// I2S_TxTransferCreateHandle(DEMO_I2S_TX, &s_TxHandle, TxCallback, (void *)&s_TxTransfer);
// I2S_TxTransferNonBlocking(DEMO_I2S_TX, &s_TxHandle, s_TxTransfer);
error = f_read(&g_fileObject, music1, sizeof(music1), &bytesRead);
if ((error) || (bytesRead != sizeof(music1)))
{
PRINTF("Read file failed. \r\n");
failedFlag = true;
}
musicflag=1;
s_TxTransfer.data = &music1[0];
s_TxTransfer.dataSize = sizeof(music1);
I2S_TxTransferCreateHandle(DEMO_I2S_TX, &s_TxHandle, TxCallback, (void *)&s_TxTransfer);
I2S_TxTransferNonBlocking(DEMO_I2S_TX, &s_TxHandle, s_TxTransfer);
for(;;)
{
if(musicflag2!=musicflag)
{
if(musicflag==0)
{
error = f_read(&g_fileObject, music1, sizeof(music1), &bytesRead);
if ((error) || (bytesRead != sizeof(music1)))
{
PRINTF("Read file failed. \r\n");
failedFlag = true;
break;
}
}
else
{
error = f_read(&g_fileObject, music2, sizeof(music2), &bytesRead);
if ((error) || (bytesRead != sizeof(music2)))
{
PRINTF("Read file failed. \r\n");
failedFlag = true;
break;
}
}
musicflag2=musicflag;
}
}
4.功能展示
详见视频
5.心得体会
LPC55S69开发板还是比较好用的,只是用惯了CubeMX再用
MCUXpresso Config Tools v10确实有些用不惯,不过经过半天的学习,基本上可以正式使用该软件进行开发了。
6.实物图
附件下载
sdcard_fatfs.7z
团队介绍
个人队,电子工程师+爱好者一枚
评论
0 / 100
查看更多