OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8080|回复: 20

原子哥,求助,通信协议怎么定

[复制链接]

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
发表于 2016-1-8 18:10:49 | 显示全部楼层 |阅读模式
5金钱
原子哥,求助,现在手头一份232协议格式:如表格所示:
帧头
帧长度
地址码
指令类型
数据/参数
CRC校验和
0xAA 0x55
(2字节)
(1字节)
(1字节)
N字节
(2字节)


现在需要定一份CAN总线的,还需要发送帧头和在程序里进行CRC校验么,如果需要帧头,那这个帧头是放在数据场还是哪?
急求.........

最佳答案

查看完整内容[请看2#楼]

自己弄好了,什么都不用要,直接发送多帧数据也不用要,接收是按序接收的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-8 18:10:50 | 显示全部楼层
自己弄好了,什么都不用要,直接发送多帧数据也不用要,接收是按序接收的
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-1-8 19:54:05 | 显示全部楼层

帧头,自然是放在“帧头”。



回复

使用道具 举报

20

主题

297

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1830
金钱
1830
注册时间
2013-7-29
在线时间
276 小时
发表于 2016-1-10 11:34:22 | 显示全部楼层
这个很灵活,没有什么特殊要求。
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-11 08:52:03 | 显示全部楼层
xuande 发表于 2016-1-8 19:54
帧头,自然是放在“帧头”。

在CAN中,我定义消息类型,标识符等,然后把232中的这一帧数据从帧头AA 55开始,全部把他们放在结构体的数据场的数组里发送,这样可以不?
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-1-11 10:36:23 | 显示全部楼层

无论什么总线都是一辆车,它只负责把货物送到位、卸下来,怎么组装不是车的事情。
用户的内容,无论怎么定义数据、命令都与车无关,对于车来说都是“数据”。


回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-11 11:03:30 | 显示全部楼层
xuande 发表于 2016-1-11 10:36
无论什么总线都是一辆车,它只负责把货物送到位、卸下来,怎么组装不是车的事情。
用户的内容,无论怎么 ...

那我该怎么装车,车装东西长度只能装8个字节,但是自己东西超过8个字节,所以问大神能不能改库函数里面uint8_t Data[8]; /*!< Contains the data to be transmitted. It ranges from 0
                        to 0xFF. */
这句话如果把8改大一点,是不是就可以发送超过8个字节的数据,如果不可以,是不是需要拆分?
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-1-11 11:06:27 | 显示全部楼层
蓝风3101 发表于 2016-1-11 11:03
那我该怎么装车,车装东西长度只能装8个字节,但是自己东西超过8个字节,所以问大神能不能改库函数里面ui ...


一车装不下,再装一车。

回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-11 11:53:52 | 显示全部楼层
xuande 发表于 2016-1-11 11:06
一车装不下,再装一车。

但是我想一次性把一组数据全发过去。具体怎么实行,有例程么
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-1-11 11:59:14 | 显示全部楼层
蓝风3101 发表于 2016-1-11 11:53
但是我想一次性把一组数据全发过去。具体怎么实行,有例程么


查查CAN一次最大运载量是多少?
好像没有8字节这么小。

如果真的这么小,就没办法了。

回复

使用道具 举报

6

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2014-11-15
在线时间
91 小时
发表于 2016-1-11 12:13:42 | 显示全部楼层
哈哈哈,咋都和卡车较上劲了,可别也学着超宽超载哦
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-1-11 13:38:45 | 显示全部楼层

It ranges from 0 to 0xFF

最大可以发255字节?


回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-11 16:16:20 | 显示全部楼层
xuande 发表于 2016-1-11 13:38
It ranges from 0 to 0xFF

最大可以发255字节?

我之前以为是这样,但是好像不对,这个数组值再怎么大,但是发送数据时候最多只能8个字节,这个数组的值改大 ,好像可以多次发送。
回复

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2016-1-3
在线时间
22 小时
发表于 2016-1-11 19:46:34 | 显示全部楼层
CAN总线有消息验收码和消息屏蔽码,你得确认下帧头是用于消息过滤的还是通讯中的协议解析的。如果是协议解析就放在数据场,否则就放在消息验收码里面作为过滤消息用。
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-12 08:39:53 | 显示全部楼层
dragon422 发表于 2016-1-11 19:46
CAN总线有消息验收码和消息屏蔽码,你得确认下帧头是用于消息过滤的还是通讯中的协议解析的。如果是协议解 ...

如果是用于过滤,那么消息验收码在哪定义呢
回复

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2016-1-12 08:58:22 | 显示全部楼层
应该是数据场吧?
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-12 10:01:56 | 显示全部楼层

如果不要帧头行不,只有标识符,能不能识别
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-12 10:07:53 | 显示全部楼层
xuyan021 发表于 2016-1-10 11:34
这个很灵活,没有什么特殊要求。

如果我不要帧头行不,在232中需要识别,在CAN中不用这个帧头可以识别不,识别标识符行不
回复

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2016-1-12 10:23:38 | 显示全部楼层
蓝风3101 发表于 2016-1-12 10:01
如果不要帧头行不,只有标识符,能不能识别

根据你的需求来定啊
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-31
在线时间
34 小时
 楼主| 发表于 2016-1-12 10:55:19 | 显示全部楼层
jiushibuzhidao 发表于 2016-1-12 10:23
根据你的需求来定啊

需求就是接收方如果可以识别发送的数据是不是需要的,那就不要帧头AA+55,如果不能识别就需要,所以我想知道能识别么?
回复

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2016-1-3
在线时间
22 小时
发表于 2016-1-12 23:00:52 | 显示全部楼层
蓝风3101 发表于 2016-1-12 08:39
如果是用于过滤,那么消息验收码在哪定义呢

有专门的寄存器放置这个消息验收码,推荐参考BOSH-C-CAN英文资料,对寄存器描述很详细!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 02:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表