c8051f040最小系统单片机怎么烧程序

通过CAN总线实现C固件升级_工业自动化_中国百科网
您现在的位置: >
> 文章内容:
通过CAN总线实现C固件升级
    
&&&&&&&&& 摘要:本文针对新型SOC(System on a Chip)片上型混合信号的C单片机[1],通过对Flash存储结构、擦写过程、CAN总线通信应用层协议、流程等方面进行详细阐述,提出了一种通过CAN通信端口实现稳定性高、可靠性强的固件升级方案。&&&&&& Abstract: This paper introduce a system that can upgrades the firmware of the C, a series of the SOC SCM, and elaborates firmware memories structure, process of Flash clear and write, application layer protocol by CAN-Bus, software process, then put forward a high stability and strong blue print for firmware upgrading byCAN-Bus.
&&&&&&&&&&&&& Keywords: C; FLASH PCAN-bus communication protocol
&&&&&&&&&&&&& 0& 引言
&&&&&&&&&&&&& 随着电子科技的发展,单片机被广泛应用于工业自动控制、仪器仪表。实际应用中,系统会存在升级更新问题。在很多情况下,应用于车辆、工程机械等产品上的单片机不方便拆,因此系统固件的在线更新就成为了很重要的问题。
&&&&&&&&&&&&&& Silicon Lab公司的51系列单片机C芯片内部集成了完全支持CAN2.0A和CAN2.0B的CAN。本文选用C单片机,设计了IAP(In Application Program)应用软件,通过CAN通信端口,利用CAN总线通信从PC机接收程序更新代码,实现稳定可靠的固件升级。
&&&&&&&&&&&&& 1& C8051F040单片机固件存储结构
&&&&&&&&&&&&& C是完全集成的混合信号片上系统型MCU,片上有64个数字I/O引脚,片内集成了一个CAN2.0B控制器,具有32个消息对象,每个消息对象有其自己的标识,有高速、流水线结构的与8051兼容的高速CIP-51内核(可达25MIPS),有内置的64KB的Flash程序存储器和6)的片内RAM,2个12位DAC,2个电压比较器,1个电压基准。
&&&&&&&&&&&&& IAP是指在主程序(用户应用程序)运行的过程中,获取新代码对Flash块、Flash寄存器Boot向量等进行擦除和重新编程的方法。C的MCU能实现IAP, 是因为它能够通过运行于MCU中的用户代码对Flash存储器进行擦除、写入操作。C8051F系列单片机可以通过它的任何一个数字外围接口实现IAP,包括UART,SMBUS,SPI、CAN。C单片机的内部64KB Flash的存储结构可分为用于程序装载的引导(Bootloader)程序区和用户应用程序存储区两部分。
&&&&&&&&&&&&& 2& 固件升级的实现方法
&&&&&&&&&&&&& 系统需要编写两个Project:一个是Bootloader,通过JTAG在线写入FLASH的引导程序区;另一个是应用程序,通过Bootloader写入应用代码区。当应用程序需要升级时,执行Bootloader程序。Bootloader把从CAN通信端口收到的新应用程序代码写入到应用代码区。本文中,引导程序区占用的是0x0的FLASH空间,应用程序区用剩余的FLASH空间。引导程序和应用程序的功能框图分别如下图-1和图-2所示。
&&&&&&&&&&&&& 在更新FLASH程序代码时,必须先擦除,后写入。
&&&&&&&&&&&&& ⑴& Flash擦除
&&&&&&&&&&&&& C单片机的Flash程序区[2]按页组织擦写,512字节为一页(page)。在删除用户程序区时,首先禁止所有中断,并且要使能程序删除位PSEE(PSCTL.1),同时使能PSWE(PSCTL=0x03,即PSWE=1,PSEE=1,页擦除模式),用C51语言的一个指针指向Flash程序区。如:char xdata *data addr=0x0000;
&&&&&&&&&&&&& 程序区每擦除一页,地址指针加512,依此操作擦除程序区;擦除部分程序:
while(addr<0x0F000)&&&&& // 0xF000 为60KB
{&& *addr = 0x00;&&&&&&& // 空写,启动擦除
&&& for(i=0;i<10;i++)
&&& addr = addr + 512;
&&&&&&&&&&&&&&&&&& // 这样就把60KB的Flash旧应用程序擦除了。
&&&&& ⑵ Flash写入
&&&&&&&&&&&&& 可以用软件使用MOVX指令对FLASH存储器编程,像一般的操作数一样为MOVX提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以允许FLASH写操作。这将使MOVX指令执行对FLASH的写操作而不是对XRAM写入。在用软件清除之前,PSWE位一直保持置位状态。为了避免对FLASH的误写,在PSWE为逻辑‘1’期间,禁止中断。
&&&&&&&&&&&&& 写FLASH存储器可以清除数据位,但不能使数据位置‘1’ 只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的字节地址。FLASH存储器是以512字节的扇区为单位组织的,擦除操作作用于一个完整的FLASH页(将页里所有字节置为0xFF)。对FLASH的操作是:先擦除后写入;按页擦除,按字节写入。
&&&&&&&&&&&& ⑶ 应用程序文件中需要加入将应用程序代码定向到新的地址的程序语句:
&&&&&&&&&&&& 从而保证在程序更新完成后,从应用程序区执行。
&&&&&&&&&&&&& 3& CAN通信协议
&&&&&&&&&&&&& CAN总线(Controller Area Network)是BOSCH公司在20世纪80年代中期,为现代汽车应用领域率先推出的一种多主机局部网,即控制器局域网。CAN总线本身只定义了ISO/OSI模型中的物理层和数据链路层,用户在实际应用中,要根据自己的需要定义应用层协议,来定义CAN报文中的11/29位标识符、8字节数据的使用,才能确保数据的高效传输。C具有控制器局域网(CAN)控制器,用CAN协议[3]进行串行通信。Silicon Labs CAN 控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN)。Silicon labs MCU片上集成的CAN 控制器只是一个协议控制器,不能提供物理层驱动(即没有收发器),所以在使用时还需外加CAN总线收发器。
&&&&&&&&&&&&& CAN应用层协议[4]主要规定标识符的分配方案、过程数据交换方法、通信的实现方法等方面内容。对于在实验阶段,针对小型系统,节点数量比较少、数据各类不大的简单系统,选用CAN通信网络,定义了应用层协议。协议中需要定义信息帧的格式,使用CAN的多主站发送模式即可。应用层协议的定义[5],主要定义了以下几个方面:标识符的分配、报文帧格式、通信实现方法。CAN通信报文传输有两种不同的帧格式:标准帧和扩展帧,区别是两者的识别符场的长度不同,具有11位识别符的帧称为标准帧,而含有29位识别符的帧为扩展帧。本文针对实验室条件下完成的小型控制系统,采用11位标识符的标准帧格式。报文传输由4种不同的帧类型来表示和控制:数据帧、远程帧、错误帧、过载帧。
&&&&&&&&&&&&&&⑴ 标识符分配
&&&&&&&&&&&&& 在CAN协议中,标识符决定了报文的优先权,并且通过验收滤波器的设置决定通信的方式。同时也可以对标识符作定义,表示节点地址、自定义数据类型等。应用层协议的首先要根据系统的特点来分配标识符,在分配时的注意事项有:
&&&&&&&&&&&&&① 系统中不同的报文具有不同的标识符。
&&&&&&&&&&& ② 标准帧格式,标识符长度为11位。发送顺序是ID10到ID0,其中,位定时和帧结构决定了标识符的高7位(ID10到ID4)必须不能全部为“隐性”。
&&&&&&&&&&&&& 系统中的数据类型有:模拟量数据、数字量数据、设备参数等。
&&&&&&&&&&&&& 本文所设计的是小型系统,在11位的标识符(ID10~ID0)分配中, ID10和ID9表示数据类型。由于系统节点数小于16个,节点地址码需要4位,因此将ID8~ID5分配给各节点作为节点地址编码,ID4~ID0分配给各种报文的分类编号。
&&&&&&&&&&&&&& ⑵ 报文帧格式
&&&&&&&&&&&&&& 应用层报文帧格式基本上采用的是数据帧、远程帧格式,但是对标识符做了进一步的规&
在更新FLASH程序代码时,必须先擦除,后写入。
⑴& Flash擦除
C单片机的Flash程序区[2]按页组织擦写,512字节为一页(page)。在删除用户程序区时,首先禁止所有中断,并且要使能程序删除位PSEE(PSCTL.1),同时使能PSWE(PSCTL=0x03,即PSWE=1,PSEE=1,页擦除模式),用C51语言的一个指针指向Flash程序区。如:char xdata *data addr=0x0000;
程序区每擦除一页,地址指针加512,依此操作擦除程序区;擦除部分程序:
&可以用软件使用MOVX指令对FLASH存储器编程,像一般的操作数一样为MOVX提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以允许FLASH写操作。这将使MOVX指令执行对FLASH的写操作而不是对XRAM写入。在用软件清除之前,PSWE位一直保持置位状态。为了避免对FLASH的误写,在PSWE为逻辑‘1’期间,禁止中断。
&写FLASH存储器可以清除数据位,但不能使数据位置‘1’ 只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的字节地址。FLASH存储器是以512字节的扇区为单位组织的,擦除操作作用于一个完整的FLASH页(将页里所有字节置为0xFF)。对FLASH的操作是:先擦除后写入;按页擦除,按字节写入。
⑶ 应用程序文件中需要加入将应用程序代码定向到新的地址的程序语句:
#pragma INTVECTOR (0X1000)
#pragma INTERVAL(3)
从而保证在程序更新完成后,从应用程序区执行。
&&&& 3& CAN通信协议
&CAN总线(Controller Area Network)是BOSCH公司在20世纪80年代中期,为现代汽车应用领域率先推出的一种多主机局部网,即控制器局域网。CAN总线本身只定义了ISO/OSI模型中的物理层和数据链路层,用户在实际应用中,要根据自己的需要定义应用层协议,来定义CAN报文中的11/29位标识符、8字节数据的使用,才能确保数据的高效传输。C具有控制器局域网(CAN)控制器,用CAN协议[3]进行串行通信。Silicon Labs CAN 控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN)。Silicon labs MCU片上集成的CAN 控制器只是一个协议控制器,不能提供物理层驱动(即没有收发器),所以在使用时还需外加CAN总线收发器。 CAN应用层协议[4]主要规定标识符的分配方案、过程数据交换方法、通信的实现方法等方面内容。对于在实验阶段,针对小型系统,节点数量比较少、数据各类不大的简单系统,选用CAN通信网络,定义了应用层协议。协议中需要定义信息帧的格式,使用CAN的多主站发送模式即可。应用层协议的定义[5],主要定义了以下几个方面:标识符的分配、报文帧格式、通信实现方法。CAN通信报文传输有两种不同的帧格式:标准帧和扩展帧,区别是两者的识别符场的长度不同,具有11位识别符的帧称为标准帧,而含有29位识别符的帧为扩展帧。本文针对实验室条件下完成的小型控制系统,采用11位标识符的标准帧格式。报文传输由4种不同的帧类型来表示和控制:数据帧、远程帧、错误帧、过载帧。
&&& ⑴ 标识符分配
在CAN协议中,标识符决定了报文的优先权,并且通过验收滤波器的设置决定通信的方式。同时也可以对标识符作定义,表示节点地址、自定义数据类型等。应用层协议的首先要根据系统的特点来分配标识符,在分配时的注意事项有:
&&& ① 系统中不同的报文具有不同的标识符。
② 标准帧格式,标识符长度为11位。发送顺序是ID10到ID0,其中,位定& 时和帧结构决定了标识符的高7位(ID10到ID4)必须不能全部为“隐性”
系统中的数据类型有:模拟量数据、数字量数据、设备参数等。
本文所设计的是小型系统,在11位的标识符(ID10~ID0)分配中, ID10和ID9表示数据类型。由于系统节点数小于16个,节点地址码需要4位,因此& 将ID8~ID5分配给各节点作为节点地址编码,ID4~ID0分配给各种报文的分类编号。
&&& ⑵ 报文帧格式
&&&&&&&&&&&&&& 应用层报文帧格式基本上采用的是数据帧、远程帧格式,但是对标识符做了进一步的规范,应用层帧格式分为3段。如下表-1所示:
&&&&&&&&&& 根据数据的功能和类型,按照这个应用层帧格式把数据组织,准备发送。在节点接收到数据时,按照相就的应用层帧格式把数据拆解,正确理解信息功能,使用数据。对接收到的报文,先判断远程请求位RTR,当RTR=0时,为数据帧,然后判断报文的意义并作处理;当RTR=1,则是远程帧,根据报文提供的数据类型、报文分类等信息组织发送该报文。在系统调试和维护中,操作员可能会对某节点的参数进行修改或查阅,这些信息对系统通信至关重要。为保障通信的准确性,本文采用的通信实现方法是点对点通信方式,上位机作为主节点,发起通话行为,对从节点报文进行读/写操作。点对点通信中,主节点通过发送数据帧、远程帧来和从节点通信。每次传送8个字节数据,基本能满足所有数据类型的要求。对于超过8个字节的数据,要有数据块附加的协议信息,以表示数据块的长度和各字节的顺序。可以把第一帧数据段的第一个字节定义成帧数和序号,如:高4位表示帧数,低4位表示帧的序号。在第一个字节不能满足时,可以用前两个字节定义成帧数和序号。为保障数据的准确,尽量不要传送很长的数据块。&&&&& 小结&&&& &本文所设计的在线升级系统描述了通过CAN总线对C单片机在线升级软件的实现方法。在实验过程中,为了保障通信的准确性和有效性,需要对通信数据进行报文校验,对出现错误的情况要定义错误处理等方面的内容。此在线升级系统适用于C8051F系列单片机,并且对其它单片机的在线编程设计也有重要的参考价值。&&&&& 参考文献&&&&& [1]& 潘琢金. C/2/3/4/5/6/7混合信号ISP FlASH微控制器&&&&&
&&&&&&&& &[2]& SILICON LABORATORIES. C Datasheet[S],2003&&&&& [3]& BOSCH公司. CAN Specification V2.0版本[S],2005&&&&& [4]& 邬宽明. CAN总线原理和应用系统设计[M], 北京航空航天大学出版社, 1996&&&& &[5]& 杨春杰等. CAN总线技术[M], 北京航空航天大学出版社, 2010&&&&& 主题:通过CAN总线实现C固件升级&&&&& 姓名:代志龙&&& 第二作者:杨铁梅 毕友明&&&&& 出生年月:1984年11月&&&&& 性别:男&&&&& 学历:硕士&&&&& 所属单位:太原科技大学&&&&& 职务职称:硕士研究生&&&&& 研究课题及研究方向:基于IAP技术的软POC底层开发(应用于工程机械和工程车辆)&&&&& 通讯地址:山西省太原市万柏林区瓦流路66号 太原科技大学 673信箱&&&&& 邮编:030024&&&&& 联系电话:&&&&&
Mail: Copyright by ;All rights reserved.通过CAN总线实现C固件升级_学术论文_资料中心_仪众国际
您好:欢迎您来到仪众国际!
|||||展会||||||人物|视频
四大功能平台
八大行业平台
21地方分站
||学术论文||谱图库||解决方案
通过CAN总线实现C固件升级
来源:通过CAN总线实现C固件升级&点击次数:358
通过CAN总线实现C固件升级
通过CAN总线实现C固件升级
&&&&&摘要:本文针对新型SOC(SystemonaChip)片上型混合信号的C单片机[1],通过对Flash存储结构、擦写过程、CAN总线通信应用层协议、软件流程等方面进行详细阐述,提出了一种通过CAN通信端口实现稳定性高、可靠性强的固件升级方案。&&&&&&Abstract:ThispaperintroduceasystemthatcanupgradesthefirmwareoftheC,aseriesoftheSOCSCM,andelaboratesfirmwarememoriesstructure,processofFlashclearandwrite,applicationlayerprotocolbyCAN-Bus,softwareprocess,thenputforwardahighstabilityandstrongblueprintforfirmwareupgradingbyCAN-Bus.
&&&&&Keywords:C;FLASHPCAN-buscommunicationprotocol
&&&&&0&引言
&&&&&随着电子科技的发展,单片机被广泛应用于工业自动控制、仪器仪表。实际应用中,系统会存在升级更新问题。在很多情况下,应用于车辆、工程机械等产品上的单片机不方便拆缷,因此系统设备固件的在线更新就成为了很重要的问题。
&&&&&&Silicon Lab公司的51系列单片机C芯片内部集成了完全支持CAN2.0A和CAN2.0B的CAN控制器。本文选用C单片机,设计了IAP(InApplicationProgram)应用软件,通过CAN通信端口,利用CAN总线通信从PC机接收程序更新代码,实现稳定可靠的固件升级。
&&&&&1&C单片机固件存储结构
&&&&&C是完全集成的混合信号片上系统型MCU,片上有64个数字I/O引脚,片内集成了一个CAN2.0B控制器,具有32个消息对象,每个消息对象有其自己的标识,有高速、流水线结构的与8051兼容的高速CIP-51内核(可达25MIPS),有内置的64KB的Flash程序存储器和6)的片内RAM,2个12位DAC,2个电压比较器,1个电压基准。
&&&&&IAP是指在主程序(用户应用程序)运行的过程中,获取新代码对Flash块、Flash寄存器Boot向量等进行擦除和重新编程的方法。C的MCU能实现IAP,是因为它能够通过运行于MCU中的用户代码对Flash存储器进行擦除、写入操作。C8051F系列单片机可以通过它的任何一个数字外围接口实现IAP,包括UART,SMBUS,SPI、CAN。C单片机的内部64KBFlash的存储结构可分为用于程序装载的引导(Bootloader)程序区和用户应用程序存储区两部分。
&&&&&2&固件升级的实现方法
&&&&&系统需要编写两个Project:一个是Bootloader,通过JTAG在线写入FLASH的引导程序区;另一个是应用程序,通过Bootloader写入应用代码区。当应用程序需要升级时,执行Bootloader程序。Bootloader把从CAN通信端口收到的新应用程序代码写入到应用代码区。本文中,引导程序区占用的是0x0的FLASH空间,应用程序区用剩余的FLASH空间。引导程序和应用程序的功能框图分别如下图-1和图-2所示。
&&&&&在更新FLASH程序代码时,必须先擦除,后写入。
&&&&&⑴&Flash擦除
&&&&&C单片机的Flash程序区[2]按页组织擦写,512字节为一页(page)。在删除用户程序区时,首先禁止所有中断,并且要使能程序删除位PSEE(PSCTL.1),同时使能PSWE(PSCTL=0x03,即PSWE=1,PSEE=1,页擦除模式),用C51语言的一个指针指向Flash程序区。如:charxdata*dataaddr=0x0000;
&&&&&程序区每擦除一页,地址指针加512,依此操作擦除程序区;擦除部分程序:
while(addr&0x0F000)&&&&&//0xF000为60KB
{&&*addr=0x00;&&&&&&&//空写,启动擦除
&&&for(i=0;i&10;i++)
&&&addr=addr+512;
&&&&&&&&&&&&&&&&&&//这样就把60KB的Flash旧应用程序擦除了。
&&&&&⑵Flash写入
&&&&&可以用软件使用MOVX指令对FLASH存储器编程,像一般的操作数一样为MOVX提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以允许FLASH写操作。这将使MOVX指令执行对FLASH的写操作而不是对XRAM写入。在用软件清除之前,PSWE位一直保持置位状态。为了避免对FLASH的误写,在PSWE为逻辑‘1’期间,禁止中断。
&&&&&写FLASH存储器可以清除数据位,但不能使数据位置‘1’只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的字节地址。FLASH存储器是以512字节的扇区为单位组织的,擦除操作作用于一个完整的FLASH页(将页里所有字节置为0xFF)。对FLASH的操作是:先擦除后写入;按页擦除,按字节写入。
&&&&⑶应用程序文件中需要加入将应用程序代码定向到新的地址的程序语句:
&&&&从而保证在程序更新完成后,从应用程序区执行。
&&&&&3&CAN通信协议
&&&&&CAN总线(ControllerAreaNetwork)是BOSCH公司在20世纪80年代中期,为现代汽车应用领域率先推出的一种多主机局部网,即控制器局域网。CAN总线本身只定义了ISO/OSI模型中的物理层和数据链路层,用户在实际应用中,要根据自己的需要定义应用层协议,来定义CAN报文中的11/29位标识符、8字节数据的使用,才能确保数据的高效传输。C具有控制器局域网(CAN)控制器,用CAN协议[3]进行串行通信。SiliconLabsCAN控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN)。SiliconlabsMCU片上集成的CAN控制器只是一个协议控制器,不能提供物理层驱动(即没有收发器),所以在使用时还需外加CAN总线收发器。
&&&&&CAN应用层协议[4]主要规定标识符的分配方案、过程数据交换方法、通信的实现方法等方面内容。对于在实验阶段,针对小型系统,节点数量比较少、数据各类不大的简单系统,选用CAN通信网络,定义了应用层协议。协议中需要定义信息帧的格式,使用CAN的多主站发送模式即可。应用层协议的定义[5],主要定义了以下几个方面:标识符的分配、报文帧格式、通信实现方法。CAN通信报文传输有两种不同的帧格式:标准帧和扩展帧,区别是两者的识别符场的长度不同,具有11位识别符的帧称为标准帧,而含有29位识别符的帧为扩展帧。本文针对实验室条件下完成的小型控制系统,采用11位标识符的标准帧格式。报文传输由4种不同的帧类型来表示和控制:数据帧、远程帧、错误帧、过载帧。
&&&&&&⑴标识符分配
&&&&&在CAN协议中,标识符决定了报文的优先权,并且通过验收滤波器的设置决定通信的方式。同时也可以对标识符作定义,表示节点地址、自定义数据类型等。应用层协议的首先要根据系统的特点来分配标识符,在分配时的注意事项有:
&&&&&①系统中不同的报文具有不同的标识符。
&&&②标准帧格式,标识符长度为11位。发送顺序是ID10到ID0,其中,位定时和帧结构决定了标识符的高7位(ID10到ID4)必须不能全部为“隐性”。
&&&&&系统中的数据类型有:模拟量数据、数字量数据、设备参数等。
&&&&&本文所设计的是小型系统,在11位的标识符(ID10~ID0)分配中,ID10和ID9表示数据类型。由于系统节点数小于16个,节点地址码需要4位,因此将ID8~ID5分配给各节点作为节点地址编码,ID4~ID0分配给各种报文的分类编号。
&&&&&&⑵报文帧格式
&&&&&&应用层报文帧格式基本上采用的是数据帧、远程帧格式,但是对标识符做了进一步的规&
在更新FLASH程序代码时,必须先擦除,后写入。
⑴&Flash擦除
C单片机的Flash程序区[2]按页组织擦写,512字节为一页(page)。在删除用户程序区时,首先禁止所有中断,并且要使能程序删除位PSEE(PSCTL.1),同时使能PSWE(PSCTL=0x03,即PSWE=1,PSEE=1,页擦除模式),用C51语言的一个指针指向Flash程序区。如:charxdata*dataaddr=0x0000;
程序区每擦除一页,地址指针加512,依此操作擦除程序区;擦除部分程序:
&可以用软件使用MOVX指令对FLASH存储器编程,像一般的操作数一样为MOVX提供待编程的地址和数据字节。在使用MOVX指令对FLASH存储器写入之前,必须将程序存储写允许位PSWE(PSCTL.0)设置为逻辑‘1’,以允许FLASH写操作。这将使MOVX指令执行对FLASH的写操作而不是对XRAM写入。在用软件清除之前,PSWE位一直保持置位状态。为了避免对FLASH的误写,在PSWE为逻辑‘1’期间,禁止中断。
&写FLASH存储器可以清除数据位,但不能使数据位置‘1’只有擦除操作能将FLASH中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的字节地址。FLASH存储器是以512字节的扇区为单位组织的,擦除操作作用于一个完整的FLASH页(将页里所有字节置为0xFF)。对FLASH的操作是:先擦除后写入;按页擦除,按字节写入。
⑶应用程序文件中需要加入将应用程序代码定向到新的地址的程序语句:
#pragmaINTVECTOR(0X1000)
#pragmaINTERVAL(3)
从而保证在程序更新完成后,从应用程序区执行。
&&&&3&CAN通信协议
&CAN总线(ControllerAreaNetwork)是BOSCH公司在20世纪80年代中期,为现代汽车应用领域率先推出的一种多主机局部网,即控制器局域网。CAN总线本身只定义了ISO/OSI模型中的物理层和数据链路层,用户在实际应用中,要根据自己的需要定义应用层协议,来定义CAN报文中的11/29位标识符、8字节数据的使用,才能确保数据的高效传输。C具有控制器局域网(CAN)控制器,用CAN协议[3]进行串行通信。SiliconLabsCAN控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN)。SiliconlabsMCU片上集成的CAN控制器只是一个协议控制器,不能提供物理层驱动(即没有收发器),所以在使用时还需外加CAN总线收发器。CAN应用层协议[4]主要规定标识符的分配方案、过程数据交换方法、通信的实现方法等方面内容。对于在实验阶段,针对小型系统,节点数量比较少、数据各类不大的简单系统,选用CAN通信网络,定义了应用层协议。协议中需要定义信息帧的格式,使用CAN的多主站发送模式即可。应用层协议的定义[5],主要定义了以下几个方面:标识符的分配、报文帧格式、通信实现方法。CAN通信报文传输有两种不同的帧格式:标准帧和扩展帧,区别是两者的识别符场的长度不同,具有11位识别符的帧称为标准帧,而含有29位识别符的帧为扩展帧。本文针对实验室条件下完成的小型控制系统,采用11位标识符的标准帧格式。报文传输由4种不同的帧类型来表示和控制:数据帧、远程帧、错误帧、过载帧。
&&&⑴标识符分配
在CAN协议中,标识符决定了报文的优先权,并且通过验收滤波器的设置决定通信的方式。同时也可以对标识符作定义,表示节点地址、自定义数据类型等。应用层协议的首先要根据系统的特点来分配标识符,在分配时的注意事项有:
&&&①系统中不同的报文具有不同的标识符。
②标准帧格式,标识符长度为11位。发送顺序是ID10到ID0,其中,位定&时和帧结构决定了标识符的高7位(ID10到ID4)必须不能全部为“隐性”
系统中的数据类型有:模拟量数据、数字量数据、设备参数等。
本文所设计的是小型系统,在11位的标识符(ID10~ID0)分配中,ID10和ID9表示数据类型。由于系统节点数小于16个,节点地址码需要4位,因此&将ID8~ID5分配给各节点作为节点地址编码,ID4~ID0分配给各种报文的分类编号。
&&&⑵报文帧格式
&&&&&&应用层报文帧格式基本上采用的是数据帧、远程帧格式,但是对标识符做了进一步的规范,应用层帧格式分为3段。如下表-1所示:
&&&&&&根据数据的功能和类型,按照这个应用层帧格式把数据组织,准备发送。在节点接收到数据时,按照相就的应用层帧格式把数据拆解,正确理解信息功能,使用数据。对接收到的报文,先判断远程请求位RTR,当RTR=0时,为数据帧,然后判断报文的意义并作处理;当RTR=1,则是远程帧,根据报文提供的数据类型、报文分类等信息组织发送该报文。在系统调试和维护中,操作员可能会对某节点的参数进行修改或查阅,这些信息对系统通信至关重要。为保障通信的准确性,本文采用的通信实现方法是点对点通信方式,上位机作为主节点,发起通话行为,对从节点报文进行读/写操作。点对点通信中,主节点通过发送数据帧、远程帧来和从节点通信。每次传送8个字节数据,基本能满足所有数据类型的要求。对于超过8个字节的数据,要有数据块附加的协议信息,以表示数据块的长度和各字节的顺序。可以把第一帧数据段的第一个字节定义成帧数和序号,如:高4位表示帧数,低4位表示帧的序号。在第一个字节不能满足时,可以用前两个字节定义成帧数和序号。为保障数据的准确,尽量不要传送很长的数据块。&&&&&小结&&&&&本文所设计的在线升级系统描述了通过CAN总线对C单片机在线升级软件的实现方法。在实验过程中,为了保障通信的准确性和有效性,需要对通信数据进行报文校验,对出现错误的情况要定义错误处理等方面的内容。此在线升级系统适用于C8051F系列单片机,并且对其它单片机的在线编程设计也有重要的参考价值。&&&&&参考文献&&&&&[1]&潘琢金.C/2/3/4/5/6/7混合信号ISPFlASH微控制器&&&&&
&&&&&[2]&SILICONLABORATORIES.CDatasheet[S],2003&&&&&[3]&BOSCH公司.CANSpecificationV2.0版本[S],2005&&&&&[4]&邬宽明.CAN总线原理和应用系统设计[M],北京航空航天大学出版社,1996&&&&&[5]&杨春杰等.CAN总线技术[M],北京航空航天大学出版社,2010&
&&&&下载该资料需要1积分&&&&已下载0次
温馨提示:立即评价可以回赠积分
· · · · · · · · · ·
& 暂无评论内容!
国际仪媒体
环球仪器仪表
|广告服务|资质证明|友情链接|联系我们|法律声明|客户留言
()版权所有:北京清木源科技发展有限公司&@&广告总代理:&仪众天下(北京)广告传媒有限公司
&&nbsp新闻更新列表&&nbsp技术应用更新列&&nbsp学术论文更新列表&&nbsp资料更新列表
广告直拨:王小姐& 010- & && 常小姐& 010-&&&
环球仪器仪表杂志:郭先生& 010-
媒体合作/投稿:韦小姐& 010-&& 会展合作:郭先生&&窦小姐& 010-

我要回帖

更多关于 c8051f040型号 的文章

 

随机推荐