我单位有一款用C8051F040做核心的板子,通过CAN总线驱动A,E两个电机。经常出现某个电机无法驱动的故障,回来重新刷程序就正常了。
过程如下:
1.在实验室测试,加电,板子上报“驱动总线异常”;
2.读取板子F040FLASH上0x0000~0xFFFF数据,存为err.hex文件;
3.重新烧录程序,后板子工作正常。0x0000~0xffff程序存为normal.hex.
4.将err.hex烧录,板子工作又不正常。
5.将normal烧录,板子工作又正常。
6.检查程序中没有对FLASH写操作命令。
问题:
1.为何程序段FLASH被改写?
2.为何改写后其他功能正常,唯独CAN总线不能通信,多次实验都是如此?
3.看F040手册,写明如果从0写1,必须整页清除后再重写,但实际并非如此。
4.为何还会发生数据往后面错一个BYTE的情况?
附件为图
IMG_20190912_110451.jpg (1.5 MB, 下载次数: 0)
下载附件
2019-9-12 12:46 上传
复位电路不要用传统的阻容电路,用专用的复位IC,应该问题会解决,以前用这个IC,发现flash改写总是上电或者掉电的时候出现,好像是用了MAX809S就没发现这个问题了
1.检查过代码,确实没有写flash指令,不过没有VDD监测;
2.复位电路就是阻容,标准的,但不明白为何改写与复位有关;
3.每次改写的数据不一样。
正确代码起始地址:02 c4 95 为LJMP c495
第一条跳转就不对了。
一周热门 更多>