找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20199|回复: 3
打印 上一主题 下一主题
收起左侧

单片机UART串口通讯波形实测

[复制链接]
跳转到指定楼层
楼主
ID:91442 发表于 2015-10-29 12:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了对串口通讯的过程有所了解,采用Saleae 的逻辑分析仪对STC15F204EA采用定时中断模拟的串口信号进行了实时抓取,以确认这种通讯方法的稳定性。

STC15F204EA上没有硬件UART口,只能通过定时中断来仿真,在通用IO口上模拟串行通信。
试验时STC15F204的参数设置如下:

采用定时器0工作于1T模式0(16位自动装载),系统主时钟频率设置在11.0592MHz。串行通信参数设置:BAUD
115200,8位数据,1个停止位,无奇偶校验,发送顺序为低位先发送。
信号抓取的设置如下:

按照起止式异步通讯协议,数据包括一个起始位,n个数据位,一个奇偶校验位,m个停止位。格式如下图所示。当不选择奇偶校验时,该位不存在。


以下为实际测试的结果:
                              字符0x0,0xFF循环的波形,有点标识的是有效数据采样点,在起始位和停止位均不标识。
定时信息:从起始位低电平起,连续8个高电平,然后一个停止位高电平。完成后开始下一个循环。

连续的数据波形:0xFF,0x00,....,0x80的波形。可以看出,如果要发送0b0000 0001, 按时间顺序则是,低(起始位),高(1),低(0),低(0),低(0),低(0),低(0),低(0),低(0)。但是后面的7个连续的低电平连接在一起,就形成了一个较长低电平。
0xFF0x00 ~ 0x04的波形,可以看出,先发送低位,然后是高位。
0x04-0x80的波形
每个字符的发送时间为87.9us。
  
停止位长度9.042us,起始位长度也是9.042us。
   
全部抓取0x55时的波形如下:
单个高电平宽度8.75us
中间插入延时1.029ms的延时循环。
以下是对波特率的理解:
波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。
当波特率变化时,单个位的周期发生变化测试如下:
2400:t=1/2400(s)=0.4167ms

9600:t=1/9600=0.1041ms

38400:

57600:


通过以上的波形可以看出,只要准确的设置定时中断的时间,就可以准确的模拟UART数据的通讯过程。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:106320 发表于 2017-10-31 11:45 | 只看该作者
传送的是八位数据为什么是七位呢?
回复

使用道具 举报

板凳
ID:252672 发表于 2017-11-24 16:58 | 只看该作者
有没有相应的程序,可以参考下吗?
回复

使用道具 举报

地板
ID:252672 发表于 2017-11-24 17:00 | 只看该作者
你好楼主有没有上边的列子的程序啊?能发跟我参考下吗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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