本帖最后由 Lana636 于 2025-11-21 10:39 编辑
GW3323常见报错 见 https://bbs.21ic.com/icview-3374798-1-1.html
上篇帖子无法编辑,故新建《GW3323常见报错二》此贴,补充上帖未说明的问题。
编译和下载正常,但是运行起来异常。
一、语音播报变得巨慢,所有时钟都变慢。
原因:新增的代码或者运行时逻辑问题导致cache异常,从而导致flash数据被改写,与时钟相关的配置也被改写。
解决方法:找到新增的代码,或者仔细看看与cm_write,os_spiflash_write相关的参数,有没有超出。
二、报"cm page exceed"
原因:cm_write8(&temp, 0x64)的第一和第二参数写反了。
相关知识:cm_init(MAX_CM_PAGE, CM_START, CM_SIZE);//CM_START=(FLASH_SIZE - CM_SIZE)
最后20KB的数据是存放用户参数,见bsp_param.h和api_cm.h
api_cm可以最多8个区,即8*250=2000字节(0x800);参数区是循环写的,调用cm_write时,先找20KB里没有使用的page写,旧数据保留,直到没有空间后再去擦除4KB写新的参数。所以最后20KB是可以对8个区擦写10*10万次(20KB/2KB=10),若此芯片后续只改1个区,那就能擦写72*10万次((20KB-2KB)/256=72)。
注:SDK_V2.5版本,CM_SIZE可以设置为8KB,不用设置为20KB。SYS_CM_PAGE、BT_CM_PAGE等用户不要改,否则可能会影响SDK的库调用。建议客户在PAGE5~PAGE7自己定义一些配置。write只是写入cache,需要调用cm_sync才会写入到spiflash中。
三、ADC误差
相关知识:此芯片ADC有16个通道,量程是0~3.3V,通道14和15测量VABT,VUSB就是通过分压后把模拟电压传给ADC模块,例程电源管理中可以看出是分压一半,即ADC采到的值转成电压后要乘以2。(1) ADC根据基准电压bandgao计算时 ,误差在3mV以内(10bit分辨率,3300mV/1024=3.3mV)。
|
|