串口通信一帧可以传多少字节?

[复制链接]
20624|19
 楼主| fke_mmm 发表于 2008-8-1 14:53 | 显示全部楼层 |阅读模式
串口通信中一帧可以传多少字节,是不是可以无限大小啊?和传输速率不关系吗?我做的是LED显示屏,要求一次传输10个汉字的大小可以吗?
dld2 发表于 2008-8-1 14:57 | 显示全部楼层

100个汉字都可以

  
guosr 发表于 2008-8-1 20:09 | 显示全部楼层

主要考虑重传概率、协议等待时间、缓冲区大小

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设你的串口正常使用时,误码率为万分之一,那么如果一帧数据传10字节,总共就是100比特,这帧数据发生错误的概率就大约是1%。那就意味着每传输100帧数据,就有一帧因为发生错误而要重传。这在一般的系统中还是可以接受的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果万分之一的误码率之下,你硬要一帧数据传400字节,那就是4000比特,那么这帧数据发生错误的概率就高达33%,就意味着每三帧数据,就有一帧需要重传,而重传也存在较高的再次发生错误的概率。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除了误码导致重传,还要考虑一帧数据的交互耗费的时间,数据帧越大,这帧数据传输耗费的时间越长,通信的实时性就越差。同样,双方的CPU耗费的缓冲区资源就越大。潜在的稳定性就越差。
 楼主| fke_mmm 发表于 2008-8-2 12:04 | 显示全部楼层

谢谢3楼,说的很详细.

  
huangqi412 发表于 2008-8-2 22:16 | 显示全部楼层

串口通信中一帧可以传多少字节?

你可以在程序中用个while(1)&nbsp;不断电,发到地球末日,异步话误差不积累的.
dsz 发表于 2008-8-4 14:20 | 显示全部楼层

while(1) 不断电,发到地球末日

while(1);&nbsp;不断电,发到地球末日
chunyang 发表于 2008-8-4 19:12 | 显示全部楼层

huangqi412说的正确,突发误差是不会积累的

3楼算法有误。突发错误可以通过侦错重发机制解决,过大的帧长度会使该机制的代价明显上升,但不会因此增加错误发生的概率。
Wxy8030 发表于 2008-8-4 21:11 | 显示全部楼层

3楼的算法具体细节不谈,大方向没错——

比如一个字节的失败率是千分之一,那么成功率=999/1000<br />那么连续传输100个字节的成功率=(999/1000)*(999/1000)*(999/1000)*.....乘100次,大约等于0.9<br />那么连续传1000个字节的成功率=0.999的1000次方......约等于0.37<br /><br />毫无疑问一帧数据越多,这一帧数据的成功率就越低!一帧数据怎么能随便多少就是多少呢?<br /><br />
chunyang 发表于 2008-8-4 22:40 | 显示全部楼层

千分之一的误码率指传1K字节可能出现1字节的误码

成功率是0.999,楼上算法则是0.37,呵呵,天地之差啊。<br />如果传1K字节必出现1字节的误码,那么连续传1K字节的成功率则是0。<br />定义问题。
Wxy8030 发表于 2008-8-4 22:55 | 显示全部楼层

......

嘿嘿,春阳兄,请问怎么计算如果一帧就是1000字节,通信一次的成功率是多少呢?<br /><br />或者举个通俗的例子,我发送了1000次,有500个误码,请问每个字节的成功率是多少呢?<br /><br />再简单点,我扔了1000次硬币,500次是反面,请问每次正面的几率是多少呢?<br /><br />这个时候再反过来计算,发送1000次,有1个误码,每个字节的成功率是多少呢?
chunyang 发表于 2008-8-5 10:26 | 显示全部楼层

前面已经说过是定义问题

误码率为千分之一的话,连续传1K字节的成功率是0.999,传一字节的成功率是0.999开1000次方,你的概率算法没错,但定义引用错了。
Wxy8030 发表于 2008-8-5 10:50 | 显示全部楼层

......

误码率=传输中的误码/所传输的总码数*100%
chunyang 发表于 2008-8-5 15:39 | 显示全部楼层

误码率不能这么定义

&nbsp;&nbsp;&nbsp;&nbsp;如果在技术上避免误差的积累(这很容易),那么误码的产生就仅由外部环境的影响而突发产生,考虑一般普适的环境条件下外部各种因素的变化对通讯的影响,从而得出一个平均出错概率,这个概率才是真正的误码率,换句话说,误码率是要讲前提条件的。如果去除外部环境的影响,比如在恒温、恒湿的电磁暗室中,供电也是用恒定的无噪声电源,那么不论多大的数据包传多久误码也不会出现,也就是说,误码率是个概率值而且还是个条件概率值。如果照楼上的定义,那其实是隐含了一个条件,也就是说误码是必然出现的,对此我在前帖中已经提到:“如果传1K字节必出现1字节的误码,那么连续传1K字节的成功率则是0”,这个“误码率”已经不再是概率值了。<br />&nbsp;&nbsp;&nbsp;&nbsp;工程条件下,误码率确实可以用楼上的方法来简单表述,这属工程近似法,但不能据此引用概率乘法,否则由此得出的结论就离实际结果十万八千里了。<br />
guosr 发表于 2008-8-6 20:46 | 显示全部楼层

