首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

UART串口收发协议以及时序分析

UART串口收发协议以及时序分析

UART串口收发协议以及时序分析/**************************************************************************
.......IDLE.Start................................UART DATA..................................End...IDLE...
________                                                                                           ______________
              |____< D0 >< D1 >< D2 >< D3 >< D4 >< D5 >< D6 >< D7 >
Bit0  Bit1  Bit2  Bit3  Bit4  Bit5  Bit6  Bit7  Bit08  Bit9
**************************************************************************/

1. 任意分频实现精确波特率详见:http://blog.chinaaet.com/detail/21535.html
\发送&接收数据时序图

2. 串口数据接收时序分析:
(1)状态机:R_IDLE; R_START; R_SAMPLE; R_STOP
+ 查看代码






(2)数据采样在smp_cnt==7即数据中点!

+ 查看代码




(3)接收完停止标志位后:rxd_flag有效,以及rxd_data更新!

+ 查看代码





3. 串口数据发送时序分析:
(1)状态机:R_IDLE; R_SEND(R_SEND发送起始位,数据位,结束位)
+ 查看代码






(2)数据与rxd_cnt:0-9完全对齐,因此采用了组合逻辑输出,如下:

+ 查看代码





(3)在发送完停止位后:txd_flag有效!

+ 查看代码




4. 其他(1)串口收发海量测试:


(2)收发同步时序绝对对齐,即第二个数据接受完毕的同时,第一个数据发送完毕,保持完全的滞后同步!

(3)串口软件问题:
在发送字符串或者HEX长度太长的时候会出现错误,尤其是自动发送10ms,10ms时候的错误很明显,纯属软件问题!

后期可以通过自行设计软件来完善,目前手动发送调试即可!
(4)很神奇的是115200的波特率但是9600竟然可以发送成功!


分享到:[url=]
[/url][url=]
[/url][url=]
[/url][url=]
[/url]

返回列表