大佬 能不能让STC的USB直接模拟成一个移动设备,直接通过typec线来传输修改文件🤔 ...
可以,先看这个
U盘例程:【Ai8051U】MSC协议U盘例程-支持内部FLASH\SPI-Flash\QSPI-Flash切换 - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯人工智能技术交流网站 - AI32位8051交流社区
文件带的《张灯结彩.mp3》 不能播放。
我按32kbit、16K采样的单声道压缩的《孟庭苇-冬季到台北来看雨.mp3》,也不能播放。
《c.mp3》和《D.mp3》可以播放。
请问不能播放的原因是什么呢?
梁工 发表于 2025-12-26 18:57
文件带的《张灯结彩.mp3》 不能播放。
我按32kbit、16K采样的单声道压缩的《孟庭苇-冬季到台北来看雨.mp3 ...
暂不支持中文,改成纯字母名 ercircle 发表于 2025-12-26 20:25
暂不支持中文,改成纯字母名
改成英文OK了、 原程序只播放一个声道,我增加另一个声道输出,下面的程序替换I2S.c里的中断函数即可:
unsigned int dac;
////////////////////////////////////////
// I2S中断服务程序
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void I2S_ISR(void) interrupt I2S_VECTOR
{
//<<AICUBE_USER_I2S_ISR_CODE1_BEGIN>>
// // 在此添加中断函数用户代码
static u8 flag;
if (I2S1_CheckTXEFlag()) //判断I2S发送缓冲区空中断
{
if(!pcm_run_flag)
{
I2S1_WriteData_16B(0);
}
else
{
if(isMp3Play)
{
flag = !flag;
if(flag)
{
dac = i2s_buffer;
I2SDRH = (u8)(dac/256), I2SDRL = (u8)(dac%256);
}
else
{
I2SDRH = (u8)(dac/256), I2SDRL = (u8)(dac%256);
if (++i2s_buffer_index >= i2s_buffer_len)
{
i2s_buffer_index = 0;
pcm_run_flag = 0;
}
}
}
else
{
//s16le
(I2SDRH = LOBYTE(i2s_buffer), I2SDRL = HIBYTE(i2s_buffer));
//I2S_WriteData_16B(i2s_buffer);
i2s_buffer_index++;
if (i2s_buffer_index >= i2s_buffer_len)
{
i2s_buffer_index = 0;
pcm_run_flag = 0;
}
}
}
}
}
梁工 发表于 2025-12-27 14:07
原程序只播放一个声道,我增加另一个声道输出,下面的程序替换I2S.c里的中断函数即可:
unsigned int dac;
...
已同步修改到1L附件中
ercircle 发表于 2025-12-27 16:09
已同步修改到1L附件中
{:shengli:}周末辛苦了! 那个song.c什么作用
骨碎补 发表于 2025-12-30 09:10
那个song.c什么作用
测试文件,可以用内部flash播放,可以看参考链接第一个原作帖子
页:
1
[2]