ercircle 发表于 2025-12-10 20:58:48

fsltech 发表于 2025-12-10 19:07
大佬 能不能让STC的USB直接模拟成一个移动设备,直接通过typec线来传输修改文件🤔 ...

可以,先看这个

U盘例程:【Ai8051U】MSC协议U盘例程-支持内部FLASH\SPI-Flash\QSPI-Flash切换 - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯人工智能技术交流网站 - AI32位8051交流社区

梁工 发表于 2025-12-26 18:57:18

文件带的《张灯结彩.mp3》 不能播放。

我按32kbit、16K采样的单声道压缩的《孟庭苇-冬季到台北来看雨.mp3》,也不能播放。
《c.mp3》和《D.mp3》可以播放。
请问不能播放的原因是什么呢?




ercircle 发表于 2025-12-26 20:25:01

梁工 发表于 2025-12-26 18:57
文件带的《张灯结彩.mp3》 不能播放。

我按32kbit、16K采样的单声道压缩的《孟庭苇-冬季到台北来看雨.mp3 ...
暂不支持中文,改成纯字母名

梁工 发表于 2025-12-26 23:36:13

ercircle 发表于 2025-12-26 20:25
暂不支持中文,改成纯字母名

改成英文OK了、

梁工 发表于 2025-12-27 14:07:05

原程序只播放一个声道,我增加另一个声道输出,下面的程序替换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;
                                }
                        }
                }
    }
}

ercircle 发表于 2025-12-27 16:09:07

梁工 发表于 2025-12-27 14:07
原程序只播放一个声道,我增加另一个声道输出,下面的程序替换I2S.c里的中断函数即可:
unsigned int dac;
...

已同步修改到1L附件中

梁工 发表于 2025-12-27 16:32:59

ercircle 发表于 2025-12-27 16:09
已同步修改到1L附件中

{:shengli:}周末辛苦了!

骨碎补 发表于 2025-12-30 09:10:47

那个song.c什么作用

ercircle 发表于 2025-12-30 09:21:57

骨碎补 发表于 2025-12-30 09:10
那个song.c什么作用

测试文件,可以用内部flash播放,可以看参考链接第一个原作帖子
页: 1 [2]
查看完整版本: MP3音乐播放器【FatFs+SD/TF卡+I2S-DAC】@STC32G144K246,实时解码MP3