搜索
bottom↓
回复: 31

各位用过STM32的USART最大码率是多少

[复制链接]

出0入14汤圆

发表于 2020-6-16 09:16:35 | 显示全部楼层 |阅读模式
如题。有个项目,数据刷新率比较高,处理器任务又很少,所以想用到最高速度。STM32F302标称USART码率最高9M,我是使用内置RC靠PLL到64M主频,按比例估算,此时USART应该能做到8M(当然,码率这么高以后,因分频精度问题,只有很少的几种码率可以使用,比如8M,4M,2M等)
现在的问题是,2M情况下运行正常,示波器可以观察到500ns级别的脉冲。但是设置为4M时,出现了问题,码率没有升高,反而降低到了一个很低程度,似乎是内部处理时间不足导致的异常,而我程序里面其实只有ADC采样和USART发送的轮询,并没有中断。
请教各位,有用过USART更高码率的人吗?有没有遇到过我这种类似问题呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出1310入193汤圆

发表于 2020-6-16 09:27:02 | 显示全部楼层
内置RC   实验室里面115200可以玩玩  做产品的话  有风险   温度曲线看看   波特率允许的误差也看看  项目能不能接受

出0入0汤圆

发表于 2020-6-16 09:28:01 | 显示全部楼层
最高用过1M,没搞过那么高,话说串口整这么高,靠谱不

出0入93汤圆

发表于 2020-6-16 09:44:03 | 显示全部楼层
跑过4M,误码率无法接受,还是乖乖的降下去了

出0入475汤圆

发表于 2020-6-16 09:44:39 来自手机 | 显示全部楼层
3M速度长期一直用、正常的

出0入0汤圆

发表于 2020-6-16 09:47:30 | 显示全部楼层
921600bps,没有出现问题

出0入14汤圆

 楼主| 发表于 2020-6-16 09:49:49 | 显示全部楼层
本帖最后由 kickdown 于 2020-6-16 09:52 编辑
takashiki 发表于 2020-6-16 09:44
跑过4M,误码率无法接受,还是乖乖的降下去了


您跑4M的时候,发送数据字节之间的空闲高电平周期,大概是多少us呢?我跑2M,误码率还可以,因为我并不是追求太高的正确率,几秒钟一个错误字节还是可以接受的

出0入14汤圆

 楼主| 发表于 2020-6-16 09:51:01 | 显示全部楼层
1a2b3c 发表于 2020-6-16 09:44
3M速度长期一直用、正常的

3M?您用的主频多少?我查了一下分频比,没法设置到这个频率上啊。还有就是您字节之间的间隔空闲高电平时间,留了多少us呢?

出0入0汤圆

发表于 2020-6-16 10:06:31 | 显示全部楼层
921600 长期使用过

出0入93汤圆

发表于 2020-6-16 10:12:49 | 显示全部楼层
kickdown 发表于 2020-6-16 09:49
您跑4M的时候,发送数据字节之间的空闲高电平周期,大概是多少us呢?我跑2M,误码率还可以,因为我并不是 ...

数据传输量很大,当时好像是连续发送4096字节后稍微停那么一下。我记得当时也是降成2M了近距离几乎没啥误码

出0入475汤圆

发表于 2020-6-16 10:25:23 来自手机 | 显示全部楼层
kickdown 发表于 2020-6-16 09:51
3M?您用的主频多少?我查了一下分频比,没法设置到这个频率上啊。还有就是您字节之间的间隔空闲高电平时 ...

主频72/36,字节间隔我是越少越好,没有最好:)因为我要尽量提高数据传输效率,dma传输
哦没注意你是302,我是普通的103芯片

出0入0汤圆

发表于 2020-6-16 10:28:42 | 显示全部楼层
1382400一直在用。

出0入0汤圆

发表于 2020-6-16 10:59:28 | 显示全部楼层

我们一直跑4M,4个串口同时跑,全部用DMA收发,没问题。不过只是在板级TTL通讯。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-6-16 10:59:43 | 显示全部楼层
最高用过2M的

出0入8汤圆

发表于 2020-6-16 11:08:10 | 显示全部楼层
5M的485使用过

出0入34汤圆

发表于 2020-6-16 11:11:20 | 显示全部楼层
上 M 级 Bps 的,改 SPI 会好使些。

出0入14汤圆

 楼主| 发表于 2020-6-16 12:18:23 | 显示全部楼层
takashiki 发表于 2020-6-16 10:12
数据传输量很大,当时好像是连续发送4096字节后稍微停那么一下。我记得当时也是降成2M了近距离几乎没啥误 ...

停的时间,比9位数据时间更长,还是更短呢?我现在有个不确定的,就是停止间隔如果只有4位左右,能不能稳定接收

出0入14汤圆

 楼主| 发表于 2020-6-16 12:18:53 | 显示全部楼层
1a2b3c 发表于 2020-6-16 10:25
主频72/36,字节间隔我是越少越好,没有最好:)因为我要尽量提高数据传输效率,dma传输
哦没注意你是302 ...

停的时间,比9位数据时间更长,还是更短呢?我现在有个不确定的,就是停止间隔如果只有4位左右,能不能稳定接收

出0入14汤圆

 楼主| 发表于 2020-6-16 12:21:17 | 显示全部楼层
xyz543 发表于 2020-6-16 11:11
上 M 级 Bps 的,改 SPI 会好使些。


转光传输后,长度几米左右,SPI又多了转接器。而且这个值也不是特别高,还在pdf标注范围内,所以想试试

