0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

电子设计 作者:电子设计 2018-09-05 09:20 次阅读

0引言

分散型控制系统中的现场终端一般由控制器和各检测模块构成,它们之间通过一定的通信网络建立数据的交换链路。这种系统具有高可靠、开放性、灵活性、协调性、易维护等优点。然而,该分散型系统也具有终端数量多、分布范围广的特点。一旦终端系统软件存在缺陷或用户提出新的功能和指标要求时,其升级、维护的工作量和成本都非常大。本文针对上述情况,设计了一种方便、灵活、快速及稳定地对MCU节点进行在线更新的机制。基于LPC11C24微控制器组成的CAN网络,采用IAP编程技术(In Application Programming),实现了对目标节点MCU的软件更新功能。

1 LPC11C24单片机和CAN总线

恩智浦半导体(NXP)推出业界首款内嵌易用型片上CANopen驱动,集成高速CAN物理层收发器的微控制器LPC11C22和LPC11C24.作为一种独特的系统级封装解决方案,LPC11C22和LPC11C24集成了TJF1051CAN收发器,在低成本LQFP48封装中实现了完整的CAN功能。

控制器局域网络(Controller Area Network,CAN)是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。它是国际上应用最广泛的现场总线之一。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。

2在线更新机制架构

系统架构主要由2部分组成:由各个MCU组成的CAN网络;安装在PC机上的USB-CAN通信卡,可以使PC机连上CAN网络,进行数据通信,系统构架如图1所示。软件也包括2部分:运行在PC机的上位机软件,提供用户操作界面,将应用程序代码通过CAN总线发送给节点;运行在节点的启动程序,主要是响应下载命令,接受代码,把代码写入FLASH,引导应用程序。

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

图1 系统架构

3在线更新机制的设计

3.1 IAP编程技术

IAP是应用在FLASH程序存储器的一种编程模式,即在某段程序的控制下完成对FLASH的读/写操作,可以控制对某段、某页、甚至某个字节的读写操作。

LPC11C24单片机支持并提供9条IAP命令:

①准备写操作的扇区;

②将RAM内容复制到FLASH;

③擦除扇区;

④扇区查空;

⑤读器件ID;

⑥读Boot代码版本;

⑦比较;

⑧重新调用ISP;

⑨读UID.

3.2 FLASH空间分配

LPC11C24有32KB的FLASH空间,共分为8个扇区,每个扇区的大小为4KB.为了使程序更新和应用程序更加独立,本文将FLASH空间分为3个区,分别为启动程序区,应用程序区,用户数据区。

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

其中①启动程序是一段特定的驻留代码,专门用于接收来自主机新的代码,将其烧写到相应的FLASH空间,完成后跳转到应用代码区去执行新的程序,代码比较少,编译生成的映像文件小于4KB,每次系统上电或重启后先执行启动程序。

②应用程序是真正实现用户功能的代码。

③用户数据区是用于存储应用程序的一些设置和数据。

3.3中断向量表重映射与复制

LPC11C24支持32个向量中断,中断向量表默认位于FLASH的第一个4KB空间,地址从0x00000000~0x00000079.按照前面的设计,启动程序占用第一个4KB的空间,当跳转到应用程序时,实际的中断向量表是位于0x00001000~0x00001079的空间。但LPC11C24系列的单片机不支持自定义中断向量表的地址,只支持将中断向量表从FLASH重映射到RAM.

为了能让应用程序实现正常的中断处理,启动程序在跳转到应用程序之前还需要将应用程序的中断向量表复制并映射到RAM[10].

代码实例如下:

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

3.4启动程序和应用程序的设计与固化

程序都在Keil for ARM集成环境下编写并编译。

首先在Keil软件下新建基于LPC11C24的工程,并配置FLASH和SRMA的起始地址和大小。具体如表2所示。

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

3.5启动程序与应用程序之前的跳转

在启动程序中定义应用程序的地址,#defineAPP_CODE_ADDR (0x00001000),程序跳转的代码采用汇编语言编写,代码实例如下:

基于LPC11C24微控制器组成的CAN网络,实现对节点MCU的软件更新

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6779

    浏览量

    147549
  • 单片机
    +关注

    关注

    5996

    文章

    43940

    浏览量

    620329
  • 控制器
    +关注

    关注

    112

    文章

    15127

    浏览量

    170821
  • CAN总线
    +关注

    关注

    145

    文章

    1806

    浏览量

    129562
