我单位有一款用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 上传
正确代码起始地址:02 c4 95 为LJMP c495
第一条跳转就不对了。
一周热门 更多>