依旧使用之前测试正常的收发程序,按动固定的按键,实现通过CAN收发固定数据(其实可以改下程序,周期发固定数据,但因为懒,就沿用之前的车需了)。CAN的通讯波形(-2.072ms ~ -1.572ms)如下,收发一次,会有两大段波形。
第一段波形如下:
从-2.05ms ~ -1.893ms段的数据:0110000100001101001000110100010100010000
从-1.893ms ~ -1.733ms段的数据:1000011011000010110111000110001010010110
从-1.733ms ~ -1.573ms段的数据:1100101011110010011000110100100010101110
所以这第一大段的二级制数据为:
0110000100001101001000110100010100010000,1000011011000010110111000110001010010110,1100101011110010011000110100100010101110
在CAN的通讯中,标准数据帧的数据格式:
在程序中,关于ID的设置:
#define CAN1_ID 0x18412345,16进制: 00011000 01000001 00100011 01000101
#define CAN2_ID 0x18467890,16进制: 00011000 01000110 01111000 10010000
控制发送的数据为:Can1Key1,对应的十六级制数据为:43 61 6e 31 4b 65 79 31
对应的二级制数据为:01000011 01100001 01101110 00110001 01001011 01100101 0111 1001 00110001
对应到波形数据上:
因此应该是扩展数据帧的模式
第二大段的波形:
数据:0110000100011110011110001001000001001000010000110110000101101110001100010100101101100101011110010011000111011010110001010
从数据上看,这应该是CAN2的回答信息,因为ID指向的是CAN2的ID。数据帧中的帧起始、SRR、IDE、RTR、r0、r1都正常一致,就是CRC段、ACK段和帧结束部分不太一致,也许是和单片机中CAN的配置有关系。有时间再仔细核对、学习。
通过收发数据和CAN网络上波形的对比,对于数据帧的理解,有了感性认识,验证了数据真帧的通讯协议样式,算是一个很大的收获吧。第一次用示波器处理CAN数据,还不是很熟练。后面有机会使用示波器提供的解码功能再次分析CAN通信数据情况。