关于8H8K64U的FLASH读取的一个非常奇怪的问题!
本帖最后由 Gage_hu 于 2024-11-17 22:56 编辑芯片:STC8H8K64U-45I-TSSOP20
固件版本:D
现象描述:
一个显示屏的应用,之前是用8H1K08芯片一切正常,最近因功能升级改用了8H8K64U。
程序上电会从FLASH读取数据(如果发现数据区没初始化则会写入一些初始数据之后再读取),其中有一部分数据(360字节左右)会显示到LCD屏上。
故障现象是,新芯片第一次烧录后程序运行(仅限新芯片第一次烧录后自动复位运行不断电),读取到的FLASH数据全部是0x04,再读一次又全部变成0x88,往后读就一直是0x88了(都不是正确的数据,读取地址确认过没错),只是不断电问题就一直存在,重新上电就能正常读取了,原本以为是FLASH数据初始化问题,重新检查程序后也排除了此可能。更奇怪的是重新烧录运行也都正常,之前的问题没有了,换全新芯片就会出现,百思不解啊,烧录选项已截图,有没有大神遇到过同样的情况或者知道原因的请多指教,谢谢了!
本帖最后由 21cnsound 于 2024-11-18 00:03 编辑
难道是重新设置了不同于之前的EEPROM大小必须断电、上电才能生效?----不生效就是EEPROM起始地址还是之前的设置,。
第二次烧录(即经过了断电、上电的过程)时,EEPROM的大小应该没变,所以不需要断电、上电。
21cnsound 发表于 2024-11-17 23:58
难道是重新设置了不同于之前的EEPROM大小必须断电、上电才能生效?----不生效就是EEPROM起始地址还是之前的 ...
试过修改用户EEPROM大小,增加和减小都试过,全部OK,只要不是第一次烧录问题就不会出现 这个我之前也遇到,我猜测烧录程序时,它的内部程序对FLASH寄存器进行了相关设置。导致如果不断电,就会和自己的程序不兼容。 青穗三三 发表于 2024-11-18 11:29
这个我之前也遇到,我猜测烧录程序时,它的内部程序对FLASH寄存器进行了相关设置。导致如果不断电,就会和 ...
{:handshake:}感谢分享,就是遇到这种问题心里没底,害怕是自己程序哪里出错,一旦批量损失就大了 自己来结个帖吧,原因找到了:
今天烧录程序的时候,偶然瞥见芯片初始设置的用户EEPROM大小是0.5K(之前从不注意这些信息的),因为重新上电前我设置的用户EEPROM大小不会生效,所以还是按0.5K的起始位置去,我读取的EEPROM地址明显超出这个大小了,所以读出的数据就不可预测了!虽然之前我也试过改变用户EEPROM大小,但也没试过这么小{:4_167:},重新测试设置0.5K之后再次上电复现了故障,算是确定了原因!经此一事也算是长了小小经验,供大家参考吧。
附:烧录时读取的芯片初始配置:
正在检测目标单片机 ...
单片机型号: STC8H8K64U
当前芯片的硬件选项为:
. 系统ISP工作频率: 23.808MHz
. 内部振荡器的频率未调节
. 掉电唤醒定时器的频率: 36.000KHz
. 振荡器放大增益使能
. 用户EEPROM大小被设置为 0.5 K
. P3.2和P3.3与下次下载无关
. 上电复位时增加额外的复位延时
. 复位引脚用作普通I/O口
. 检测到低压时不复位,可产生低压中断
. 低压检测门槛电压 : 2.70 V
. 上电复位时,硬件不启动内部看门狗
. 上电自动启动内部看门狗时的预分频数为 : 64
. 空闲状态时看门狗定时器停止计数
. 下次下载用户程序时,将用户EEPROM区一并擦除
. 下次下载用户程序时,没有相关的端口控制485
. 下次下载时不需要校验下载口令
. 未使能芯片的仿真功能
. 内部参考电压: 1190 mV (参考范围: 1100~1300mV)
单片机型号: STC8H8K64U 你看看是不是设置那个iap大小的问题,我从 8h1k08换到 8h8k64u也碰到过,之前 8h1k08是固定 4k eeprom,换8h8k64u后要设置相同的 4k eeprom才行 vb2002 发表于 2024-11-18 23:51
你看看是不是设置那个iap大小的问题,我从 8h1k08换到 8h8k64u也碰到过,之前 8h1k08是固定 4k eeprom,换8 ...
嗯,不过不是设置的问题,是芯片出厂设置iap太小,然后没断电新设置的大小没生效,读取地址超出的原因。详细可以看我上一楼说的 需要断电,重新上电
页:
[1]