CAN总线 时序分析

can总线通信,在嵌入式设计中使用非常广泛,下面是本人在开发过程中对于can总线通信的一些理解,不到之处还望批评指正。
CAN总线原理图如下:
在这里插入图片描述
下面是在调试过程中示波器波形:
在这里插入图片描述
上面的是clk,下面的rxd,下面的数据解析为:
1 10111100111 11011110000110100101010101100000000
can总线数据分为
显性电平:0
隐性电平:1
从上面可以看出采样的是标准帧
注:can总线在传输过程中如果有连续5个隐性电平,其后会自动插入一个显性电平,所以去掉插入的电平后如下:
1 10111100111 1 11 1110 00011010 010101010110000 0 00 00000000
转换成数据时将电平取反,得到数据帧,因为显性电平是0,而隐性电平是1
1:sof位
10111100111:11位ID,转换成数据为 01000011 000,其中前8位为ID:0x43
1 :RTP
11:r1,r0
1110 :DLC,转换成数据为0001在这里插入图片描述

00011010:数据位,转换成数据位11100101,数据位:0XE5, 010101010110000 :不关心 0 :crc界定 00:ACK 00000000:EOF 而测试代码发送的ID正好是0X43,数据为0XE5,所以总线传输数据正确。