打印
[CAN-bus/DeviceNet]

CAN总线系列讲座第五讲——CAN总线硬件电路设计

[复制链接]
4150|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsfh365|  楼主 | 2014-11-11 22:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xsfh365 于 2014-11-11 22:18 编辑

CAN总线系列讲座第五讲——CAN总线硬件电路设计
一  实战学习背景
CAN总线节点的硬件构成方案有两种,其中的方案:
(1)、MCU控制器+独立CAN控制器+CAN收发器。独立CAN控制器如SJA10000、MCP2515,其中MCP2515通过SPI总线和MCU连接,SJA1000通过数据总线和MCU连接。
该方案编写的CAN程序是针对独立CAN控制器的,程序可移植性好,编写好的程序可以方便的移植到任意的MCU。但是,由于采用了独立的CAN控制器,占用了MCU的I/O资源,并且电路变得复杂。
为了增强针对性,选择”51系列单片机+ SJA1000”的CAN总线节点的硬件构成方案,做入门介绍.
二  51系列单片机CAN总线学习板硬件电路设计


51系列单片机CAN总线学习板采用STC89C52RC作为节点的微处理器。在 CAN 总线通信接口中采用PHILIPS 公司的“独立CAN总线通信控制器SJA1000” 和“高性能CAN总线收发器TJA1040”芯片。图1为51系列单片机CAN总线学习板硬件电路原理图。从图中可以看出,电路主要由七部分构成:微控制器STC89C52RC、独立 CAN 通信控制器 SJA1000、 CAN 总线收发器TJA1040、DC/DC电源隔离模块、高速光电耦合器 6N137、串口芯片MAX232电路、按键及LED灯显示电路。
STC89C52RC初始化SJA1000后,通过控制 SJA1000 实现数据的接收和发送等通信任务。SJA1000 的 AD0~AD7 连接到STC89C52RC的 P0 口,其CS引脚连接到STC89C52RC的 P2.7, P2.7为低电平“0”时,单片机可选中SJA1000,单片机通过地址可控制SJA1000执行相应的读写操作。SJA1000 的 RD、 WR、 ALE 分别与STC89C52RC的对应引脚相连。SJA1000 的INT引脚接STC89C52RC的 INT0,STC89C52RC可通过中断方式访问SJA1000。
为了增强CAN总线的抗干扰能力,SJA1000的TX0和RX0引脚通过高速光耦 6N137与TJA1040的引脚TXD和RXD 相连,这样能够实现总线上各CAN节点间的电气隔离。需要特别注意一点:光耦部分电路所采用的两个电源VCC和CAN_V 必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离可采用小功率电源隔离模块,51系列单片机CAN总线学习板选用B0505D-1W电源隔离模块。这些电路虽然增加了CAN节点的复杂程度,但是提高了CAN节点的稳定性和安全性。
TJA1040与CAN总线的接口部分采用了一定的安全和抗干扰措施:TJA1040的CANH 和CANL 引脚各自通过一个5欧姆的电阻与 CAN 总线相连,电阻可起到一定的限流作用,保护TJA1040 免受过流的冲击。CANH和CANL与地之间分别并联了一个30P的电容,可以起到滤除总线上的高频干扰的作用,也具有一定的防电磁辐射的能力。另外,在两根CAN总线接入端与地之间分别反接了一个保护二极管IN4148,当 CAN 总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。
串口芯片MAX232电路用于“51系列单片机CAN总线学习板”下载程序,也可以实现CAN总线转232串口数据转换功能。

推荐CAN总线学习书籍及学习板:
1、《CAN总线嵌入式开发——从入门到实战》, 牛跃听 周立功等编著,
北京航空航天大学出版社,2012-1-1,ISBN9787512406919
该书的当当网网址:
//product.dangdang.com/22609565.html?_ddclickunion=P-233673|ad_type=0|sys_id=1#dd_refer=http%3A%2F%2Fwww.youlu.net%2F2896170
2、《CAN总线应用层协议实例解析》, 牛跃听 周立功等编著,北京航空航天大学出版社,2014,ISBN9787512415652
该书的当当网网址:
//product.dangdang.com/23563337.html#ddclick?act=click&pos=23563337_13_1_p&cat=01.54.07.04.00.00&key=&qinfo=&pinfo=675_1_60&minfo=&ninfo=&custid=&permid=20140510171701383317392368902546248&ref=&rcount=&type=&t=1414220864000
    如果上述网址打不开,请直接在当当网搜索即可.

相关帖子

沙发
xsfh365|  楼主 | 2014-11-11 22:19 | 只看该作者

使用特权

评论回复
板凳
airwill| | 2014-11-17 22:54 | 只看该作者
这一套东西有点老啦, 现在很多单片机都带 CAN 控制器了, 连接个 CAN 收发器就可以了, 很简单.
至于隔离, 也有隔离收发器供选用

使用特权

评论回复
地板
JasonWon| | 2014-11-21 22:01 | 只看该作者
airwill 发表于 2014-11-17 22:54
这一套东西有点老啦, 现在很多单片机都带 CAN 控制器了, 连接个 CAN 收发器就可以了, 很简单.
至于隔离, 也 ...

你好,求教一个关于CAN的问题,STM32与C8051f040CAN通信,如果节点是同一类型就可以通信,但错开就不行,stm32通过CAN向c8051f040发数据,总线上能检测到波形,但就是接收不了

使用特权

评论回复
5
xsfh365|  楼主 | 2014-11-23 10:58 | 只看该作者
CAN总线节点的硬件构成方案有两种:
(1)、MCU控制器+独立CAN控制器+CAN收发器。独立CAN控制器如SJA10000、MCP2515,其中MCP2515通过SPI总线和MCU连接,SJA1000通过数据总线和MCU连接。
(2)、带有CAN控制器的MCU+CAN收发器。目前,市场上带有CAN控制器的MCU有许多种,如P87C591、LPC2294、C8051F340等。
两种方案的节点构成都需要通过CAN收发器同CAN总线相连,常用的CAN收发器有PCA82C250、PCA82C251、TJA1050、TJA1040等。
两种方案的节点构成各有利弊:
第一种方案编写的CAN程序是针对独立CAN控制器的,程序可移植性好,编写好的程序可以方便的移植到任意的MCU。但是,由于采用了独立的CAN控制器,占用了MCU的I/O资源,并且电路变得复杂。
第二种方案编写的CAN程序是针对特定选用的MCU,例如LPC2294。程序编写好后,不可以移植。但是,MCU控制器中集成了CAN控制器单元,硬件电路变得简单些。

使用特权

评论回复
6
xsfh365|  楼主 | 2014-11-23 11:00 | 只看该作者
因此,并不是airwill 说的那样,不存在哪些知识新旧的问题,应该站在研发项目的便利性、经济性方面考虑问题

使用特权

评论回复
7
xsfh365|  楼主 | 2014-11-27 21:16 | 只看该作者
STM32与C8051f040CAN通信,如果节点是同一类型就可以通信,但错开就不行,stm32通过CAN向c8051f040发数据,总线上能检测到波形,但就是接收不了?
回答:不同类型节点之间是可以通讯的,有3个条件:1、总线协议相同,例如都是can2.0a;2、地址设置,即滤波器设置正确,可以接收数据,建议调试程序阶段,将其设置为接收全部地址发来的数据,即滤波器无效;3、通讯波特率相同,比如都是200kbit/s

使用特权

评论回复
8
xsfh365|  楼主 | 2014-12-5 21:39 | 只看该作者

使用特权

评论回复
9
xsfh365|  楼主 | 2016-5-29 16:43 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

58

帖子

3

粉丝