好,我来做个总结,但愿可以就此封帖

&nbsp;&nbsp;&nbsp;&nbsp;应该说大家讨论这个问题都是站在自己预设的条件之下,因此都有各自的道理。<br />&nbsp;&nbsp;&nbsp;&nbsp;我是按照一般的串口通信的设置,8个数据位、1个起始位、1个停止位,无奇/偶校验,此时单个字节的错误无法通过重发机制得到纠正,因此只能在一帧数据的末尾加上校验和,那么误码率(说准确点,是误比特率)就是个要考虑的问题。不论是突发误码还是随机误码,一旦发生,就要重传。如果是随机误码,按照经典概率论计算误帧率是没有问题的。即便是突发误码,长长的一帧数据,仅仅因为一个比特的误码而要重传,信道资源被白白浪费了,不划算。当然,帧长度太短也不划算,帧头、校验、协议开销占的份额太大了,信道利用率也不高。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果串口设置成奇/偶校验,那么每个字节的错误可以立即被纠正,那么理论上帧长度可以很长(从某种意义上讲,这实际上相当于一帧数据只有8+1比特)。但是,即便如此,帧的长度也不能太长,这还收到通信协议的制约,如果在某时段内出现较多的突发误码,导致收发双方频繁重传,甚至重传超过N次,引起一方退出通信,这仍然是通信失败。这就是chunyang说的“过大的帧长度会使该机制的代价明显上升”。<br />&nbsp;&nbsp;&nbsp;&nbsp;至于如何计算帧错误概率,那都无关紧要,我相信chunyang兄和Wxy8030面临一个具体问题的时候都能算得明明白白。这里关键是要说明:通信中,帧长必须适度,不可太长。<br />
chunyang 发表于 2008-8-6 21:47 | 显示全部楼层

不错,兼顾效率的话,帧长度不能过长也不能过短

&nbsp;&nbsp;&nbsp;&nbsp;多数通讯应用需要也应该加入协议,但协议的加入会增加帧长度,有效数据越少效率就随之越低,所以大数据量通讯时帧不能太短,而帧过长则容易遭受突发干扰,在没有纠错或纠错无效时,一个bit错整个数据包就完了,所以帧长度太长反而会降低实际效率。至于帧长度多少合适,那要看具体应用,环境不同、通讯载体不同,采用的技术不同等等最佳帧长度就不同,同时还要兼顾系统资源,资源不够,即使完全无误码时也没用。<br />&nbsp;&nbsp;&nbsp;&nbsp;多数情况下,有线通讯的最佳帧长度要远远大于无线通讯,因为采取适当手段就可以大幅度降低突发干扰的程度,特别是在短距普通环境中,这时的瓶颈往往是系统资源,特别是在资源相对贫乏的嵌入式系统中。
four_sea 发表于 2008-8-16 20:50 | 显示全部楼层

异步通讯

异步通讯每贞(8-11BIT)都有其始位同步,你说的10字节应该指的是数据包。<br />如果波特率误差小,基本不会出现错误,理论上可以一直传输。
E007 发表于 2008-8-28 00:07 | 显示全部楼层

误码分析

我的看法:<br />串口通信的同步是在一个字节(启始位,数据7或8位,可选校验位,停止位)内进行同步的,所允许的同步误差可以达到20%以上(具体多少我记不清了),所以不管你的帧有多长,同步误差会在下一个字节的启动位进行校正,不会积累,因而如果没有干扰,你尽可以发到地球末日而不会因为同步误差而导致出错,导致出错的只会是干扰。要想消除干扰引起的误差,就要从线路板及线缆的抗干扰设计以及纠错上下功夫,而无需考虑位同步问题。
soho 发表于 2008-8-30 03:27 | 显示全部楼层

guosr讲奇偶校验可以纠错

实质还是侦错。它只是侦出1位出错的情况,并不知道错在那一位。
soho 发表于 2008-8-30 03:31 | 显示全部楼层

如果出错率是千分之一

是指字节出错率还是帧出错率?<br />如果是字节出错率,1000字节长的帧成功率应该接近0的。<br />如果是帧出错率,那么一个字节的成功率,是远远高于0.999的。
hch 发表于 2008-8-30 23:31 | 显示全部楼层

我支持chunyang

做无线的人最清楚&nbsp;异步通讯的效率误码率&nbsp;这些关系了。我们天天计较的就是这些,太长了&nbsp;丢了一个bits&nbsp;没有办法恢复就得重传&nbsp;,太短了&nbsp;加上导频&nbsp;同步头&nbsp;&nbsp;划不来啊&nbsp;,FIFO&nbsp;多用了&nbsp;就是为了这些问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

14

帖子

0

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