在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5816|回复: 24

[求助] 自己写的uart模块和主机通信的速率最高只能到400多K

[复制链接]
发表于 2022-5-7 10:03:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
请问应该怎么提高传输速率呢?受限于什么因素呢?谢谢了
发表于 2022-5-7 11:11:51 | 显示全部楼层
本帖最后由 Love24 于 2022-5-7 11:13 编辑

uart通信速率其实就是波特率,就是一秒钟传输的bit数,两者波特率一致才能正常通信,这个要看你的主机支持的波特率是多少。
 楼主| 发表于 2022-5-7 12:03:07 | 显示全部楼层


Love24 发表于 2022-5-7 11:11
uart通信速率其实就是波特率,就是一秒钟传输的bit数,两者波特率一致才能正常通信,这个要看你的主机支持 ...


主机支持的波特率是指电脑吗?这个应该怎么查看呢?

还是说主机指的是串口调试助手软件呢?
发表于 2022-5-7 21:26:35 | 显示全部楼层
系统时钟频率,如果分频系数小了且代码没写好,有可能会出错,比如100M分400K和10M分400K,分频比一个是250,一个是25,这样就可能出错
 楼主| 发表于 2022-5-8 00:11:37 | 显示全部楼层


黑桃ACE 发表于 2022-5-7 21:26
系统时钟频率,如果分频系数小了且代码没写好,有可能会出错,比如100M分400K和10M分400K,分频比一个是250 ...


谢谢答复,是时钟频率会影响最高时钟速率?

我的系统时钟速率为100M,目前测试结果显示460.8K收发正常,但是设置为921.6K时,就显示错误,FPGA收到主机发送的字符后,8位LED灯均显示1
按理说波特率为921.6K时,100M分频系数分别为108(100M/RB)和6 (100M/16/RB),难道是说分频系数为6意味着过小导致出错?
发表于 2022-5-9 13:56:09 | 显示全部楼层


come_on_sn 发表于 2022-5-7 12:03
主机支持的波特率是指电脑吗?这个应该怎么查看呢?

还是说主机指的是串口调试助手软件呢?


串口调试助手里可以设置波特率。
 楼主| 发表于 2022-5-9 15:45:08 | 显示全部楼层


Love24 发表于 2022-5-9 13:56
串口调试助手里可以设置波特率。



嗯嗯,谢谢

我在串口调试助手中设置了 921.6K的波特率,但是实际测试时确实传输错误,不知道是否因为分频系数无法取整所导致的微小差异?
发表于 2022-5-9 18:41:46 | 显示全部楼层


come_on_sn 发表于 2022-5-9 15:45
嗯嗯,谢谢

我在串口调试助手中设置了 921.6K的波特率,但是实际测试时确实传输错误,不知道是否因为分 ...


1. 就UART收、发两端的综合波特率误差而言,良好设计的UART 接收IP在收、发两端综合波特率误差5%以内可以工作。所以商用UART器件基本都会在手册中给出波特率分频器的结构和典型波特率的误差指标。
如果你没说错,那么在921.6k时,你的逻辑设计的波特率是:100,000,000/6/16 = 1,041,666.7 bps, 误差+13%,应该不能正常工作。
如果你将逻辑设计修改为100,000,000/7/16 = 892,857.1 bps, 误差-3.12%,还得看发送端的波特率偏差情况!

2. UART高波特率工作不正常,不能忽略驱动芯片支持的最高波特率参数的影响。

综合来看,就是一示波器的问题,用示波器测试接收端收到的信号,既可分析波特率偏差,也可分析驱动芯片摆率是否足够支持目标波特率!
 楼主| 发表于 2022-5-9 22:47:03 | 显示全部楼层


innovation 发表于 2022-5-9 18:41
1. 就UART收、发两端的综合波特率误差而言,良好设计的UART 接收IP在收、发两端综合波特率误差5%以内可以 ...




非常感谢前辈耐心为后学解惑,仍旧有几处不解之处,能麻烦您拨冗点拨下吗?谢谢了
1、我使用的是basys3的开发板,uart功能是通过FT2232芯片实现的,您说的商用UART器件指的就是FT2232吗?
image.png

我查了下手册,获取如下数据

image.png

image.png

这是否意味着basys3上所使用的UART芯片,要求波特率误差在3%以内,才可实现正常的通信功能呢?
另外,第一幅图显示FT2232芯片可支持上到12M的波特率,是否意味着只要波特率误差合理,理论上也可正常通信呢?

2、您说到示波器是指将主机发送给FPGA的串行数据,通过I/O输出到示波器,然后观测波特率吗?

谢谢了~

 楼主| 发表于 2022-5-9 22:53:54 | 显示全部楼层


come_on_sn 发表于 2022-5-9 22:47
非常感谢前辈耐心为后学解惑,仍旧有几处不解之处,能麻烦您拨冗点拨下吗?谢谢了
1、我使用的是basys3 ...


好像不太对,我测试了下在460.8K时,波特率误差在4%多,但是功能还是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-21 16:03 , Processed in 0.025300 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表