历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 基于LPC2131处理器和SJA1000芯片实现CAN通信系统的设计

2023-03-14 来源:elecfans

随着信息技术技术的飞速发展,ARM技术方案架构作为一种具备低功耗、高性能、以及小体积等特性的32位嵌入式微处理器,得到了众多的知识产权授权用户,其中包括世界顶级的半导体和系统公司。目前已被广泛的用于各类电子产品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安保和无线等领域。被业界人士认为,基于ARM的技术方案是最具市场前景和市场优势的解决方案。


现场总线CAN是为解决现代汽车中众多的电控模块之间的数据交换而开发的一种串行通信协议。由于其具有多主站依据优先权进行总线访问,采用非破坏性总线仲裁,可完成对通信数据的错误检验和优先级判别,数据长度最多为8个字节,传输时间短,受干扰的概率低,抗干扰能力较强,通信速率最高可达1Mbit/s等特点,它被广泛应用在汽车,工业,消费类电子等领域,而被公认为是最有前途的现场总线之一。


基于ARM在嵌入式系统方面优势和CAN总线的广泛应用,目前越来越多的ARM处理器内部都自带了CAN控制器,极大的方便了开发人员对CAN总线的开发。但目前仍有些产品中的ARM处理器没有内置CAN控制器,为了能够适应节点间对数据传输所提出的实时性,可靠性的要求,同时又不改变原来的硬件结构,通过外扩CAN接口模块来实现CAN通信成了一个较为合适的选择。


本文基于ARM7TDMI-S处理器LPC2131,对内部没有集成CAN控制器的处理器,设计了较为通用的CAN接口模块的硬件电路,并对CAN总线进行了可靠性设计,而且对基于嵌入式实时操作系统mCOS-II实现CAN通信,进行了嵌入式软件的设计,最终在实践中对CAN总线通讯的可靠性和可行性进行了验证。


1 LPC2131

Philips LPC2131是基于ARM7TDMI-S的高性能32位RISC微控制器,它一方面具有ARM处理器的所有优点:低功耗、高性能;同时又具有较为丰富的片上资源,非常适合嵌入式产品的开发。其特点如下:

·集成了Thumb扩展指令集。

·32KB可在系统中编程(ISP)的片内Flash和可在应用中编程(IAP)的8KB RAM,具有向量中断控制器。

·2个UART,2个I2C串行接口,2个SPI串行接口,2个定时器(7个捕获/比较通道),PWM单元可提供多达6个PWM输出,8通道10位ADC,实时时钟RTC,看门狗定时器WDT,48个通用I/O引脚。

·CPU时钟高达60MHz,具有片内晶体振荡器和片内PLL。LPC2131内部没有集成CAN控制器,而无法利用CAN总线来进行通讯。为了使得LPC2131能够利用CAN总线进行通讯,可以通过外部扩展来拓展其功能。


2 硬件电路设计

由于LPC2131是由3.3V供电的ARM7TDMI-S微处理器,其各个IO引脚是3.3V的TTL电平,而且可以承受5V的电压。而独立CAN控制器SJA1000是5V供电,其各个IO口的电平是5V的TTL电平,所以二者兼容,其IO可以直接相连。


2.1 LPC2131与CAN控制器接口

LPC2131与CAN控制器接口如图1所示,LPC2131的P0.8~P0.15与SJA1000的AD0~AD7直接相连实现数据交互,P0.22,P0.25,P0.31,P0.23分别与SJA1000的ALE/AS,RD/E,WR,CS相连实现读写和片选,P0.30,P0.27分别与SJA1000的INT,RST相连实现中断和复位。LPC2131访问SJA1000时,可通过软件模拟SJA1000中所规定的读写时序来进行,SJA1000的模式引脚MODE通过VCC而置为高电平,使得SJA1000工作在 Intel的模式。

基于LPC2131处理器和SJA1000芯片实现CAN通信系统的设计

图1 LPC2131与CAN控制器接口电路

2.2 CAN收发器与CAN总线接口

