串口波特率为9600,那1S理论上能传几个我想发送的数据?

[复制链接]
15697|6
 楼主| feilusia 发表于 2013-11-20 21:48 | 显示全部楼层 |阅读模式
这个问题困扰我很久了,总是似懂非懂。晚上突然觉得问题要完全搞懂才能进步,所以请教大神们是不是该这样算:

每秒传输字节数=9600/8=1200字节。

同步模式:一次性传输,同步字符(1~2个)+数据+(适当的错误检测数据)
如果1S内的数据帧是完整的,那么,实际传输我想发的数据=1200-同步字符-适当的错误检测。

异步模式:分多次传输,每次为“1位起始位+7位ASCII编码+1位奇偶校验位+1位停止位”
如果它是连续传输的,那么,实际传输我想发的数据≈9600/10=960字节
 楼主| feilusia 发表于 2013-11-22 17:06 | 显示全部楼层
有人知道么
戈卫东 发表于 2013-11-22 18:39 | 显示全部楼层
如果是9600BPS,应该是异步吧,要去掉起始位停止位,最多9600/10=960.
戈卫东 发表于 2013-11-22 18:40 | 显示全部楼层
实际上如果需要可靠,需要一定的容错措施,那就达不到这个速率.
 楼主| feilusia 发表于 2013-11-22 20:49 | 显示全部楼层
戈卫东 发表于 2013-11-22 18:39
如果是9600BPS,应该是异步吧,要去掉起始位停止位,最多9600/10=960.

为什么9600就是异步呢?同步没有9600?
戈卫东 发表于 2013-11-22 21:27 | 显示全部楼层
feilusia 发表于 2013-11-22 20:49
为什么9600就是异步呢?同步没有9600?

9600这个业界标准的速率,大家都是用在异步通讯上面的...
而且,如果是同步的,通常不很在乎速率是否符合"业界通用速率"---因为有时钟信号,只要不超过上限,多少都可以的.
 楼主| feilusia 发表于 2013-11-23 09:04 | 显示全部楼层
戈卫东 发表于 2013-11-22 21:27
9600这个业界标准的速率,大家都是用在异步通讯上面的...
而且,如果是同步的,通常不很在乎速率是否符合"业 ...

这样。那我还有两个串口的疑问想请教:
1)串口线的地线是否必要?
我看有的串口只用了TX和RX,是不是因为其他模块(如电源)等是共地的,所以串口那就不接地线。

2)异步通信的串口接收时的超时时间应该为多大?
由于我的程序中还有其他优先级更高的中断会嵌套中断串口,所以这个超时时间不能太短也不能太长。
是不是该这么算:比如STM8L的时钟频率是16M,查看时序可知每个位间距为1clock(1/16M),所以最小的超时时间是1/16M,然后再设置的稍微大一点,比如设置为(1/16M)*1.5。



QQ截图20131123085914.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:1、博客:http://blog.csdn.net/feilusia 2、QQ群:STM8/STM32群(164311667);职场交流群(450154342);CC2640R2F群(557278427) 3、淘宝店:https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

135

主题

1967

帖子

95

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