石油钻机厂家
免费服务热线

Free service

hotline

010-00000000
石油钻机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

基于CAN总线的软件IAP技术

发布时间:2020-06-30 21:04:54 阅读: 来源:石油钻机厂家

摘要:CAN总线是一种使用CAN协议的串行通信网络。Silicon Laboratories公司的单片机C8051F040是完全集成的混合信号系统级芯片,而且内部集成了CAN控制器。文中详述了如何通过CAN总线实现对软件的升级,并给出具体的软件设计方案。关键词:C8051F040;CAN;IAP CAN总线是低成本、高利用率的工业控制总线,在工业控制、汽车电子等方面有十分广泛的用途。 C8051F040单片机内部集成的CAN控制器是Bosch全功能CAN模块的完全实现,完全符合CAN规范2.0 B,其内部还集成了64 kB系统编程用FLASH存储器,这就为软件的更新、升级提供了可能。当产品安装位置不方便拆卸或需要一次更新大量产品软件的时候,使用单片机JTAG接口来实现几乎是不可能的事情。本文提出一种系统升级的方法,也对单片机的产品设计具有重要的参考价值。1 总体思路 将C8051F040的64KB存储器分为三个区域:0x0000~0x5fff作为正常运行的程序存储区,0x6000~0xbfff作为从CAN总线接收到的需要更新程序的存储区,0xc000以上作为bootloader程序的存储区。 正常运行的程序在接收到上位机的程序更新命令后(用户自定义通讯协议来实现),接收数据,且将其按接收顺序写入到以0x6000开始的区域中,直到接收完毕,然后主程序判断接收数据是否完整、有效,如完整且有效则跳转到bootloader程序中,由bootloader程序完成更新程序的工作。2 程序软件框图 (1)bootloader程序 新建立一个proiect,其中包含程序初始化、端口配置、FLASH读/写等函数。 ①FLASH写框图(见图1) ②编译控制项 在linker中,使用“CODE(0c000h,MAINRUN_3s(0c000h))”将程序编译完成后的代码放置到以0xc000开始的地址空间。

本文引用地址:

(2)主程序 主程序在确认更新程序的有效性后,需要跳转到bootloader程序中运行。由于主程序和bootloader程序是采用不用的项目进行编译的,故不能直接调用,必须采用绝对调用的方法。采用函数指针是一种可行的方式,如: void(*update_flash) 0=0xc000; //定义函数指针指向0Xc000 (3)上位机软件 由于本文中节点采用CAN总线连接到同一网络上,且采用CAN通讯的方式来更新程序内容,所以,上位机也必须带CAN控制器。 将需要更新的程序的hex文件通过E文件转换成BIN文件,然后再用BIN2C.EXE将生成的BIN文件转换成一字节数组,将其拷贝到上位机软件中,这就是需要更新的源程序。按自定义通讯协议,将其发送到目标CPU即可。3 需要注意的事项 (1)程序有效性的判断由自定义通讯协议完成 (2)在写FLASH的过程中,需要关中断 (3)在写FLASH的过程中,需要关中断4 结束语 文中的通过CAN总线实王见软件IAP技术的方法,完全可以使用,而且抗干扰能力较强,已成功应用于蓄电池检测系统中各个检测模块的程序更新。

北京制作西服

订做工服

济宁制作劳保工服