出0入14汤圆

 楼主| 发表于 2020-6-16 12:26:09 | 显示全部楼层
lingdianhao 发表于 2020-6-16 10:59
我们一直跑4M,4个串口同时跑,全部用DMA收发,没问题。不过只是在板级TTL通讯。 ...

因为Modbus协议上,要求数据帧间隔,大于3.5个字节,以做帧间隔识别区分。
我这个因为想尽可能高的利用带宽,点对点单工通信,又要保证源端和接收端数据延迟尽量小,所以想着尽量把之间的间隔压缩到最短。一个方法是增大波特率,另一个方法就是缩小每个字节之间的空闲高电平时间。波特率能否调高可以用示波器看到,也可以在接收端测试。但是每个字节间隔空闲高电平,最小能到多少还能保证误码率比较低,我有点不好确定

出15入178汤圆

发表于 2020-6-16 12:26:44 | 显示全部楼层
飞线测试时,跑过较快的460Kbps,但需要线长10cm以内

出0入475汤圆

发表于 2020-6-16 12:47:40 来自手机 | 显示全部楼层
kickdown 发表于 2020-6-16 12:18
停的时间,比9位数据时间更长,还是更短呢?我现在有个不确定的,就是停止间隔如果只有4位左右,能不能稳 ...

和停止时间有个鸟的关系啊?停止位完了就早已经接受完了,感觉你是程序处理本身的问题吧,和波特率没有任何关系。你不可能是在中断字节的里面处理吧?那样的话自己核对下处理时间来不来得及就行了。最简单的就是验证下啥都不做,字节中断里面只把一个IO口(LED)反转就行了,示波器看看是不是io口的翻转和字节传输对应

出0入14汤圆

 楼主| 发表于 2020-6-16 13:55:41 | 显示全部楼层
1a2b3c 发表于 2020-6-16 12:47
和停止时间有个鸟的关系啊?停止位完了就早已经接受完了,感觉你是程序处理本身的问题吧,和波特率没有任 ...

码率多大,和停止间隔时间没关系。
我想的是另一个问题,也就是如果间隔时间很小,发送和接收不是同时启动,接收是否能从发送的一串数据中,识别出起始位。起始位前面的几个脉冲舍弃掉

出0入0汤圆

发表于 2020-6-16 14:22:52 | 显示全部楼层
kickdown 发表于 2020-6-16 13:55
码率多大,和停止间隔时间没关系。
我想的是另一个问题,也就是如果间隔时间很小,发送和接收不是同时启 ...

还能舍弃到前面几个脉冲,这是怎么操作

你只要想串口就是个状态机:第一阶段等起始位,第二阶段是n个数据位,是按照波特率时间采样数据位的,第三阶段是等停止位

这个过程中唯一能够检测到错误的就是停止位了,然后再等起始位。。。

你问能不能舍弃前面几个脉冲,大概是不行的,停止起始位就是同步脉冲边沿实现的

出0入362汤圆

发表于 2020-6-16 14:35:57 | 显示全部楼层
1.5M长期用,用CH340、CH330之类转USB偶尔会有一两字节出错,换CP2102倒是从来不出错,不过也不敢1.5M了。
500k波特率一直很稳定。

出0入14汤圆

 楼主| 发表于 2020-6-16 14:48:30 | 显示全部楼层
myxiaonia 发表于 2020-6-16 14:22
还能舍弃到前面几个脉冲,这是怎么操作

你只要想串口就是个状态机:第一阶段等起始位,第二阶段是n个数 ...

像您说的这样考虑过,所以大概率是要保证不同字节之间的空闲间隔时间,大于整个字节的传输时间才行了(包括起始位,校验位,停止位总和。码率固定,所以只要长度超过了都能错过去)。但是,奇怪的是,试了几十次,在任意时刻接上去,都能识别并输出数据……我也奇怪内部硬件是如何处理的

出0入0汤圆

发表于 2020-6-16 18:57:50 | 显示全部楼层
4.5M应该是没有问题,但是偶尔接收有错误的,不确定是线路原因还是STM32本身原因, 因为有重发机制,就没有管了。

出0入14汤圆

 楼主| 发表于 2020-6-17 12:15:41 | 显示全部楼层
本帖最后由 kickdown 于 2020-6-17 12:18 编辑

感谢各位,USART3已经成功提高至4M了(内部HSI,系统时钟64M。和USART3时钟源最高频率有关,估计USART1可以提高到8M)。
关键在于USART配置函数中,加上一句“USART_OverSampling8Cmd(USART3, ENABLE);”

出0入14汤圆

 楼主| 发表于 2020-6-17 12:23:52 | 显示全部楼层
myxiaonia 发表于 2020-6-16 14:22
还能舍弃到前面几个脉冲,这是怎么操作

你只要想串口就是个状态机:第一阶段等起始位,第二阶段是n个数 ...

您说的可能是对的,开始位是下降沿,结束位不需要低电平,所以只要遇到第一个下降沿,就按照码率自动采样了。
我试了好多次,发现确实存在从中间开始接收数据,导致无法稳定接收的问题。

出0入8汤圆

发表于 2020-6-17 20:06:47 | 显示全部楼层
我一直只用到115200,看来严重浪费了

出0入0汤圆

发表于 2020-6-18 00:35:16 来自手机 | 显示全部楼层
最高到1M,还挺好用的

出0入14汤圆

 楼主| 发表于 2020-6-18 12:34:22 | 显示全部楼层
最高只上到标称的一半4M(4.5M),再就弄不上去了。看了楼上最高也只有用到4.5M的,有用到标称值的吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 18:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表