新手上路
- 积分
- 24
- 金钱
- 24
- 注册时间
- 2022-4-20
- 在线时间
- 19 小时
|
15金钱
我买了最小系统板做音乐播放器的实验,按照正点战舰版原理图接了SDIO模块和VS1053模块。这程序在开发板上直接可以运行了。在自己接的最小系统跑不了,烧录等候led0没能正常闪烁,没啥反应一样(闪烁应该是显示在读取SD卡播放音乐,开发板上是可以的)。我通过在主函数里不断注释,大概找到了问题的地方。 while(font_init()) //检查字库
{
LCD_ShowString(30,50,200,16,16,"Font Error!");
delay_ms(200);
LCD_Fill(30,50,240,66,WHITE);//清除显示
}
注释掉该循环程序,开发板led0没在闪烁,倒是led1在闪烁,然后有滴~滴~滴声音(应该是后文的VS_Sine_Test();的作用)
最小系统板如上。所以我觉得问题在这个函数上
在fontunp.c里
u8 font_init(void)
{
u8 t=0;
W25QXX_Init();
while(t<10)//连续读取10次,都是错误,说明确实是有问题,得更新字库了
{
t++;
W25QXX_Read((u8*)&ftinfo,FONTINFOADDR,sizeof(ftinfo));//读出ftinfo结构体数据
if(ftinfo.fontok==0XAA)break;
delay_ms(20);
}
if(ftinfo.fontok!=0XAA)return 1;
return 0;
}
我认为应该是font_init 检查字库的时候出了错,返回值为1,导致陷入while的死循环里(因为我的最小系统不知道为啥不能驱动正点LCD,不能直观看出LED显示的报错。下次再这个问题解决),在循环里打印发送
作为提示,确实是掉进死循环里了。
开发板挂载FLASH的是WQ25128,我买的最小在系统板挂载的是WQ2516。理论上字库要占据15.1M的内存而已。16M是够的,为啥我检查字库一直报错呢???
是因为字库超过16M了吗?还有字库是这个程序烧进去的吗还是出厂已经被烧进WQ25了,如果不是我该怎么做?字库检查跟后面播放音乐有什么必然性?注释掉就不能播放音乐还滴滴滴响,能否跳过检查字库直接放?
我的项目时间紧急,差不多是空降过来的,望原子哥和各位大佬解惑
|
最佳答案
查看完整内容[请看2#楼]
根据正点原子淘宝技术人员提示,检查字库方法解决了。自己接的最小系统板外挂的WQ2516里没有字库,我们要做的是把字库加载在WQ2516里,先在资料里把font复制得到SD卡里,调用一次字库更新字库的函数updata_font即可(烧录执行一次后注释掉也行)。比如在founupd.c里一个检查字库的10次 循环里调用,*src=0 代表SD卡,随便u8 i=0;啥的,&0放进去就行....前面,x,y,size参数无所谓,随便写,应该是在LCD位置显示而已....
SD卡检查字库 ...
|