关闭
搜索
搜索
本版
帖子
用户
热搜:
程序员
简洁模式
高级模式
用户组: 游客
消息
提醒
新听众
我关注的
帖子
道具
勋章
任务
设置
退出
请
登录
后使用快捷导航
没有帐号?
立即注册
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
or
立即注册
快捷导航
搜索
首页
论坛
BBS
MCU单片机技术
程序员交流
基于ARM7处理器的CAN总线网络设计
[复制链接]
作者:
BT123shine
版块:
›
MCU单片机技术
›
ARM
发布时间:
2018-6-16 09:05:18
562
0
返回列表
BT123shine
当前离线
新手上路
新手上路, 积分 16, 距离下一级还需 34 积分
新手上路
新手上路, 积分 16, 距离下一级还需 34 积分
积分
16
发消息
楼主
电梯直达
BT123shine
发表于 2018-6-16 09:05:18
|
只看该作者
|
倒序浏览
|
阅读模式
3.3 CAN总线接口
根据图2所示,can接口部分包括lpc2119(内置can控制器)、光电耦合器和总线收发器。can总线遵循iso的标准模型,分为数据链路层和物理层。在工程上通常由can控制器和收发器来实现。收发器选择philips公司的tja1050高速收发器,它符合iso11898标准。can控制器主要完成can的通讯协议,实现报文的装配和拆分、接收信息的过滤和校验等。收发器tja1050则是实现can控制器和通讯线路的物理连接,提高can总线的驱动能力和可靠性。
为了进一步提高系统的抗干扰能力,lpc2119引脚tx1、rx1与收发器tja1050并不是直接相连的,而是通过高速光耦6n137后与tja1050相连。电路中可采用隔离型DC/DC模块向收发器电路供电。dc/dc模块采用金升阳的b0505s-1w定电压输入隔离非稳压单输出型dc/dc模块,隔离电压≥1000vdc。这样就可以很好地实现总线上各接点的电气隔离,这部分电路虽增加了复杂性,但却保证了稳定性和安全性。
tja1050与can总线的接口部分也采用了一定的安全和抗干扰措施,canh和canl与地之间并联了两个小电容ch和cl可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。电容值须由节点的数量和波特率决定,当tja1050 的输出级阻抗大约是20ω,总线系统有10个节点速度是500kbps,则电容的值不应该超过470pf。另外在两根can总线接入端与地之间分别反接了一个保护二极管,当can 总线有较高的负电压时通过二极管的短路可起到一定的过压保护作用。根据tja1050的特性,本设计中can终端电阻使用了分裂终端,即总线端节点的两个终端电阻都被分成两个等值的电阻,用两个60ω的电阻代替一个120ω的电阻,这样可以有效的减少辐射。由于使用了分裂终端,tja1050的emc性能得到优化而且不会产生扼流。
4 can总线应用层通信协议的制定
can总线应用层协议制定的总体目标是最大限度地发挥can总线的优异性能,使通信更加规范、可靠,提高实时性,降低总线负载率。在设计系统的应用层通信协议时,需要考虑以下两个方面的内容:
(1)结合系统的设计要求,分析通信中所有信息对象,确定需要支持的通信传输模式;
(2)确定标识符的分配方案,定义帧格式。下面分别讨论之。
4.1 确定通信的传输模式
本系统要求实现广播式通信用来对全部从结点或部分从结点发布信息,同时主结点还要具备能够对单个结点进行操作的功能。因此定义以下三种传输模式:
(1)支持全局/局部广播式通信。主结点向全部或部分结点发送信息,从结点接收信息后进行相应动作,不回送确认信息。
(2)支持点对点式通信。主结点向某个从结点发送信息请求数据,从结点接收到请求后读取数据,并向主结点发送请求的数据。
(3)支持点对点式通信。主结点向某个从结点发送信息,从结点接收到信息后执行相应操作,但不回送确认信息。
4.2 确定标识符的分配方案
确定标识符的分配方案,定义帧格式。标识符是can总线实现仲裁的依据,也是协议的关键,其分配方案要满足个节点及信息对优先级的要求。本文在协议中定义了两种类型的帧:信息帧和数据帧。信息帧用来传送主结点对从结点的命令、配置信息以及通信中的连接响应信息等。而从结点向上传送过程数据则通过数据帧来实现。信息帧的优先级高于数据帧。
设计中通信协议采用can2.0a标准帧格式,只用数据帧,不采用远程帧。报文的格式如表1所示。本文对11位id进行了重新定义。dlc用于表示数据域的长度0~7个字节;m/s用于表示报文的传播方向,0表示主站向从站发消息,1表示从站向主站发消息;b/p表示通信方式,0表示广播式通信,1表示点对点通信;m/d表示帧类型,0表示信息帧,1表示数据帧;id(7-0)用于表示报文标识符;type用于表示报文是单帧报文还是多帧报文,该位为0时表示单帧或结束帧,该位为1时表示多帧报文;cmd表示命令标识,包括:0a表示上传命令,0b表示下载命令,0c表示联机命令,0d表示报警命令等;data表示数据域。
当上位机需要与子节点进行通信时,可用以上三种模式向can网络节点发送信息帧,can网络中的节点接收到信息帧后,通过判别标识符和命令标识来区别信息帧的类别,并将节点所需要的数据发送出去。当网络节点发生突发事件时,可随时向上位机报告,上位机同样也是通过标识符来识别数据类型。
5 结束语
本文基于can总线技术,以lpc2119为核心,重点介绍了网络节点的硬件电路设计以及应用层协议的制定。软件设计部分,在keil uvision3环境下,实现了can控制器的驱动程序和应用层协议,解决了现场传感器得到的测量信号利用下位机进行处理和存储,然后通过内置can控制器将数据发送到can总线上,完成与上位机的通讯。设计具有通用性,实时性,可扩展性强的特点,现已通过调试,性能稳定,可以移植到其他系统中。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
收藏
0
相关帖子
•
Linux视频教程之判断磁盘是SSD还是HDD方法分享
•
红帽急了:新年的RHEL将有低成本或免费版
•
聊聊linux查看服务和端口状态命令netstat
•
Linux禁止root用户远程登陆
•
招聘网站,何去何从?
•
湛江招聘|中地君豪高科股份公司招聘(带薪年假、月入5.5k-10k)
•
东莞招聘丨光荣电业(东莞)有限公司8大岗位招聘(五险一金)
•
Linux初级教学:Linux中的Netstat命令
•
6款有用的监视Linux磁盘IO性能的命令
•
计算机三级(信息安全)部分笔记
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
表情
@朋友
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
linux
招聘&找工作
快速回复
返回顶部
返回列表