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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3045|回复: 6

[求助] UART的接收程序的疑问---下降沿的判断?

[复制链接]
发表于 2016-10-31 15:55:45 | 显示全部楼层 |阅读模式

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

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

x
在UART接收程序中,总需要判断下降沿,以确定起始位在哪里。
然后现在有一个疑问,如何区分“起始位之前的那个下降沿”与“帧内部的bit数据的下降沿”?
可以分两种情况来说:
(1)如果是FPGA程序先运行,串行数据再进来。
       那么第一个下降沿肯定紧接着起始位,然后在一帧的长度之后,如果有下降沿,那么肯定也是下一帧的起始位。
       依次类推,循环往复。
(2)如果是串行数据先进来,然后FPGA程序再运行。
      那么,FPGA程序会不断的判断出下降沿,那么怎么知道起始位是在哪一个下降沿之后呢?
++++++++++++++++++++
      针对第二种情况,我想可以通过将输入数据分流为10个数据通道,然后看哪个通道的第一位数据始终是0,
第10位始终为1,重复次数超过N次,然后该通道的数据就是那个边沿对齐的通道,就可以作为正确数据缓冲接收了。
+++++++++++++++++++++++++++++++++
但是,我查看了网上各种版本的UART程序,好像都没有处理这种问题。
难道是在实际运用中,均不可能遇到第(2)种情况吗?谢谢各位。
发表于 2016-10-31 17:10:50 | 显示全部楼层
用状态机就可以区分是检测到start的下降沿还是bit1->0
基本上状态是seek -> start -> d0 - 7 -> stop -> seek or start的类似流程
 楼主| 发表于 2016-10-31 17:42:08 | 显示全部楼层
回复 2# 南宫恨
      谢谢南宫同学的回复
      如我帖子所说的,第(1)种情况,用状态机可以,因为起始位的下降沿肯定会“第一个”出现,然后会“周期性”的出现。
但是在第(2)种情况下,如果程序刚好开始工作的时候,接收进来的数据就刚好在BIT5之类的帧的中间位置,
然后又恰好碰到了下降沿,这时状态机的“判决条件”是什么? 因为我看不出来“起始位的下降沿”与“BIT数据的下降沿”的区别。
发表于 2016-10-31 17:54:18 | 显示全部楼层
一般来说这样就需要配流控了,不知道你这里面有没有,通常uart都带rtx cts,如果把发送rts disable电平,对方应该不会再发送数据,处于idel状态,这时候你可以清空接收buffer再使能rts,就OK了
 楼主| 发表于 2016-11-1 08:47:28 | 显示全部楼层
回复 4# 南宫恨
原来是这样,就是需要应答机制了。感谢感谢。
发表于 2016-11-1 09:09:38 | 显示全部楼层
回复 5# YYFFLLMMNN



rts cts一般uart都会有这两跟线,做硬流控,你可以看看有没有,或者是不是有软流控
 楼主| 发表于 2016-11-1 09:23:22 | 显示全部楼层
回复 6# 南宫恨
好的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-7-5 08:00 , Processed in 0.019789 second(s), 8 queries , Gzip On, MemCached On.

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