CAN收发器与CAN总线的接口如图2所示,其中SJA1000的TX0,RX0分别与CAN收发器的TXD,RXD相连,为提高CAN收发器82C250与CAN总线的接口部分的抗干扰能力,特在82C250 的CANH 和CANL 引脚串接一个共模扼流圈,以消除一定的共模干扰,而使得总线差分信号能够顺利通过。并且CANH和CANL分别通过一个磁珠与总线相连,以起到消除一定的高频干扰。同时CANH 和CANL与地之间并联了两个30pf 的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。另外在两根CAN总线接入端与地之间分别接了一个TVS,当CAN 总线有较高的电压时通过TVS的击穿而接地,可起到一定的过压保护作用。82C250 的Rs引脚上接有一个斜率电阻以降低CAN总线的向外辐射。

图2 CAN收发器与总线接口电路

对于其他无内置CAN控制器的能够承受5V的TTL电平的处理器来说,只需改变与SJA1000的数据端口ALE/AS,RD/E,WR,CS,INT,RST相连接的引脚即可完成外扩CAN接口的硬件设计工作,否则在两者之间加一个逻辑电平转换的器件即可。


3 软件设计

3.1 对SJA1000的读写访问

由于LPC2131的48个引脚全是IO,所以首先需要通过软件模拟读写SJA1000的时序,来对SJA1000进行操作,进而完成CAN通讯功能。

依据SJA1000在Intel模式下的读写时序,可编写LPC2131通过CAN控制器SJA1000发送数据的写函数void WriteCan(uint8 Addr,uint8 Data)和接受CAN控制器所接受的数据的读函数uint8 ReadCan(uint8 Addr),其中Addr为SJA1000相应的寄存器的地址,Data为LPC2131所发送的数据,读函数ReadCan可返回所接受的数据。


3.2 CAN通讯的实现要实现

一个CAN通讯需要实现3个功能模块:对SJA1000的初始化模块;数据发送模块;数据接受模块。


·对SJA1000的初始化模块

在开始通讯之前,首先要在SJA1000的各个功能寄存器进行设置,包括模式寄存器,波特率,时钟分频器,中断使能寄存器,,滤波寄存器,输出控制寄存器。

·数据发送模块

假设要发送的数据的ID存储在数组ID中,数据存储在数组SendData中,其发送模块程序如下所示,其中参数DLC为发送的字节数,FF为帧类型,即0为数据帧,1为远程帧。

·数据接受模块

根据电路图1,采用中断接受的方式来接受数据,LPC2131的P0.30设置为外部中断3,整个数据接受模块由数据接受函数void ReceiveData(uint8 *Rt)、中断处理函数CAN_Exception(void)构成。当SJA1000接受到CAN总线数据,通过接收中断使得LPC2131产生外部中断3而使其进入中断处理函数,进而对接受到的数据进行处理。其中数据接受函数和中断处理函数如下:

4 结语

以ARM芯片作为主控制器,CAN总线作为数据传输方式来进行通讯的嵌入式系统得到了越来越广泛的应用。同时CAN通讯的可靠性也成为影响系统性能的关键部分之一。本文以LPC2131为例,给出了一类微处理器与CAN控制器SJA1000之间的较为通用的硬件连接方法,对CAN总线进行了可靠性设计,并基于嵌入式实时操作系统mCOS-II进行了CAN通讯软件开发,该设计现已在工厂车间中的分布式监控系统中得到了应用,运行可靠、稳定。


推荐阅读

史海拾趣

微芯(CMOSIC)公司的发展小趣事

随着产品线的逐渐丰富和技术的不断进步,微芯生物开始积极拓展市场。他们与多家国内外医药企业建立了合作关系,将自主研发的药物推向市场。同时,公司也积极参与各类学术会议和展览,提升品牌知名度和市场影响力。通过不懈的努力,微芯生物逐渐获得了市场的认可和信赖。

E-T-A [E-T-A Circuit Breakers]公司的发展小趣事

进入21世纪后,E-T-A公司开始关注智能电路保护技术的研发。公司投入大量资源进行技术创新,成功推出了多款智能电路保护产品。这些产品不仅具有更高的安全性和可靠性,还能实现远程监控和控制功能,为客户提供更加便捷和高效的服务。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

