您的位置:首页 > 其它

UART_RECV详细设计方案

2014-05-25 15:01 1131 查看

1. UART_RECV简介:

串口是用的非常多的一种接口,实现原理比较简单,基本所有CPU芯片都配置有串口,所以经常被用来作为调试接口。

2. UART_RECV规格:

实现9600波特率的串口接收,上位机串口软件发送的数据,可以被接收到。

3. 实现原理

以波特率9600为例子说明,波特率9600发送一个bit的时间为1s/9600=104us,即每隔104us发送一个数据。

104us = 104000ns 50M时钟的一个周期时间为20ns要远小于104000ns,所以可以用50M时钟产生的计数器来计数,然后根据时间来采样数据。
起始位可以用一个下降沿检测电路,这个在沿检电路一节有详细简介,此处只做使用,简介见检电路一节。
采样数据有个基本要求就是要在数据稳定时候采样,这样可以最好的满足寄存器的建立时间和保持时间,得到一个稳定的值,从时序图上可以看出,在数据bit位的中间位置数据最为稳定,所以我们采样点设在中间。如下图红色线条所示:

下图对应采样点的时间:
新建一个计数器,50Mhz为时钟,那么计数器变化一次时间为20ns。
由于一次完整数据接收需要有1144000ns时间,所以计数器必须记到1144000ns时间。
1144000ns/20ns = 57200,所以需要16位计数器。

由于9600波特率一个传输周期为104us,所以第一个红线位置为104us+104us/2=156us,其他位置依次类推,所以对应的计数器如下计算:

D0 对应计数器的156000ns/20ns = 7800
D1 对应计数器的260000ns/20ns = 13000
D2 对应计数器的364000ns/20ns = 18200
D3 对应计数器的468000ns/20ns = 23400
D4 对应计数器的572000ns/20ns = 28600
D5 对应计数器的676000ns/20ns = 33800
D6 对应计数器的780000ns/20ns = 39000
D7 对应计数器的884000ns/20ns = 44200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: