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

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

3天内不再提示

基于J1939协议和扩展器件实现CAN扩展节点的设计

电子设计 来源:电子设计工程 作者:金佛荣;唐臻宇; 2020-03-14 08:07 次阅读

1 、引言

CAN总线以其成本低廉、通信实时性好、纠错能力强等优点广泛应用于汽车工业电力系统变电站自动化、智能大厦等系统。J1939协议是SEA于1998年提出的,主要应用于运输、农林机车、船舶等大型交通工具。Microchip公司推出的MCP2502X/2505X CAN I/O系列扩展器可独立作为CAN扩展节点,通过配置实现不同的CAN协议。本文以J1939为通信协议,基于该器件设计CAN扩展节点,方便实现汽车的前端测控功能,并且与整个车载CAN网络相连。

2、 MCP2502X/05X CAN I/O扩展器简介

MCP2502X/5X器件可作为CAN系统的I/O扩展器使用,支持CANV2.0B Active,可在原始数据与CAN报文之间进行协议转换,总线速率最大可达1 Mb/s。MCP2502X/5X器件具有多个外设,包括数字I/O、4通道10位A/D转换器和能够在引脚状态变化时自动发送报文的PWM输出,包括超过预设门限值的模拟输入,提供1个屏蔽寄存器和2个接收过滤器,使得在设计系统时与器件响应标识符相关部分具有最大限度的灵活性。该器件也可配置为在任何时候发生一个或多个错误时,能够自动发送唯一报文。可在非易失性存储器中对器件进行预编程,这样器件在配置过程可默认为特定配置。

3、扩展节点配置

基于MCP2502X/5X的CAN网络必须有一个具有CAN接口CPU做为主节点,MCP2502X/05X只能作为扩展节点,通过配置完成工作。器件配置方法有两种:预编程用户寄存器和CAN报文在线配置。MCP2502X/05X器件的用户E-PROM出厂时是空白的,所以在上电前要对其预编程,编程结果在上电复位后自配置为默认配置。为了与主节点之间实现基于J1939协议通信,上电前先按J1939标识符格式对CAN模块寄存器预编程。对MCE2502X/05X器件的用户寄存器预编程有三种方法,分别为用MPLAB IDE配套PROMATE II编程器;在线串行编程(ICSP);根据ICSP的原理设计专门的编程电路,配合微芯公司的编程软件MCP250XXProgrammer对器件预编程。这里采用第三种方法。

3.1 预编程用户寄存器

3.1.1 预编程电路设计

编程需要VDD(2.0~6.0 V)和VPP(12~14 V)两个电源,如图1所示。图1中,通用开关稳压器LM78S40CN输出可调的1.25~40 V的稳定电压产生所需的VPPPC机通过场效应管MTSF2P02控制VPP和VDD的通断,实现编程逻辑。

基于J1939协议和扩展器件实现CAN扩展节点的设计

图2为编程数据、时钟逻辑电路以及编程电路与PC机的接口电路。编程电路通过并口与PC机连接。在编程电路和PC机连接后,利用Microchip公司提供的具有形象图形化界面的软件(MCP250X X Programmer)方便对器件预编程。

基于J1939协议和扩展器件实现CAN扩展节点的设计

3.1.2 预编程CAN相关寄存器

预编程CAN相关寄存器就是实现不同CAN协议,并通过CAN报文配置和操作其他寄存器。MCP2502X/05X系列器件在实现对器件本身控制的前提下,用户通过配置CAN模块相关寄存器,并根据实际情况设计协议的具体内容。扩展节点的CAN协议必须与主节点的CAN协议相匹配。该设计采用J1939协议标准配置CAN模块寄存器,由于CAN扩展节点与主节点之间要求点对点通信,所以采用PDU1格式,其29位标识符各位的含义如图3所示。

基于J1939协议和扩展器件实现CAN扩展节点的设计

图3中,源地址的高5位可编程,低3位与扩展器硬件相关联,用于实现特定的CAN命令,比如将报文源地址低3位写“000”,读取A/D转换器的寄存器。PS(PDU格式)要小于240,其他各位由应用层确定。按照协议标识符格式写配置寄存器。MCP2502X/5X器件包含3个独立的发送报文ID:TX-ID0、TXID1和TXID2。

配置相应的寄存器预定义各种输出报文中每一个报文的数据长度码以及直接从器件外设寄存器输入待发送数据。器件按照预定义格式发送报文。配置接收屏蔽寄存器来定义CAN ID与可编程过滤器相比较的位。在29位标识符格式中,RXMEID0寄存器的EID2:EID0位设置为无关位。MCP2502X/5X定义2个独立的接收过滤器:RXF0和RXF1。其中,RXF0用于信息请求报文,而RXF1用于输入报文。按照预定标识符格式对过滤器进行预编程配置,过滤器的每一位与CAN ID的位相对应。为了接收报文,CAN ID中的每一位(相应屏蔽位设置为1时)必须和对应的过滤器位相匹配。忽略未满足屏蔽/过滤条件的报文。同时扩展节点配置为自动发送模式,即当采集输入信号变化或经一定时间间隔将自动发送信息。

3.2 用CAN报文配置扩展器

由于配置寄存器通过CAN总线访问,因此除了采用预编程配置扩展器外,通信建立后,主节点通过命令报文配置器件,也可在线修改已配置的寄存器。命令报文种类由源地址的低3位确定。

4 、扩展节点硬件结构及系统网络结构

图4为扩展节点的硬件结构,MCP2502X/05X器件通过CAN驱动器与CAN总线相连。图5为系统网络结构。

基于J1939协议和扩展器件实现CAN扩展节点的设计

