查看:
33102
回复: 11 |
串口的波特率最大偏差多少,就失效?
|
|||
立创商城工程部
【官方工作人员】
113
主题
1325
回复 |
发表于2017-10-12 18:01:16
|
只看该作者
1#
电梯直达
“这2个商品是否能互换? “ “你们卖的IC是否是正品?” “我的产品以前用到的这个IC一直很正常,最近这批功能失效,请帮忙分析。。 ”
立创商城的在线技术客服人员,每天就是这样,都很忙的。。 每天都可以接到来自天南地北、五湖四海的用户各色各样的咨询或投诉。
最近接触到2个类似的问题,都是由于单片机内部的RC时钟引起的误差而导致的产品失效,比如 Uart串口通信(常温不可以通信,温度高才行)、Watchdog看门狗复位失灵等等。 考虑到之前,常听到不少网友疑惑类似这样的问题 “串口波特率的最大偏差多少,对方就不能接收了或出错了?”
其实这个问题,可以简单成这样的数学逻辑,先看下最常见的10位串口的输出时序( 1个起始位 + 8个数据位 + 1个停止位 )
以上图中,绿色箭头是采样时间点。 关于这个采样点,不同的IC芯片或许有些不同,但多数是是以16倍的目标波特率,"等时”进行采样N个点,N个点一样就认为该位的电平采样值是对的,而且多数是采样位的中点。
具体来说,串口波特率的最大偏差多少,对方就不能接收了或出错了呢? 实际上,可以简单认为是这样:
如上图所示,我们要确保实际波特率对应的 t0 ~ t9 时区段,都分别落在对方波特率的采样点的范围内, 即: 第1个位的采样点应该落在这个区间: [ 0~ t0 ] 第2个位的采样点应该落在这个区间: [ t0~ t1 ] 第3个位的采样点应该落在这个区间: [ t1~ t2] 以此类推。。。。
为此,今天大概花费了一点点时间,做了一个简单的程序演示,输入正常的波特率,就可以推算出最大或最小的波特率的数值,还有偏差率。 从多个常见的波特率推送来看,最大偏差一般在5% 以内都可以正常通信。 但考虑到不同芯片的采样点的方式有所不同,以及一帧的串口位不同(数据位越长,累计的偏差会更多),这个值还得具体分析,建议大家确保波特率控制在2%以内最好。
看看这个视频演示 http://v.youku.com/v_show/id_XMzA4MDg4ODc1Ng==.html?firsttime=4&qq-pf-to=pcqq.c2c#paction
对应的代码片段: void CTestBaudDlg::OnButton2() |
|||
好大的风
3
主题
64
回复 |
发表于2017-10-12 23:23:37
|
只看该作者
2#
刚才测试了CH340C,无需外部晶振,在921600速率下传输几百KB的数据,非常稳定可靠。 之前我一直用进口原装的CP2104,,怀疑国产芯片的水平,现在看来,国产芯片也是非常强大了。 |
|||
ChessWorld
36
主题
820
回复 |
发表于2017-10-13 09:23:29
|
只看该作者
3#
波特率 921600 也相当于 92KB,传输几百KB的数据,也就是几秒左右。 CH340我很少用,不知道性能如何,你最好尝试连续传输几个小时看看。 |
|||
香喷喷的猪
0
主题
12
回复 |
发表于2017-10-16 10:46:25
|
只看该作者
4#
误差必须少于5%。当串口抖动的时候,CH芯片和某些低端的串口卡,兼容性稍差。可能和采样的算法有关系。
|
|||
香喷喷的猪
0
主题
12
回复 |
发表于2017-10-16 10:51:13
|
只看该作者
5#
起始位+数据+停止位 ,共十位,至少4倍频才能正确采集,那么一个数据包至少采集40次,如果按照采集4次,有连续三个电平稳定确定为0或者1,频率误差就不能超过两个采集间隔。也就是大约正负5%。实际情况跟采样方式有关系,也可能会更加严格。
|
|||
我爱游戏机
0
主题
2
回复 |
发表于2017-10-20 05:35:30
|
只看该作者
6#
分析 的 透彻,学习了
|
|||
薛定谔的cat
5
主题
29
回复 |
发表于2017-10-25 16:18:03
|
只看该作者
7#
CH340G已经用了将近50K,最近换了CH340C,都没有问题,大家完全可以放心,都是921600的跑的 妥妥的
|
|||
菜头电子
41
主题
316
回复 |
发表于2017-11-05 19:13:31
|
只看该作者
8#
厉害,我有些都是9600
|
|||
MY360
0
主题
2
回复 |
发表于2017-12-04 09:49:53
|
只看该作者
9#
还是相信FT232
|
|||
power
0
主题
49
回复 |
发表于2017-12-19 14:37:07
|
只看该作者
10#
USB转串口,无非三个部分:1. 串口收发 2. USB协议处理 3. PC驱动。 第一部分,我自己用FPGA都写过,简单得不能再简单,用了几年了,没有出过问题。 第二部分,做了这么多年,该踩的坑应该都踩了吧? 第三部分,看似很简单,但是总是容易有兼容性问题,不知道为什么。 功能上就这三点。但是像ESD之类的问题还是要考虑,还有就是可能芯片本身没有问题,设计本身太省料导致稳定性有问题,很多人也会归到芯片头上。 我觉得这个领域,国产芯片应该慢慢可以相信了。 |
|||
伟伟
10
主题
58
回复 |
发表于2017-12-19 15:12:59
|
只看该作者
11#
CH340 使用内部振荡器要能在-20-85度范围内还能正常工作你试试?!
STD12NF06LT4,3V就可以完全控制导通的12A N-MOS管。http://club.szlcsc.com/article/details_1796_1.html
|
|||
凌青檀18
0
主题
1
回复 |
发表于2020-05-08 20:32:56
|
只看该作者
12#
那段代码怎么用呀 |
|