OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8408|回复: 6

[XILINX] 简单的uart串口发送,用了院子例程的发送模块

[复制链接]

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
发表于 2020-4-4 21:00:49 | 显示全部楼层 |阅读模式
10金钱
新人求助,这几天弄一个简单的uart串口发送(232),发送模块是咱原子例程的。主要是在FPGA内部生成一个0~255的数据,然后通过串口发送给上位机。我的思路:检测到串口发送模块的tx_flag(发送模块发送一帧数据完成标志位)的下降沿,数据就累加一并且发送新的数据给串口发送模块。波特率是115200,但是总是上位机接收不到正确的数据。萌新求助大佬们!

代码

代码

tb文件仿真

tb文件仿真

最佳答案

查看完整内容[请看2#楼]

如果程序中只有一个时钟的话,一般不会有建立时间和保持时间不满足的问题。应该是tx_flag拉低太早了,导致停止位不够一个完整位的周期
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5618
金钱
5618
注册时间
2018-10-21
在线时间
1591 小时
发表于 2020-4-4 21:00:50 | 显示全部楼层
啥都不会的佩奇 发表于 2020-4-7 17:19
嗯嗯,上位机都是正确的。应该就是数据发送的间隔问题,我昨天发送的帖子中有个建立时间和保持时间的问题 ...

如果程序中只有一个时钟的话,一般不会有建立时间和保持时间不满足的问题。应该是tx_flag拉低太早了,导致停止位不够一个完整位的周期
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-6 20:21:36 | 显示全部楼层
最近总算是调好了,我把捕捉tx_flag换成了捕捉tx_cnt等于9的时候来改变寄存数据。所以我怀疑是数据寄存时候的稳定性,因为捕捉tx_flag的话数据寄存改变最多有60ns的时间,而换成后面的方法(tx_cnt等于9)来改变数据、寄存数据,数据要保持8.7微妙(也就是一个波特率周期)。所以这个现象该怎么解释呢?我查到了建立时间和保持时间,会不会跟这个有关系呢?新手求助大佬们解答,万分感谢!
回复

使用道具 举报

3

主题

2013

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5618
金钱
5618
注册时间
2018-10-21
在线时间
1591 小时
发表于 2020-4-6 20:47:53 | 显示全部楼层
先确认上位机软件的设置是不是都是正确的。然后可以适当增加数据发送的间隔,看还会不会出错。
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-7 17:19:37 | 显示全部楼层
QinQZ 发表于 2020-4-6 20:47
先确认上位机软件的设置是不是都是正确的。然后可以适当增加数据发送的间隔,看还会不会出错。

嗯嗯,上位机都是正确的。应该就是数据发送的间隔问题,我昨天发送的帖子中有个建立时间和保持时间的问题,这里不是很懂,只知道D触发器打入需要一定的时间,数据稳定也需要一定的时间。新手啊,从软件转到的硬件,很别扭,不过在慢慢习惯。谢谢你了,如果可以的话,您看是不是与我描述的有关,再次万分感谢!
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-9 18:53:39 | 显示全部楼层
QinQZ 发表于 2020-4-8 17:15
如果程序中只有一个时钟的话,一般不会有建立时间和保持时间不满足的问题。应该是tx_flag拉低太早了,导 ...

大佬前辈,一下子就看出来了,我仿真后115200的波特率,tx_cnt[9]只有0.88微妙。实际上要8.68微妙,一个波特率周期。万分感谢!!!
回复

使用道具 举报

15

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2019-12-17
在线时间
76 小时
 楼主| 发表于 2020-4-9 18:54:30 | 显示全部楼层
QinQZ 发表于 2020-4-8 17:15
如果程序中只有一个时钟的话,一般不会有建立时间和保持时间不满足的问题。应该是tx_flag拉低太早了,导 ...

大佬前辈,一下子就看出来了,我仿真后115200的波特率,tx_cnt[9]只有0.88微妙。实际上要8.68微妙,一个波特率周期。万分感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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