打印

有办法设定数据格式为 起始位+13位数据位+终止位这样的格式吗

[复制链接]
874|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhenykun|  楼主 | 2017-2-14 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在一般异步串口通信格式帧都为:起始位(0)+8位数据位+终止位(1,1.5,2),但如果我单片机起数据采集的作用,完整的一组二进制数据是十三位,是要分两次传送,变为起始+8位+终止位,起始+(有效)5位+终止位吗??   
有办法设定数据格式为  起始位+13位数据位+终止位这样的格式吗

相关帖子

沙发
jiahy| | 2017-2-14 20:09 | 只看该作者
你把后5位充填3个0,变为一组数据传送2字节8位不就行啦。利用这3位空位还可以设置8个帧序号,简单协议确认发送/ 接收。何乐而不为?

使用特权

评论回复
板凳
zhenykun|  楼主 | 2017-2-14 20:12 | 只看该作者
8个帧序号我再看看,不太懂...那我说的13数据位可以实现吗??怎么实现

使用特权

评论回复
地板
houjiakai| | 2017-2-14 21:59 | 只看该作者
直接使用串口发送数据不行吗

使用特权

评论回复
5
houjiakai| | 2017-2-14 22:00 | 只看该作者
可以直接转换sprintf转换字符串。

使用特权

评论回复
6
hellosdc| | 2017-2-15 09:53 | 只看该作者
通信协议不都是自己定义的吗?

使用特权

评论回复
7
hellosdc| | 2017-2-15 09:59 | 只看该作者
可以在数据格式后面加上校验位。

使用特权

评论回复
8
dengdc| | 2017-2-15 20:30 | 只看该作者

按楼上说的做,传两个字节。你自己说的13数据位无法实现!

使用特权

评论回复
9
午夜粪车| | 2017-2-15 20:33 | 只看该作者

一次只能发八位数据,除非你有16位的单片机做

使用特权

评论回复
10
jiaxw| | 2017-2-15 20:35 | 只看该作者
恩。5楼正解。除非有16位单片机,否则只能发八位

使用特权

评论回复
11
spark周| | 2017-2-15 20:37 | 只看该作者


楼主把简单的事情复杂化了

使用特权

评论回复
12
liliang9554| | 2017-2-15 20:40 | 只看该作者
就是32位,64位的单片机,也只能发8bit,呵呵,这个跟单片机位数无关

使用特权

评论回复
13
zhenykun|  楼主 | 2017-2-15 21:12 | 只看该作者

我知道一般的是8位,但想不通为什么只能是8位??

使用特权

评论回复
14
shimx| | 2017-2-15 21:15 | 只看该作者
由于RS232的协议如此,一些标准化机构至今未对RS232做升级,还有就是现在单片机里面的UART收发的字节缓冲都是8bit的,mcu硬件如此,我们只好如此了。高位数的单片机其优势在这方面无能为力。

使用特权

评论回复
15
zhaoxqi| | 2017-2-15 21:17 | 只看该作者

RS232那个通信标准就是接收7或者8个位的数据,没有别的可选。不要瞎指挥了,16位单片机的UART口也一样

使用特权

评论回复
16
shimx| | 2017-2-15 21:19 | 只看该作者

非要这样搞,用一个IO口来模拟Uart了,搜一下有现成的代码。改改就能用了,这么低的速率,一次收发几万bit都没问题

使用特权

评论回复
17
午夜粪车| | 2017-2-15 21:23 | 只看该作者
这是异步通信,双方没有同步时钟,按约定的波特率,使发送方按约定的时间发送数据,接收方在预定的时间范围内采样数据线,发送起始位的目的就是约定各自动作的起始时刻。
但是双方的时钟不完全同步,经过若干位之后,就导致某一方没有按照约定的时刻动作(超前了或滞后了),导致数据传输错误。所以异步通信多数要求帧的长度有个上限,无限长的数据帧没有推广的价值。

一次通信中各帧的长度如果不同,可能会出问题,例如相邻两帧的长度不同而前一帧丢失,就会把后一帧当做前一帧接收,结果这一帧就会在帧边界的判断上出错。

使用特权

评论回复
18
午夜粪车| | 2017-2-15 21:26 | 只看该作者
还应该防止出现下面情况:协议规定多帧通信,发送结束后接收方应返回一个应答帧,结果由于某种原因,发送的某一帧丢失了,接收方还在等待,而发送方以为已经发送完了而再等待应答帧,就会陷入死锁。

使用特权

评论回复
19
liliang9554| | 2017-2-15 21:28 | 只看该作者
232的协议就是如此,不要说16位单片机,就是A8、A9都一样。不要误导新人。将一个数据13位拆解成高八位和第八位。很简单的一个事情,想这么复杂。。。。。

使用特权

评论回复
20
zhenykun|  楼主 | 2017-2-15 21:30 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

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

本版积分规则

868

主题

11535

帖子

3

粉丝