您的位置:首页 > 其它

CAN的数据链路层和物理层注意事项

2014-01-03 16:37 666 查看
1、CAN节点在总线上TX的同时还在RX上监听发送数据

节点在发送每个位的同时读取总线上的电平信号,所有从节点上发送的位必须与回读的位一致,否则就是一个位错误

2、有些CAN收发芯片会有数据帧的自动重发功能,实现驱动时需要注意

3、CAN电平--隐性与显性

物理信号

  CAN2.0B规范定义了两种互补的逻辑数值:“显性”和“隐性”,同时传送“显性”和“隐性”位时,总线结果值为“显性”。“显性”(“Daminant”)数值表示逻辑“0”,而“隐性”(“Recessive”)表示逻辑“1”。

  在CAN规范中并未定义代表逻辑电平的物理状态(例如电压),iCAN网络使用符合ISO11898-2标准的电平信号,典型地,CAN总线为“隐性”(逻辑1)时,CAN_H和CAN_L的电平为2.5V(电位差为0V);CAN总线为“显性”(逻辑0)时,CAN_H和CAN_L的电平分别是3.5V和1.5V(电位差为2.5V)

由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN总线都是一种比RS-232更为优秀的串行总线。当两台串口设备的相距较远,不能直接用RS-232把它们连接起来时,就可以把RS-232转换为CAN,通过CAN总线来实现串口设备的网络互连。

但是,RS-232和CAN在电平和帧格式上都是很大的不同。具体表现如下:

RS-232标准电平采用负逻辑,规定+3V~+15V之间的任意电平为逻辑“0”电平,-3V~-15V之间的任意电平为逻辑“1”电平。而CAN信号则使用差分电压传送,两条信号线称为“CAN_H”和“CAM_L”,静态时均为2.5V左右,此时的状态表示为逻辑“1”,也可以叫做“隐性”;用CAN_H比CAN_L高表示逻辑“0”,称为“显性”。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V;

差分电压定义: Vdiff = CAN_H - CAN_L

那个图中黄线为CAN_H波形,绿线为CAN_L

在波形左,右两端时,CAN_H=CAN_L=2.5v,称为"隐性" (差值为"0v")

在波形中间时,CAN_H=3.5V,CAN_L=1.5V,称为"显性" (差值为"2v")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: