打印
[DSP编程]

关于28335的SCI模块及自定义串口通讯协议的问题

[复制链接]
5227|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
scottly|  楼主 | 2014-9-29 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新手,现在在做一个项目,需要通过串口进行数据传输,而且串口数据的协议需要自己定;
例如:
   数据格式是: 需要一个命令前缀0x21,然后在是控制命令——>数据的长度——>数据主体

请问该怎么去实现?

使用的是28335的SCI串口模块,现有的例程里都是主机发送一段字符串给28335,28335将其返回来;
像上面那个功能怎么实现,比如还可以根据不同的控制命令,控制28335执行相关的操作,请指教!
@zhangmangui

相关帖子

沙发
稀饭先生| | 2014-9-29 16:58 | 只看该作者
可以在串口中断里面实现啊。

使用特权

评论回复
板凳
scottly|  楼主 | 2014-9-29 17:39 | 只看该作者
稀饭先生 发表于 2014-9-29 16:58
可以在串口中断里面实现啊。

额,什么意思?我强调的是数据的协议格式。。

使用特权

评论回复
地板
wangch_sh| | 2014-9-29 20:06 | 只看该作者
发送就是了,先发0x21,再发控制命令,再发数据长度,再发数据主体。

使用特权

评论回复
5
zhangmangui| | 2014-9-29 21:15 | 只看该作者
你的数据格式只是叫收发双方知道就行了啊  
发的一方按照数据格式发送  收的一方按数据格式校验  接收
你可以有一个发送函数  函数可以根据传递参数判断是哪个命令   
根据另一个传递参数判断是多长   然后就启动发送
也就是循环  一个送入发送寄存器一个字节   一次一次发送
接收端一直循环接收针头  如果此针数据中还有02   就要特殊处理了

使用特权

评论回复
6
scottly|  楼主 | 2014-9-29 22:46 | 只看该作者
wangch_sh 发表于 2014-9-29 20:06
发送就是了,先发0x21,再发控制命令,再发数据长度,再发数据主体。

先发0x21,再发控制命令,再发数据长度,再发数据主体;
是不是上面每一个都是一帧数据?连续发送4帧数据?
(一帧数据有数据位 校验位 停止位等)
那接收端如何知道有4帧数据需要接受呢?

使用特权

评论回复
7
scottly|  楼主 | 2014-9-29 22:48 | 只看该作者
zhangmangui 发表于 2014-9-29 21:15
你的数据格式只是叫收发双方知道就行了啊  
发的一方按照数据格式发送  收的一方按数据格式校验  接收
你可 ...

接收端如何知道是帧头啊?

使用特权

评论回复
8
zhangmangui| | 2014-9-29 23:32 | 只看该作者
scottly 发表于 2014-9-29 22:48
接收端如何知道是帧头啊?

给你个例子    参考一下他们协议的设计
M102EV3_5_V1_3.pdf (605.71 KB)

使用特权

评论回复
9
wangch_sh| | 2014-9-30 08:14 | 只看该作者
0x21不就是帧头吗

使用特权

评论回复
10
scottly|  楼主 | 2014-9-30 08:39 | 只看该作者
zhangmangui 发表于 2014-9-29 23:32
给你个例子    参考一下他们协议的设计

谢谢了。。。。

使用特权

评论回复
11
scottly|  楼主 | 2014-9-30 08:40 | 只看该作者
wangch_sh 发表于 2014-9-30 08:14
0x21不就是帧头吗

你的意思是把实际有用的信息都放在数据部分是吧?数据部分一般不是1-8位么?数据部分超过8位怎么办?

使用特权

评论回复
12
wangch_sh| | 2014-9-30 09:21 | 只看该作者
超过是几个字节就用几个字节,否则你数据长度有什么用呀

使用特权

评论回复
13
NWPU_CHEN| | 2014-9-30 09:32 | 只看该作者
露珠好好研究某一个通信协议就明白了,现在你的思路很混乱,一个协议发送只管发送,接收部分根据协议进行判断解析校验,简单模式帧头+数据+校验。发一个存一个,一帧发完校验处理,没有啥疑问,你数据位可以8位的发,多个数据可以连续发,这点没有疑问,还有你说的不知道帧头,一包数据的帧头地址是确定的,一帧数据的位数也能知道,这一判断就出来了,根本不必纠结,好好研究研究一个协议,思考思考

使用特权

评论回复
14
scottly|  楼主 | 2014-9-30 09:48 | 只看该作者
NWPU_CHEN 发表于 2014-9-30 09:32
露珠好好研究某一个通信协议就明白了,现在你的思路很混乱,一个协议发送只管发送,接收部分根据协议进行判 ...

恩恩,谢谢你的回复,明白了,一帧数据就是帧头,数据,校验,帧尾;其中数据部分最多是8位;
就是说一帧是1+8+1类似的格式,如果我有四个字节,就需要连续发4次(1+8+1)个帧就行了。

使用特权

评论回复
15
yklstudent| | 2014-9-30 13:57 | 只看该作者
呵呵 楼主就是个逗比
不知道楼主怎么明白的,哈哈
楼主别生气啊

使用特权

评论回复
16
scottly|  楼主 | 2014-9-30 16:07 | 只看该作者
yklstudent 发表于 2014-9-30 13:57
呵呵 楼主就是个逗比
不知道楼主怎么明白的,哈哈
楼主别生气啊

:curse:

使用特权

评论回复
17
yklstudent| | 2014-10-1 15:23 | 只看该作者
scottly 发表于 2014-9-30 16:07

:curse::lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

179

帖子

1

粉丝