求:can总线通信如何实现两个节点互相收发,希望是keil.c程序

求:can总线通信如何实现两个节点互相收发,希望是keil.c程序,第1张

一般不管在哪里,都别直接要程序,即使要了,也不会有人给。

你应该自己学着写,碰到问题了再问,这样就具体的某个樱巧细节问题,大家才好回答你。

这个要求包含如下几个方面:

1)单片机通过RS232与电脑之间发送、接脊搏键收数据;

2)51单片机对SJA1000的配置、控制、读写;

3)CAN的节点通讯(协议);

4)51单片机对DS18B20的温度采集。银凯

这些,你会哪些,不会哪些,至少自己一点一点的去啃一下,才有意义

这个问题我觉得你应该和CAN总线协议分开,因为CAN总线硬件链路层协议和数据链路层协议都是标准的,就是CAN2.0A和CAN2.0B协议,我觉得你应该是要定义上层应用的协议,专门针对你的通讯信息的协议,比如说你要传输“设置量程上下限,报警上下限,绘制历史和实时曲线”等信息的协议,如果是这样的话,那就简单了,解释一下:协议就是通讯两端对话的语言,你必须有至少两个CAN节点,然后通过线路将其连接(就是一对差分线行吵),然后就可以利用CAN底层协议互相通讯,而你要定的协议就是定义CAN接收的什么数据代表什么意思,一般来说,一个协议要包括头和尾及中间的内容,如当接收宴唤到一帧的第一个字节(CAN协议一帧可以传送8个字节)为0xfe时认为这是你的一个协议包的开始标志字节,一个协议包比如定义为8个字节,最后一个字节为0xEF为结束字节标志,这样当你的CAN接收到第一个字节为0xfe最后一个字节为0xef的帧就是你需要的协议包,你可以定义第二个字节表示标志此包传输意义的字节,如档祥侍为0x01表示“设置量程上下限”为0x02表示“报警上下限”等等,其他字节可以设置相应的需要设置的值。

如果是一个复杂的协议的话,可以用多个帧表示一个你的协议包,而且一般需要加上一个或几个字节的校验字节,以验证是否传输正确。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12462416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存