收藏 人收藏

    评论

    相关推荐

    客车网络控制CAN/CAN网桥设计

    客车网络控制CAN/CAN网桥设计摘要: 本文以LPC2119 微控制器为核心设计了客车
    发表于 12-01 10:29

    求助lpc11c24开发板

    请问我的lpc11c24开发板接上u***转串口线为什么在电脑看不到com口,之前装了51的u***转串口的驱动,这个开发板没有附带驱动。请问这个问题怎么解决啊?谢谢
    发表于 08-18 00:12

    LPC微控制器产品族谱

    全新恩智浦在微控制器领域提供全系列、多平台的MCU产品。其中基于ARM Cortex-M内核的LPC产品也有多年历史。LPC系列产品具有丰富的产品类型,强劲的产品性能,更是Kineti
    发表于 06-13 11:34

    利用XC2300系列微控制器实现CAN网络安全

    全新的XC2300系列微控制器专为安全关键系统而设计,可支持多个并行的CAN网络。网关功能实现了不同CAN
    发表于 12-07 10:09

    LPC2194CAN控制器和ARM微控制器相关资料分享

    LPC2194是飞利浦公司生产的一款CAN控制器和ARM微控制器。它为四面64脚封装。自带4路CAN控制
    发表于 04-22 07:37

    分享一款不错的LPC2294 CAN总线主节点设计方案

    本文提出一种基于LPC2294微控制器,使用μCLinux作为操作系统的CAN节点软硬件设计方案。主节点通过扩展SRAM、FLASH提高了
    发表于 05-25 06:59

    业界首个集成CAN收发微控制器解决方案

    LPC11C00宣传页:业界首款集成CAN收发微控制器解决方案
    发表于 12-08 07:07

    以8051微控制器和82527独立CAN总线控制器为核心组成

    介绍一种以8051微控制器和82527独立CAN总线控制器为核心组成CAN总线智能传感器节点
    发表于 07-17 08:41 25次下载

    客车网络控制CAN/CAN网桥设计

    本文以LPC2119 微控制器为核心设计了客车网络控制CAN/CAN 网桥,
    发表于 08-04 14:39 22次下载

    恩智浦推出首款内嵌易用型片上CANopen驱动微控制器

    恩智浦半导体近日宣布推出业界首款内嵌易用型片上CANopen驱动,集成高速CAN物理层收发器的微控制器LPC11C22和LPC11C24
    发表于 01-19 08:14 858次阅读

    NXP推出首款LPC11C22和LPC11C24整合式CAN收发器微控制器解决方案

    恩智浦半导体(NXP Semiconductors N.V.)宣布推出业界首款内嵌易用型on-chip CANopen驱动器的整合式高速CAN实体层收发器与微控制器LPC11C22和LPC11
    发表于 01-26 22:05 4715次阅读

    基于LPC2294的CAN总线主节点设计

    为引入CAN总线技术以实现运动控制系统的网络化,提出了基于LPC2294的CAN总线主
    发表于 06-21 15:17 61次下载
    基于<b class='flag-5'>LPC</b>2294的<b class='flag-5'>CAN</b>总线主<b class='flag-5'>节点</b>设计

    基于LPC2294的CAN总线智能节点设计

    CAN总线是一种应用广泛的实时性现场总线。本文提出了一种基于具有ARM7DMI内核的32位ARM微控制器LPC2294的CAN总线智能节点
    发表于 05-29 09:27 3608次阅读
    基于<b class='flag-5'>LPC</b>2294的<b class='flag-5'>CAN</b>总线智能<b class='flag-5'>节点</b>设计

    LPC11CXX CAN ISP升级方法

    基于TinyM0-CAN和TinyM0-CAN-T开发套件讲解LPC11C1x和LPC11C2x系列微控制器
    发表于 09-27 16:34 8次下载

    基于LPC2292微控制器CAN控制器实现车辆行驶监控系统的设计

    选用带有ARM7TDMI-S内核的LPC2292微控制器,可实现对车速、转速信号、开关量信号以及水温、刹车气压、轮胎压力等模拟量信号的采集、处理以及数据的实时存储和显示,通过串口、USB接口可以
    的头像 发表于 04-02 09:13 2217次阅读
    基于<b class='flag-5'>LPC</b>2292<b class='flag-5'>微控制器</b>和<b class='flag-5'>CAN</b><b class='flag-5'>控制器</b><b class='flag-5'>实现</b>车辆行驶监控系统的设计