CAN总线本身是一种多主总线,理论上每个节点都可作为主节点,但基于MCP25132X/5X器件的CAN网络中必须有一个具有CAN接口的CPU作为主节点,来执行控制算法,并做出相应控制决策。而扩展节点只能作为从节点。其他节点则通过主节点与对应的从节点通信。

5 、主节点软件设计

在主节点软件设计过程中,将主节点和其对应的扩展节点看成同一个ECU(电控单元)的不同CA(控制器应用程序),并且地址可仲裁,主节点与扩展节点之间点对点通信,总线上所有ECU都遵循J1939协议进行通信,其他ECU通过主节点访问扩展节点。

主节点软件由主处理、接收处理和发送处理3部分构成。其中,接收处理负责接收与本ECU地址相匹配的消息,并处理地址声明消息和地址请求消息,将应用消息填充到接收缓冲区;发送消息负责将发送缓冲区的数据发送到CAN总线。图6为主处理软件流程。

基于J1939协议和扩展器件实现CAN扩展节点的设计

6、 结论

基于MCP2502X/05X器件设计CAN扩展节点无需大量编程,只需配置相关寄存器,连接简单电路就能实现与主节点的通信。在无需微控制器下扩展一个CAN节点,用户自行设置协议内容,非常灵活,其丰富的外设满足一般测控需要。将MCP2502X/05X器件与J1939协议相结合,可方便设计汽车的前端测控模块,并与整个车载CAN网络相连。这种设计方案系统结构简单、成本降低、提高信号传输的可靠性,在车载CAN网络,尤其是前端测控模块中具有广泛的应用前景。

责任编辑:gt


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

    关注

    27

    文章

    8218

    浏览量

    142179
  • 寄存器
    +关注

    关注

    30

    文章

    5057

    浏览量

    117850
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2476

    浏览量

    459535
收藏 人收藏

    评论

    相关推荐

    基于J1939协议的组合仪表的设计与实现

    基于J1939协议的组合仪表的设计与实现摘要:本文首先介绍了CAN 总线和J1939 协议,然后
    发表于 05-17 11:45

    DSP28335实现J1939协议???

    请问DSP28335自带CAN模块能否用来实现J1939协议通信?
    发表于 09-10 20:38

    J1939基础入门知识分享

    通信。J1939描述了CAN总线的一种网络应用,包括CAN网络物理层定义、数据链路层定义、应用层定义、网络层定义、故障诊断、和网络管理。在SAE J1939
    发表于 04-11 07:00

    基于LabVIEW和J1939协议CAN总线通讯平台构建

    最近在公司搭建J1939协议CAN通讯,查了资料,非常不错,可以学习一下
    发表于 04-24 09:58

    SAE J1939 协议源代码分享

    发现一个刚开源的J1939协议栈,亲们相关地址如下:源代码下载地址github下载地址:https://github.com/XeiTongXueFlyMe/J1939源代码分析网址:http
    发表于 07-30 11:39

    J1939协议理解

    J1939协议理解
    发表于 05-06 15:23

    是否有适用于STM8的CAN Open和CAN J1939堆栈呢

    我们要求在 STM8AF5288T 上支持 CAN Open 和 CAN J1939。我们找到了一个网站:Simma Software,它提供了这种支持,但我们想确认 STM 是否正式支持其用于
    发表于 12-14 07:29

    基于J1939协议的组合仪表的设计与实现

    摘要:本文首先介绍了CAN 总线和J1939 协议,然后重点介绍了基于J1939 协议应用AT90CAN
    发表于 05-16 18:55 35次下载

    基于J1939的汽车CAN总线教学实验系统

    针对J1939协议培训要求,构建了一个基于J1939协议的汽车总线培训实验系统。系统硬件由计算机、Kvaser CAN总线分析仪以及基于
    发表于 08-06 10:25 50次下载

    基于MCP2502X的CAN总线节点设计

    针对当前CAN总线及J1939协议在汽车电子中的广泛应用,给出一种通过配置在低成本CAN I/O扩展器MCP2502X/05X
    发表于 12-29 18:08 28次下载

    CAN高层协议J1939的基础和应用以及开发介绍

    CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN
    的头像 发表于 04-02 10:45 4146次阅读
    <b class='flag-5'>CAN</b>高层<b class='flag-5'>协议</b><b class='flag-5'>J1939</b>的基础和应用以及开发介绍

    关于CAN的高层协议J1939的基础和应用以及开发详解

    CAN做为应用比较广泛的通信总线,受到了越来越多的客户喜欢和青睐,广泛应用于工业和汽车,常见的高层协议有CANopen,J1939,DeviceNet等,在公众号曾经分享过超过15篇有关CAN
    的头像 发表于 04-19 10:17 5976次阅读
    关于<b class='flag-5'>CAN</b>的高层<b class='flag-5'>协议</b><b class='flag-5'>J1939</b>的基础和应用以及开发详解

    J1939协议理解

    PDU是J1939传输数据的格式,它基于CAN协议扩展帧传输方式。即它的标识符是29位的。蚀优先级:最高0(000)设置到最低7(111)。所有控制报文的缺省优先级是3(011)
    发表于 04-20 09:56 6次下载

    J1939协议理解

    J1939协议基础知识讲解。
    发表于 05-06 15:34 9次下载

    基于恩智浦MPC5744P的SAE J1939协议栈开发

    的,MPC5744P 支持CAN2.0B。CAN 的高层协议J1939 是基于CAN2.0B的扩展
    的头像 发表于 09-24 16:15 7821次阅读
    基于恩智浦MPC5744P的SAE <b class='flag-5'>J1939</b><b class='flag-5'>协议</b>栈开发