随着物联网、可穿戴设备等新兴领域的兴起,Goldentech敏锐地捕捉到了市场的新机遇。公司迅速调整战略方向,加大在微型化、低功耗半导体器件的研发投入。通过引入先进的制造工艺和封装技术,Goldentech成功推出了一系列适用于物联网和可穿戴设备的高性能离散半导体产品。这些产品凭借出色的性能和稳定性,在市场中获得了广泛认可,为公司的持续发展注入了新的动力。

璟德(ACX)公司的发展小趣事

2008年,璟德(ACX)成功在台北证券交易所上市,股票代码为3152。这一举措为公司带来了更多的资金支持,也提升了其品牌影响力和市场地位。上市后,璟德(ACX)加大了对研发和市场拓展的投入,进一步巩固了其在无线通信领域的领先地位。

Good Will Instrument Co., Ltd.公司的发展小趣事

随着公司的发展,璟德(ACX)在LTCC技术的研发上取得了重大突破。这些突破不仅提升了产品的性能和质量,也为公司赢得了多项国内外专利。这些专利的获取进一步巩固了璟德(ACX)在无线通信领域的领先地位,也为其后续的市场拓展提供了有力支持。

Aborn Electronics Inc公司的发展小趣事

随着产品线的不断丰富和技术实力的不断提升,Aborn Electronics开始积极寻求市场拓展。公司先后在国内外多个地区设立了销售网点和分支机构,并通过参加各类行业展会和论坛,加强与其他企业的交流与合作。同时,Aborn Electronics注重品牌建设,通过提升产品质量和服务水平,逐渐树立起了良好的企业形象和口碑。

问答坊 | AI 解惑

分析几种基本信号运算电路

分析几种基本信号运算电路…

查看全部问答>

WinCE6.0 BIOS Boot Loader开机方式

请问各位大侠 这个要怎么设置啊?可以让CE直接启动,DOS启动过程麻烦,而且看着让人恶心。 Setupdisk.144和Bootdisk.144这两个文件怎么提取啊? 谢谢各位了!…

查看全部问答>

关于Android中加入USB主控驱动的问题

最近因为毕设需要,在移植Android1.5到urbetter s3c6410的板子上,需要使用板子上的USB来连接USB设备 内核编译选项添加了usb host side driver,全选了usb host controller drivers,但是依然用不了USB设备,请问需要怎么配置内核?需要给内核打补 ...…

查看全部问答>

嵌入式学习资料下载

www.chinaeda.cn QQ:763557435 电话:400-702-8848…

查看全部问答>

谁知道哪个公司的嵌入式开发板不错的,麻烦告诉下

我用的是VS2005+WINCE6.0,现在想买块开发板,不知道选哪个好,请前辈指点下…

查看全部问答>

嵌入式系统开发学习步骤

近来嵌入式挺火,于是大家都往这里挤。我想提醒大家的是,嵌入式马上也会成为如今的软件业。在你进来之前请先考虑清楚。但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一个人,那个人也一定就是你自己。 很多人以为搞嵌入 ...…

查看全部问答>

紧急求助pb3

RCC_APB2PeriphClockCm(RCC_APB2Periph_AFIO|APB2Periph_GPIOB,ENABLE);  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,DISABLE);  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,DISABLE);  stm32_Init&nbs ...…

查看全部问答>

基础IO口设置有些不明白,求各位帮忙看看

板子上P1.0,P1.1两个口同时接到了触摸屏中断上,是这样设置的P1DIR=0x00;(输入模式),P1SEL=0x00;(普通IO口),P1IE=???????11;P1IES=???????1;P1OUT=??????00(电平置0), 请麻烦一下,怎么设置的P1IE,和P1IES,我原先理解的是该端口电平一旦置1就会 ...…

查看全部问答>

DAC大虾们到你们活动的时间了

弱弱的问下 用G2553能驱动12位和8位的DA嘛。。有谁写过用430驱动tlv5620和tlv5615…

查看全部问答>

易电源学习心得

全新 SIMPLE SWITCHER 易電源 納米模塊封裝尺寸為 2.5 x 3 x 1.2 mm,是市場上最薄的 1A 型 DC/DC 解決方案。安裝在屏蔽式 電感器上的 IC 在 35 mm2 的 電路板空間提供了一個完整的 解決方案,只需一個輸入電容、 一個輸出電容、一個 VCON ...…

查看全部问答>