OpenEdv-开源电子网

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

新手求助,STM32串口通信协议怎么写?

[复制链接]

2

主题

19

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-5
在线时间
9 小时
发表于 2016-5-26 17:33:44 | 显示全部楼层 |阅读模式
20金钱
我现在做了一个简单的上位机,用来显示STM32上的DS18B20测得温度,现在上位机和下位机STM32进行通信,这个通信协议具体怎么写?写完后加在哪里呢

最佳答案

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

报头1 报头2 命令 内容1 内容2 校验和 0xaa 0x55 0x01 0x00 0x00 类似这样的协议
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

213

帖子

0

精华

高级会员

Rank: 4

积分
682
金钱
682
注册时间
2015-2-13
在线时间
74 小时
发表于 2016-5-26 17:33:45 | 显示全部楼层
报头1  报头2  命令  内容1   内容2    校验和
0xaa   0x55  0x01  0x00    0x00

类似这样的协议
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-5
在线时间
9 小时
 楼主| 发表于 2016-5-26 18:15:36 | 显示全部楼层
huishun1314 发表于 2016-5-26 17:54
报头1  报头2  命令  内容1   内容2    校验和
0xaa   0x55  0x01  0x00    0x00

您能帮我写一下吗?我不太懂呃,网上也没搜到具体的代码讲解。
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-5
在线时间
9 小时
 楼主| 发表于 2016-5-26 20:20:50 | 显示全部楼层
没人吗
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-5-27 09:42:12 | 显示全部楼层
定义一个缓存,直接在数组里边写好数据,往串口扔就是了,上位机接收到数据就解析,就这么简单
回复

使用道具 举报

9

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2015-7-9
在线时间
19 小时
发表于 2016-5-27 14:48:06 | 显示全部楼层
5l正解
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-5-27 15:47:56 | 显示全部楼层
如果只是一对一且通信距离很短,不需要协议。协议是为了保证通信可靠性和多机通信人为设定的一套发送和应答格式。具体怎么订这个协议要根据你的应用环境来判断
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-5
在线时间
9 小时
 楼主| 发表于 2016-5-27 22:46:31 | 显示全部楼层
八度空间 发表于 2016-5-27 09:42
定义一个缓存,直接在数组里边写好数据,往串口扔就是了,上位机接收到数据就解析,就这么简单

能否给个具体代码实现,我才刚接触,很多不太懂。
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2016-5-27 23:05:50 | 显示全部楼层
所谓协议就是双方约定好采用什么样的数据格式,如7L所说,数据量大,数据类型多,传输距离远,电磁环境恶劣时就要采用协议,如果单一的温度值就直接向上位机发数据就行了,
如想要用协议,可以看看 modebus协议
回复

使用道具 举报

2

主题

19

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-5-5
在线时间
9 小时
 楼主| 发表于 2016-5-27 23:10:12 | 显示全部楼层
d1z1y2 发表于 2016-5-27 23:05
所谓协议就是双方约定好采用什么样的数据格式,如7L所说,数据量大,数据类型多,传输距离远,电磁环境恶劣 ...

多谢,明白一些了
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-5-27
在线时间
8 小时
发表于 2016-5-28 00:05:24 | 显示全部楼层
帧头 数据数 指令 数据1 数据2 数据n 累加和 帧尾
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2016-6-12
在线时间
18 小时
发表于 2016-6-12 15:43:56 | 显示全部楼层
帧的格式已经清楚了,接下来怎么写程序啊~
回复

使用道具 举报

10

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1479
金钱
1479
注册时间
2016-1-25
在线时间
260 小时
发表于 2016-6-15 11:28:52 | 显示全部楼层
其实说白了 就是我们两个人说好暗号  然后在对接成功的时候 解析出来 好比如 我们发送一组数据   温度 A   16 度  B   32 度   C  100 度  ............    然后我们按照数据的向后来发送  当然我们肯定需要定义一个握手协议 不能什么数据都接 好比如 发送8个字节的数据   
   起始    地址    温度A  温度 B   温度 C    温度 D      温度 E    结束符
  0XAA   0X01     16       32       100          64            78           OXFF
所以在进行数据接收的时候  你就可以判断了这组数据是以0xAA开头的 我才去进行判断 不然就丢弃  因为发送的时候我们可以直接写10进制的数,它会自动转换成16进制的发出来    好比如  你发送的是100 实际上收到的是16进制的0x64    所以我们要正确显示的话 就必须进行数据处理  将16进制转换成10 进制  进行显示  所谓的数据加密 就是把自己的数据用自己的想法先进行加减乘除后 发送出来  接收端的时候在进行反推回去。 大致就是这样了  希望对你有所帮助
回复

使用道具 举报

4

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2016-10-27
在线时间
47 小时
发表于 2016-12-23 11:39:10 | 显示全部楼层
sodermalm 发表于 2016-6-15 11:28
其实说白了 就是我们两个人说好暗号  然后在对接成功的时候 解析出来 好比如 我们发送一组数据   温度 A    ...

你讲的好详细啊
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2016-12-23 11:46:57 | 显示全部楼层
我个性签名档的博客地址,《CC2541之通信协议》。
应用层协议都相通,好好看看吧。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-17 10:15:03 | 显示全部楼层
sodermalm 发表于 2016-6-15 11:28
其实说白了 就是我们两个人说好暗号  然后在对接成功的时候 解析出来 好比如 我们发送一组数据   温度 A    ...

学习ing
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-17 14:34:40 | 显示全部楼层
shawnh201 发表于 2016-5-27 22:46
能否给个具体代码实现,我才刚接触,很多不太懂。

求代码
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-17 16:44:09 | 显示全部楼层
sodermalm 发表于 2016-6-15 11:28
其实说白了 就是我们两个人说好暗号  然后在对接成功的时候 解析出来 好比如 我们发送一组数据   温度 A    ...

你好,能够提供一些代码参考一下吗,有些知道是这样描述的,但是不知道具体怎么实现出来
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-6-15
在线时间
19 小时
发表于 2017-10-21 19:04:46 | 显示全部楼层
{huishun1314 发表于 2016-5-26 17:54
报头1  报头2  命令  内容1   内容2    校验和
0xaa   0x55  0x01  0x00    0x00}
同求这样的源码,我也不会望大神贴出来、
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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