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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: zhangjiaxun

谁做过uart的进来

[复制链接]
发表于 2009-11-17 16:28:29 | 显示全部楼层
7# qushaobo
您用不同波特率传输的话,应该会接收出错吧?(因为协议要求必须同波特率吧)
不然就是您发送之后,对数据有个存储,在以不同的波特率发给接收端的吧?
发表于 2009-11-17 16:32:47 | 显示全部楼层
10# zhangjiaxun
我理解是这样的,本来就是用正常的波特率传输(比如9600),但是为了降低传输的误码率,采用16倍波特率的时钟采样!这样可以降低误码率。
我也是用16倍波特率做的设计,验证成功。只是目前不能实现全双工,只做成半双工通信,不知道您有这方面建议不?谢谢
 楼主| 发表于 2009-11-17 20:19:21 | 显示全部楼层
楼上,你的意思是16分频的时钟是给RECEVIER用的?可是我怎么看到有的设计是给TRANSMITTER用的? 我还是不知道给TRANSMITTER有什么用?甚至本身这个16分频出来的时钟有什么用?
发表于 2009-11-17 22:09:58 | 显示全部楼层
本人对UART非常熟悉,擅长用verilog语言编写UART收发电路。我来给你讲讲:
(1)若外部接口提供时钟信号CLK1,你的接收电路用此时钟clk1进行数据解调,那你的接收电路就与外部设备的发送电路同步(同一个时钟源),但要注意,由于传输延迟的原因,往往外部设备采用CLK1的上升沿发送数据,而你的接收设备就必须采取下降沿进行数据接收(反之亦然),如同步RS485通讯。
(2)若外部设备采用CLK1发送数据,但外部设备不提供时钟信号CLK1,那你就需要自己提供解调时钟源CLK2(发送与接收不同时钟源,称为异步电路),并且CLK2的频率F2需要为CLK1的频率F1的整数倍(F2 = n *CLK1,n通常为16,且越大越好),接收电路在每16个CLK2的中点(第8个CLK2)采集一个数据位,这样就能保证接收电路的采样波特率与发送电路的波特率一致(虽然外部发送设备未提供采样时钟,但接收电路仍可以以同样的波特率进行数据的接收)。如异步RS422通讯。
发表于 2009-11-17 22:21:50 | 显示全部楼层
再说点多余的,供大家参考:通常的异步RS422接收,由于每个字节中间有间隔(起始位及停止位),所以接收电路的硬件协议门阵代码的编写还是比较容易的,最难的异步串行数据接收莫过于PCM数据流的接收,由于数据是连续不断的发送与接收(),所以要从外部设备发来的数据流中提取出时钟源CLK,再用此CLK进行数据的解码,由于此数据的连续性,所以解码出来的CLK要不断进行调整,才可以稳定的进行数据的接收。
呵呵!大家要想在串行通讯方面长进的话,不妨自己动手设计一下PCM流的发送与接收。本人目前也只编写了发送代码,接收更难,有兴趣大家试试看。
发表于 2009-11-18 13:32:56 | 显示全部楼层
15# sanfeng216
恩,很有用哦~~谢谢您了!想问您有没有做过硬件上的RS232与PC机的“全双工”通信呢?调试PC机端串口时,
您用的软件是什么?我用“串口调试助手”,可是好像不能成功?谢谢您哈!
发表于 2009-11-18 13:38:30 | 显示全部楼层
13# zhangjiaxun
是16倍频,也就是传输波特率的16倍啊~~~不是分频。
理论上你也可以不要16倍频,采用波特率通信就可以了,但是为了提高误码率才这样做的。这样以后,你那个波特率时钟就相当于没有用了,它只是双方的一种协议,你需要保证每波特率时钟接收(发送)一位就好了。所以接收端是最好16倍频的,这样保证正确无误的接收;而发送端,我觉得无所谓了,不一定要倍频,只要你保证是以相同波特率发送的就可以了!
发表于 2009-11-22 21:37:54 | 显示全部楼层
虽然说是16分频时钟采样,但是有时候就是用中间三个数据,3取2来定下这个数即可。
发表于 2014-4-27 10:36:38 | 显示全部楼层
回复 14# sanfeng216


    您好,我想咨询您一点问题。我现在也是初次接触uart,要进行串口通信,自己设计一个uart,遵循的是rs232协议。我现在不明白的是,要是我这设计一个uart,与pc机上的串口通信,那么我的uart在接收到串口的数据时,是需要每隔16个时钟周期采样一次,还是每一个时钟周期都会发送过来1bit的数据。这里的时钟周期的意思是指基于波特率而转换过来的,

   因为我看到的关于uart的设计,是在接收到数据位时,每隔16个周期采样一次。然后又看到了一个说的是每个周期采样一次。
   因此,可能是我在这里搞混了,不是很明白。
发表于 2014-5-15 14:29:14 | 显示全部楼层
学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-3 22:26 , Processed in 0.021116 second(s), 6 queries , Gzip On, Redis On.

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