基于CAN总线的EV电控系统通信的设计与开发
“kwt2000”通过精心收集,向本站投稿了10篇基于CAN总线的EV电控系统通信的设计与开发,下面小编给大家整理后的基于CAN总线的EV电控系统通信的设计与开发,供大家阅读参考。
篇1:基于CAN总线的EV电控系统通信的设计与开发
1.1EV控制系统CAN总线通信原理
在EV控制系统中,控制器包括:制动控制器(ABS/ASR)、动力总成控制器PTCM(PowertrainControlModule)、动力蓄电池管理器BPCM(BatteryPackControlModule)、驱动电机控制器DMCM(DriverMotorControlModule)、动力转向控制器及仪表控制器IPCM(1nstrumentPackControlModule)等。在各控制器之间通过CAN通信网络交换数据,实现数据共享并使各自的控制性能都有所提高。图1为EV各控制器之间的CAN通信原理图。
篇2:基于CAN总线的EV电控系统通信的设计与开发
根据CAN通信原理,硬件主要由CAN控制器和CAN驱动器组成。动力控制总成PTCM和电池管理控制模块BPCM采用32位高性能微处理器MC68376上集成的CAN控制器;仪表控制器IPCM模块采用FUJ32位高性能微处理器上集成的CAN控制器;电机控制DMCM模块、动力转向控制模块和制动控制模块采用SJA1000控制器。CAN驱动器全部采用PCA82C250。
图2是EV的`车载CAN通信网络节点连接图,每个总线末端均接有用RL表示的抑制反射的负载电阻。负载电阻连接在CAN-H和CAN-L之间,对于不带集成终端电阻(通常使用)的ECU,此电阻为60Ω;对于带有集成终端电阻的ECU,此电阻为120Ω。终端负载电阻最好置于总线末端,取消ECU内部的负载电阻RL,因为如果其中一个ECU从总线断开,总线将丢失终端。
下面以32位高智能微处理器MC68376为例介绍EV电控系统CAN通信的设计。
1.3基于MC68376的EV电控系统CAN通信的设计[6~7]
1.3.1MC68376内嵌的TouCAN的基本特性
TouCAN模块是MC68376内嵌的实现CAN通信协议的CAN控制器。其最高传输速度高达1Mbit/s,可同时支持CAN协议中的标准(11位)和扩展(29位)ID两种报文模式。TouCAN模块包含16个具有发送和接收功能的报文缓冲器。此外,它还具有报文过滤功能,用于对接收到的报文ID码和预先设定的接收缓冲区ID码进行比较,从而确定接收到的报文是否有效。
图3为TouCAN的结构框图,其中CANTX和CANRX分别为发送和接收引脚。
1.3.2MC68376CAN通信硬件接口的设计
图4是CAN节点硬件接口电路原理图,其中CAN+5V是CAN总线接口电路专用的电源,实现CAN总线电源与CPU电源的隔离,使CAN系统的电压波动不影响CPU的正常工作电压。6N137为光电耦合芯片,可实现电信号之间的电气隔离。
PCA82C250用来提供对总线的差动发送能力和对CAN控制器的差动接收能力,完全与ISO11898标准兼容。在运动环境中,PCA82C250具有抗瞬变、射频和电磁干扰的性能,内部的限流电路在电路短路时具有对传送输出级进行保护的功能。
图6
1.3.3MC68376CAN通信软件的设计
各控制器按规定格式和周期发送数据(车速、蓄电池电压、电流和温度等)到总线上,同时也要接收其它控制器的信息。总线上其它控制器根据需要各取所需的报文。对于接收数据,本系统采用中断的方式实现,一旦中断发生,即将接收的数据自动装载到相应的报文寄存器中。此时还可采用屏蔽滤波方式,利用屏蔽滤波寄存器对接收报文的标识符和预先在接收缓冲器初始化时设定的标识符进行有选择地逐位比较,只有标识符匹配的报文才能进入接收缓冲器,那些不符合要求的报文将被屏蔽于接收缓冲器外,从而减轻CPU处理报文的负担。并且不同数据放人不同的报文寄存器中,因此在接收中断服务程序中即可很容易地判断出中断是由哪个接收报文引起的。
图5为基于MC68376的CAN通信程序流程图。
图7
2CAN通信在EV电控系统开发中的应用
EV电控系统CAN通信建立了各控制器之间的通信网络,实现了各控制器之间以及与仪表盘的信息互通。通过开发的在线标定系统和监测系统,在PC机上可以实时监测各控制器的参数。图6和图7为利用CAN通信设计的镍氢电池实时监测系统获得的充放电特性曲线。CAN通信数据传输速率为500kbit/s,该系统实时地反映了镍氢电池充放电的特性。
CAN总线作为一种可靠的汽车计算机网络总线已开始在先进的汽车上得到应用,使得各汽车计算机控制单元能够通过CAN总线共享所有的信息和资源,达到简化布线、减少传感器数量、避免控制功能重复、提高系统可靠性和可维护性、降低成本、更好地匹配和协调各个控制系统的目的。这样使得汽车的动力性、操作稳定性、安全性都上升到新的高度。随着汽车电子技术的发展,具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN总线通信协议必将在汽车电控系统中得到更广泛的应用。
篇3:基于CAN总线的EV电控系统通信的设计与开发
摘要:以MC68376集成CAN控制器为例,阐述了纯电动车(Eleotdc Vehicle,简称EV)电控系统采用SAEJl939通信协议实现CAN总线通信的设计要点,给出了基于CAN通信的动力蓄电池监控系统的电池充放电特性曲线。实验证明CAN总线通信速率高、准确、可靠性高。
关键词:电控系统 CAN总线 通信 MC68376
随着汽车上电子控制装置越来越多,车身布线也愈来愈复杂,使得运行可靠性降低,故障维修难度加大。为了提高信号的利用率,要求大批数据信息能在不同的电控单元中共享,同时汽车综合控制系统中大量的控制信号也能实时进行交换。但是,传统的.汽车电子系统采用串行通信的方法,如用SAE1587等标准来实施,通信速度较慢、传递的数据量少,远不能满足高速通信的需求。近年来CAN总线已发展成为汽车电子系统的主流总线,并有基于CAN总线通信协议的车辆应用层通讯标准SAEJ1939[1~4]产生。
图1
利用CAN总线开发的纯电动车(EV)电控系统的通信网络具有通信速率高、准确、可靠性高的特点,易于整车控制网络的连接和管理,为传感器信号、各个控制单元的计算信息和运行状态的共享以及随车或离车故障诊断等提供了基础平台,同时开发基于该通信网络的控制器在线标定和实时监测系统也成为可能。
本文采用基于CAN2.OB的SAEJ1939通信协议,以MC68376为例,设计开发了应用于EV电控系统的CAN总线通信系统。
图2
篇4:基于CAN总线的EV电控系统通信的设计与开发
1.1 EV控制系统CAN总线通信原理
在EV控制系统中,控制器包括:制动控制器(ABS/ASR)、动力总成控制器PTCM(Powertrain Control Module)、动力蓄电池管理器BPCM(Battery PackControl Module)、驱动电机控制器DMCM(Driver Motor Control Module)、动力转向控制器及仪表控制器IPCM(1nstrument Pack ControlModule)等。在各控制器之间通过CAN通信网络交换数据,实现数据共享并使各自的控制性能都有所提高。图1为EV各控制器之间的CAN通信原理图。
1.2 EV电控系统CAN通信的设计
根据CAN通信原理,硬件主要由CAN控制器和CAN驱动器组成。动力控制总成PTCM和电池管理控制模块BPCM
[1] [2] [3]
篇5:基于CAN总线的机载通信系统协议设计
基于CAN总线的机载通信系统协议设计
在机载通信系统中,将各个通信设备视为独立节点,通过CAN总线进行信息交换,有利于提高通信系统的可靠性与实时性,减少电气连线的复杂性.提出了一种基于CAN2.0B的应用层协议设计方法,详细介绍了协议中报文格式的分配、大数据量的分段传输以及节点间的.通信方式.通过仿真测试,验证了应用层协议设计的可行性.
作 者:马建萍 作者单位:西安航空计算技术研究所,西安,710068 刊 名:弹箭与制导学报 PKU英文刊名:JOURNAL OF PROJECTILES, ROCKETS, MISSILES AND GUIDANCE 年,卷(期): 29(5) 分类号:V243 关键词:CAN总线 机载通信系统 应用层协议 报文格式篇6:CAN总线与以太网互连系统设计
CAN总线与以太网互连系统设计
摘要:介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太网与现有CAN总线网的直接连接。保证管理监控层(以太网)与生产测控层(CAN总线网)之间的连接,使得上下层数据能方便地通信。关键词:现场总线CAN总线以太网
在大型企业自动化系统中,上层企业管理层和生产监控层一般都采用以太网和PC机,而下层车间现场则采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡或并行打印口的EPP接口卡实现。这种连接方式成本高,开发周期长。针对这种情况,笔者设计一种单独的CAN以太网网关互连系统,成功地实现以太网与现有CAN总线网的直接数据互联。
1系统结构
系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关、以太网信息管理终端(如监控平台和网络数据库等),如图1所示。
CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层需通过数据网关。嵌入式透明SX52网关就是为此而设计的。
透明式网关在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络应用层的数据进行传输,它对通信数据的具体实际意义不做任何解释。透明式网关由通信处理器、CAN总线控制器和以太网控制器三部分组成。其中SX52单片机为核心处理器,它实现了CAN控制网络与以太网之间的协议转换。以太网信息管理层的控制指令发送到嵌入式透明SX52网关,将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。
以太网信息管理终端是一个根据用户的具体要求而设计的用户层应用软件。它可以是一个WIN32监控程序或网络数据库(记录CAN节点设备数据)软件等;甚至可能是CAN节点设备的`服务器软件,为设备提供较复杂的数据处理工作。
2硬件设计
系统硬件分为两大部分:CAN总线网络设备接口设计和嵌入式透明SX52网关设计。
2.1CAN总线网络设备接口设计
CAN总线网络设备接口设计较网关设计简单。它是在完成设备功能的基础上加入一个CAN通信控制器接口芯片,实现与CAN总线网络的连接。考虑到开发成本和灵活性,笔者在设计中选用PHILIPHS公司的独立CAN通信控制器SJA1000芯片和CAN总线收发器82C250芯片。其结构如图2所示。
2.2嵌入式透明SX52网关设计
嵌入式透明网关设计是整个系统设计的核心。其结构如图3所示。它由CAN控制器协议转换模块和以太网控制器协议转换模块两部分组成。网关硬件中SX52微处理器起核心作用。它是由美国Ubicom公司研制的高速可配置通信控制器,其处理速度相当高。在外接100MHz时钟时,指令执行速度可达100MIPS。它可实现TCP/IP协议栈中的ARP、IP、UDP、TCP、HTTP、SMTP、ICMP等网络协议。
CAN控制器协议转换模块硬件电路原理如图3左框图。它由三部分组成:微控制器SX52、独立CAN通信控制器SJA1000、CAN总线收发器82C250。其中SX52为唯一的CPU核心,负责SJA1000的初始化,通过读写SJA1000内部寄存器实现数据的接收、发送和错误处理等。PCA82C250则提供对总线的差动发送能力和对CAN控制器的差动接收能力。
以太网控制器协议转换模块主要由微控制器SX52、以太网通信控制器RTL8019AS和隔离滤波器FB2002组成。RTL8019AS是台湾Realtek公司制造的一种高集成度的全双工10Mbps以太网控制芯片,实现了基于Ethernet协议的MAC层的全部功能,内置16KB的SRAM、双DMA通道和FIFO完成数据包的接收和发送功能。在网关设计中,使用跳线模式(JP置为高)硬配置RTL8019AS为8位模式。使用RTL8019的低5位地址线A0~A4以及低8位数据线D0~D7。SX52的B口的B0~B4脚作为地址线连接RTL8019AS的低5位地址线,B5~B7作为控制线分别连接读写时序控制脚IORB、IOWB、IOCHRDY;C口作为数据线连接RTL8019AS的低8位数据线;A口保留,用作日后扩展。图3中
AT24C64为8KBEEPROM,主要用来保存嵌入式透明SX-52网关的配置信息,如网关IP地址、MAC地址和SJA1000的ID网络标示符、网络掩码AMR和总线定时(BTR0、BTR1)等。这样,可以灵活方便地修改网关参数,适应不同环境,同时也考虑到以后的扩展。
RTL8019AS除与SX52连接外,还将其网络收发器的4根引脚TPOUT+、TPOUT-、TPIN+、TPIN-通过外接的隔离滤波器FB2002与以太网相连。采用隔离滤波器FB2002是为了提高网络通信的抗干扰能力。
3软件设计
整个互联系统的软件设计可以分为三部分:CAN总线设备接口通信程序、透明网关协议转换程序和以太网层应用程序设计。其中,CAN总线设备接口通信程序和透明网关协议转换程序的CAN控制器协议模块在结构上有较大的相似性,但有可能因采用微控制器不同而导致实现的程序语言相异。因而,在此不作论述,而主要讨论后两个方面的程序设计。
3.1透明网关协议转换程序
透明网关协议转换程序的整体设计思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到透明网关由以太网控制器协议转换模块从传输层数据报文中解析出完整的CAN协议数据包,存放在数据缓冲区A?再通知总调度模块,由它调用CAN控制器协议模块将CAN协议数据包发送到CAN总线上。反过来,当CAN设备有数据要发送到用户层时,首先,数据发送到透明网关由CAN控制器协议模块将完整的CAN协议数据包存放在数据缓冲区B?再通知总调度模块,由它调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装起来,再发送到以太网的应用层。其程序结构如图4所示。
3.1.1CAN控制器协议模块
CAN控制器协议转换模块程序主要由SJA1000的寄存器读程序CANRead、写程序CANWrite()、初始化程序CANInit()、发送程序txdsub()、接收程序rxdsub()程序组成。之所以要编写单独的SJA1000的寄存器读、写子程序,这是由SX52芯片只有I/O端口决定的。
选用CAN2.0A协议构建CAN总线控制网络,对SJA1000的初始化主要完成控制寄存器CR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线定时寄存器BTR0,1和输出控制寄存器OCR的设置。初始化完成后,由总调度模块监控SJA1000控制器。当CAN总线上有数据到达时,它调用接收子程序rxdsub(),把这一帧数据包存入数据缓冲区B中,然后释放接收缓冲器。同样,当有按CAN2.0A协议格式组合成的一帧数据报文在数据缓冲区A中要发送到CAN总线上去时,总调度模块将调CAN发送子程序txdsub()发送。
3.1.2以太网控制器协议转换模块
以太网控制器协议转换模块主要负责从UDP数据包中解析出完整CAN协议报文,存入数据缓冲区A。同时,可能将数据缓冲区B中的完整CAN协议报文封装成UDP数据报,然后将其发送到以太网上。
在通信传输层采用UDP协议是考虑到CAN协议数据报为短帧形式(每个数据帧最多为8字节)。如果采用TCP传输协议,要传输8字节CAN协议数据,要先通过3次握手建立连接,再传输数据,之后还要通过握手释放连接。这样传输效率对有限的网络资源来说无疑是一种浪费。而UDP是无连接的传输,可以提高网络传输效率,同时,也减轻网关的处理任务。当然,UDP传输协议是不可靠的,对于控制网络来说,是不允许的。为了提高通信的可靠性,采用了回传校验机制。通过实验测试表明这种方式是行之有效的。
以太网控制器协议转换模块主要由以太网卡驱动、ARP、UDP协议的若干个API函数组成,如NICInit()、NICDMAInit()、NICInitTxFrame()、NICSendTxFrame()、NICReadAgain()、ARPCheckIfIs()、ARPSendResponse()、ARPSendStPacket()、ICMPProcPktIn()、UDPAppInit()、IPGenCheckSum()、、UDPAppProcPktIn()、UDPStartPktOut()和UDPEndPktOut()等。所使用的变量有:remoteIP[3:0]、myIP[3:0]、UDPRxSrcPortMSB、UDPRxSrcPortLSB、UDPRxDataLenMSB、UDPRxDataLenLSB、UDPTxSrcPortMSB,UDPTxSrcPortLSB、UDPTxDestPortMSB、UDPTxDestPortLSB、DPTxDataLenMSB,UDPTxDataLenLSB等。
系统首次执行或复位时,以太网控制器协议转换模块将首先调用NICInit和UDPAppInit()等进行NIC、ARP、IP、UDP和应用程序的初始化。初始化完成后,即进入主循环。在主循环中,SX52将反复检测RTL8019AS是否接收以太网帧。当有数据被接收时,SX52调用NICDMAInit()和NICReadAgain()读入以太网帧首部?再调用ARPCheckIfIs()判断接收帧是否为ARP数据。若是ARP,则转入ARPSendResponse()和ARPSendStPacket()子程序进行ARP处理并发送响应ARP数据报;若不是ARP,则判断是否为IP数据报。若非IP数据报则清除该以太网帧;当所接收帧包含IP数据报时,则需进一步判断是ICMP数据报还是UDP数据报文。若是ICMP数据报则执行ICMPProcPktIn()子程序处理ICMP数据报并重发IP数据报;若数据为UDP数
据报文,则调用UDPProcPktIn()子程序。该程序将读入UDP数据报文首部的数据并进行相应处理,还原出完整的CAN协议数据报文存入数据缓冲区B中,再通知总调度程序,由总调度程序调用CAN总线控制子程序将CAN协议数据报文发往CAN总线。
反过来,当总调度程序通知以太网控制器协议转换模块将数据缓冲区B中准备好的CAN协议数据发送到以太网上时,它将调用NICInitTxFrame()、UDPStartPktOut()、IPGenCheckSum()、IPStartPktOut()、NICSendTxFrame()、UDPEndPktOut()等子函数进行发送处理,从而实现CAN总线到以太网的数据传输。
3.2以太网层应用程序设计
以太网上的通信协议一般采用TCP/IP协议。本文采用流行的SOCKET套接字编程,传输层协议选择UDP(用户数据报协议),通过VisualC++编写用户层程序。
WinSock提供了对UDP的支持,通过UDP协议可以向指定IP地址的透明网关发送CAN协议数据,同时也可以通过它接收CAN协议数据。发送和接收方处于相同的地位没有主次之分。利用CAsyncSocket类操纵无连接的数据发送较简单。首先生成一个本地套接口(需要指明SOCK_DGRAM标记);然后利用intCAsyncSocket??SendTo?constvoid?lpBuf?intnBufLen?UINTnHostPort?LPCTSTRlpszHostAddress=NULL?intnFlags=0?发送数据,intCAsyncSocket??ReceiveFrom?void?lpBuf?intnBufLen?CString&rSocketAddress?UINT&rSocketPort?intnFlags=0?接收数据。利用UDP协议可以使管理主机和SX52网关实现双向的数据通信。同时,这种传输方式也易于使数据SX52网关透明化。
本文介绍了一种低成本、高可靠性、快捷的CAN总线与以太网互连方案。该互连方案保证管理监控层与生产测控层之间的连接,方便了上下层信息交流,满足工厂、变电站等工业场合的应用要求。
篇7:CAN总线与以太网互连系统设计
CAN总线与以太网互连系统设计
摘要:介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太网与现有CAN总线网的直接连接。保证管理监控层(以太网)与生产测控层(CAN总线网)之间的连接,使得上下层数据能方便地通信。关键词:现场总线 CAN总线 以太网
在大型企业自动化系统中,上层企业管理层和生产监控层一般都采用以太网和PC机,而下层车间现场则采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡或并行打印口的EPP接口卡实现。这种连接方式成本高,开发周期长。针对这种情况,笔者设计一种单独的CAN以太网网关互连系统,成功地实现以太网与现有CAN总线网的.直接数据互联。
1 系统结构
系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关、以太网信息管理终端(如监控平台和网络数据库等),如图1所示。
CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层需通过数据网关。嵌入式透明SX52网关就是为此而设计的。
透明式网关在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络应用层的数据进行传输,它对通信数据的具体实际意义不做任何解释。透明式网关由通信处理器、CAN总线控制器和以太网控制器三部分组成。其中SX52单片机为核心处理器,它实现了CAN控制网络与以太网之间的协议转换。以太网信息管理层的控制指令发送到嵌入式透明SX52网关,将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。
以太网信息管理终端是一个根据用户的具体要求而设计的用户层应用软件。它可以是一个WIN32监控程序或网络数据库(记录CAN节点设备数据)软件等;甚至可能是CAN节点设备的服务器软件,为设备提供较复杂的数据处理工作。
[1] [2] [3] [4]
篇8:煤层气发动机电控单元的CAN总线设计
煤层气发动机电控单元的CAN总线设计
为便于发动机电控系统更好地融入到整车通讯控制体系中,文章采用PIC18F448型单片机和PCA82C250型芯片,以原有煤层气发动机电控系统为模板,对集成式的CAN总线通讯模块进行了研究,完成了硬件电路和程序的设计;数据收发包括标准帧和扩展帧,均采用中断控制方式实现.指出该CAN模块可作为一个独立的CAN节.占'使用.为煤层气发动机ECU融入整车控制ECU的.通讯体系奠定了基础.
作 者:博士 吕春天 徐玉兵 BO Shi LV Chuntian XU Yubing 作者单位:合肥工业大学机械与汽车工程学院 刊 名:汽车工程师 英文刊名:TIANJIN AUTO 年,卷(期): “”(5) 分类号:U4 关键词:煤层气发动机 CAN总线 PIC18F448篇9:完整Android CAN总线程序开发
最近在研究一块TI公司的TMDEVM-AM3358开发板,这是一款硬件资源相当丰富并且性能非常好的工业评估板,我重点需要用到板上的网卡、串口以及CAN总线,众所周知,在android这样一款风靡全球的移动端操作系统内部,对于网卡的支持已经伴随这一系统本身的发展而相当完善。然而,串口线已经逐步淡出我们的视野,但是由于简单易用,在很多时刻依然派得上用场。其中最少见的应该就是CAN总线了,所以在调试CAN模块之中遇到了很多的问题。遗憾的是,似乎就连谷歌上也很难找到关于AM335x系列的ARM开发板CAN开发的介绍,这里就将我这段时间以来在CAN上所做的工作和遇到的问题总结一下。方便有需要的人少走弯路。
关于CAN的介绍,官方给出了一份文档,点击下载。经过了好几遍的通读之后,对他的基本步骤及意图有了一些了解,但是有一点让我感到疑惑——所有的步骤都是在PC上完成的,但是最后的使用是在ARM上,我并没有看到哪一步对ARM板进行了操作,那么最后如何实现呢?要了解这个问题,首先简单看看文档的操作步骤。
首先我们需要将ARM板上的CAN模块启动,调节SW8,将profile设置为1。SW8在显示屏接线的下方,如下图所示:
ARM开发板运行linux系统并且不修改canutil工具源码
如果你的ARM是运行的linux系统,那么恭喜你,TI的linux源码中已经集成了CANUTIL工具,可以直接使用。但是默认CAN驱动好像是未打开的,例如:在ARM终端
root@am335x-evm:~# canconfig can0 bitrate 50000 Cannot find device can0 failed to set bitrate of can0 to 50000
提示找不到can0设备,说明内核中未加入CAN驱动,那么我们需要配置驱动,方法如下:
在内核根目录输入
gedit Makefile
找到如下片段:
export KBUILD_BUILDHOST :=
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:”%”=%)
修改为:
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
此步骤目的是使当前内核编译模式为ARM平台。
接下来输入:
make menuconfig
按照图示步骤依次选择:
1. [*] Networking support —>
2. <*> CAN bus subsystem support —>
3. CAN Device Drivers —>
4. <*> Bosch D_CAN devices —>
注意把这里的D_CAN打上星号。
5. Generic Platform. Bus based D_CAN driver
同样将这一项打上星号。
好了,驱动配置完毕,下面执行Make指令,随后将生成好的内核镜像制作到SD卡中,重新启动开发板,那么CAN0设备就可以使用了。
可以尝试通过以下指令进行配置和收发:
1. 配置can0波特率为50000 ,开启三采样模式vcD4NCjxwcmUgY2xhc3M9”brush:java;“>canconfig can0 bitrate 50000 ctrlmode triple-sampling on
打开can0设备
canconfig can0 start
发送数据
cansend can0 -i 0x10 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88
接收数据
candump can0
ARM开发板运行android系统或者要重新编译canutil工具
如果你是用的android或者你想对CAN工具进行修改重新编译,那么还需要继续下面的步骤。
首先同样需要在内核中配置CAN驱动,并将Profile Selection设置成1,方法同上。
然后下载源码,官方说明中是需要下载三种源码(点击可下载):
- iproute2
- libsocket
- canutil
但是这里我只需要用到最后一个canutil即可,
下载完成之后,首先配置环境变量,如下:
export GNUEABI=arm-arago-linux-gnueabiexport CC=$GNUEABI-gccexport LD=$GNUEABI-ldexport NM=$GNUEABI-nmexport AR=$GNUEABI-arexport RANLIB=$GNUEABI-ranlibexport CXX=$GNUEABI-c++export PREFIX=$FILESYS_PATH/usrexport CROSS_COMPILE_PREFIX=$PREFIXexport PATH=$TOOL_CHAIN_PATH/bin:$PATHexport LIBSOCKETCAN_INSTALL_DIR=$LIBSOCKETCAN_PATH/installexport PKG_CONFIG_PATH=$LIBSOCKETCAN_PATH/configexport LD_LIBRARY_PATH=${LIBDIR}:${LD_LIBRARY_PATH}export LD_RAN_PATH=${LIBDIR}:${LD_RAN_PATH}export LDFLAGS=-Wl,--rpath -Wl,$LIBSOCKETCAN_INSTALL_DIR/libexport INCLUDES=-I$LIBSOCKETCAN_INSTALL_DIR/include
其中PREFIX 是目标目录,可以自行设置。
然后进入canutils-4.0.6文件夹,输入以下指令:
./configure --host=arm-arago-linux --prefix=$PREFIX --enable-debug
之后会根据目标平台生成相应的Makefile。接着依次执行:
make
make install
完毕之后,会在PREFIX/usr/bin下找到如下四个文件:
cansend , candump , cansequence , canecho
PREFIX/usr/sbin下找到如下一个文件:
canconfig
将这几个文件复制到android系统的/system/bin目录下(需要root权限)。这样我们就可以执行这5个命令了。
但这时候如果直接执行,可能会出现如下错误:
root@android:/ # cansend/system/bin/sh: cansend: No such file or directory
这说明cansend这个应用程序是动态编译的,本地缺少需要的库文件。可以在PC上通过命令readelf查看需要的库文件。
root@MC:~/android/can/usr/bin# readelf -l cansendElf file type is EXEC (Executable file)Entry point 0x8679There are 8 program headers, starting at offset 52Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align EXIDX 0x001074 0x00009074 0x00009074 0x00008 0x00008 R 0x4 PHDR 0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4 INTERP 0x000134 0x00008134 0x00008134 0x00019 0x00019 R 0x1[Requesting program interpreter: /lib/ld-linux-armhf.so.3] LOAD 0x000000 0x00008000 0x00008000 0x01080 0x01080 R E 0x8000 LOAD 0x001080 0x00011080 0x00011080 0x00158 0x00170 RW 0x8000 DYNAMIC 0x00108c 0x0001108c 0x0001108c 0x000e8 0x000e8 RW 0x4 NOTE 0x000150 0x00008150 0x00008150 0x00044 0x00044 R 0x4 GNU_STACK0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
看到最中间显示的一句话:
[Requesting program interpreter: /lib/ld-linux-armhf.so.3]
这里需要ld-linux-armhf.so.3库文件才能使用cansend命令。这里也是android和linux在文件系统上的一个差异,android系统无法直接运行由交叉编译器动态编译出来的应用程序。这里可以参考我的另一篇博客——
Android系统如何运行动态编译的程序 。将ARM-linux系统中的库文件复制到android系统的/lib目录下即可。
这时候,我们可以利用canconfig来配置can设备,也可以通过cansend、cansequence来发送数据,通过candump来接收数据,具体指令集可以参考官方文档。
以上就是这段时间以来对AM335x开发板can模块的调试过程,还是花了不少功夫的,主要原因是资料太少,除了文档就没有找到关于这套开发板的android CAN的介绍。如果大家还有什么问题,可以留言,大家一起探讨。
篇10:TMS320LF2407系统设计及外扩CAN总线设计
TMS320LF2407系统设计及外扩CAN总线设计
文章针对定点数字信号处理器 (Digital Signal Processor, DSP)芯片TMS320LF2407的.结构特点,介绍了该芯片最小系统电路的设计方法,包括时钟电路、复位电路、联合测试行动组(Joint Test Action Group, JTAG)仿真接口电路、外围存储器接口电路和电平转换电路,并结合实际应用情况,详细介绍了外扩控制器局域网(Controller Area Network, CAN)总线接口电路的设计.
作 者:崔艳召 汤恩生 许敬旺 Cui Yanzhao Tang Ensheng Xu Jingwang 作者单位:北京空间机电研究所,北京,100076 刊 名:航天返回与遥感 英文刊名:SPACECRAFT RECOVERY & REMOTE SENSING 年,卷(期):2008 29(2) 分类号:V4 TP7 关键词:芯片 数字信号处理器 最小系统 控制器局域网 扩展设计【基于CAN总线的EV电控系统通信的设计与开发】相关文章:
10.教学系统设计






文档为doc格式