[技术问答] can通信长度怎么设置

[复制链接]
1350|18
 楼主| mutable 发表于 2022-10-8 21:12 | 显示全部楼层 |阅读模式

发现can发送长度有几个地方需要设置:第一次,发送初始化里,设置IF1CMDMSK;
第二次,还是在发送初始化里,设置IF1MSGC;
第三次,在启动can的函数,又设置了一次IF1CMDMSK;
第四次,在can发送函数里,再一次设置IF1CMDMSK。
那么为什么需要这么多次,每次有什么区别,懂得大侠,给点指点,不胜感激。


CAN的数据长度,是否为固定的呢?
Alina艾 发表于 2022-10-12 11:53 | 显示全部楼层
我看别的demo里也没有在初始化部分设置长度呀?
Emily999 发表于 2022-10-12 13:06 | 显示全部楼层
你可以通过自己写个库函数,把这个长度设置封装一下呗
Betty996 发表于 2022-10-12 14:15 | 显示全部楼层
我觉得没必要设置这么多次的
Carina卡 发表于 2022-10-12 15:23 | 显示全部楼层
新唐的can我还是捉摸不透,不咋用,一般都用串口之类的
Betty1299 发表于 2022-10-12 17:18 | 显示全部楼层
你看看手册吧,看看为啥需要设置这么多次
foxsbig 发表于 2022-10-12 20:37 | 显示全部楼层
找例程,可能是别人的 底子有问题
alxd 发表于 2022-10-13 12:29 | 显示全部楼层
我看网上很多can的demo好像也不需要设置这么多次的发送长度
B1lanche 发表于 2022-10-13 14:25 | 显示全部楼层
我一直以为,can就和485差不多,就很简单,没想到我想简单了
Charlene沙 发表于 2022-10-14 08:03 | 显示全部楼层
那你设置完成之后是否能正常使用呀?能的话,就可以不用太过纠结了吧
Belle1257 发表于 2022-10-14 09:12 | 显示全部楼层
可能机制就这样呗,新唐本来库就和ST的不一样
Allison8859 发表于 2022-10-14 15:31 | 显示全部楼层
我可正点原子的程序,好像发送的时候是需要设置长度,但是好像就在这儿设置就行,不需要初始化还设置
tpgf 发表于 2022-11-7 10:34 | 显示全部楼层
数据帧由 7 个段构成,包括:
(1)帧起始。表示数据帧开始的段。
(2)仲裁段。表示该帧优先级的段。
(3)控制段。表示数据的字节数及保留位的段。
(4)数据段。数据的内容,一帧可发送0~8个字节的数据。
(5)CRC段。检查帧的传输错误的段。
(6)ACK段。表示确认正常接收的段。
(7)帧结束。表示数据帧结束的段。
heimaojingzhang 发表于 2022-11-7 11:08 | 显示全部楼层
CAN总线的标准帧和扩展帧主要决定帧ID的长度,

标准帧的帧ID长度是11位,帧ID的范围是000-7FF。

扩展帧的帧ID长度是29位,帧ID的范围是0000 0000-1FFF FFFF。CANopen帧ID最多是11位的,因此是标准帧;而SAE 1939协议通常是18XX XXXX的帧ID,是29位的,因此是扩展帧。
keaibukelian 发表于 2022-11-7 11:47 | 显示全部楼层
扩展帧的仲du裁域有29位,可以出现2^29中报zhi文,且在数据链路上是有间隙的(对操作者透明)。
labasi 发表于 2022-11-7 11:58 | 显示全部楼层
本帖最后由 labasi 于 2022-11-7 13:26 编辑

楼主问题解决了吗
paotangsan 发表于 2022-11-7 12:17 | 显示全部楼层
其实CAN标准帧和扩展帧只是在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已
renzheshengui 发表于 2022-11-7 13:08 | 显示全部楼层
CAN总线的标准帧和扩展帧主要决定帧ID的长度,标准帧的帧ID长度是11位,帧ID的范围是000-7FF。扩展帧的帧ID长度是29位,帧ID的范围是0000 0000-1FFF FFFF。
wakayi 发表于 2022-11-7 13:26 | 显示全部楼层
标准帧的仲裁域是连续的11位,可以出现2^11种报文
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

598

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部