0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时间宽度1/baud要求精确到什么范围内呢?

电子工程技术 来源:电子工程技术 作者:电子工程技术 2020-06-24 10:07 次阅读

所谓“时序”从字面意义上来理解,一是“时间问题”,二是“顺序问题”。

先说“顺序问题”,这个相对简单一些。我们在学 UART 串口通信的时候,先 1 位起始位,再 8 位数据位,最后 1 位停止位,这个先后顺序不能错。我们在学 1602 液晶的时候,比如写指令,RS=L,R/W=L,D0~D7=指令码,这三者的顺序是无所谓的,但是最终的 E=高脉冲,必须是在这三条程序之后,这个顺序一旦错误,写的数据也可会出错。

“时间问题”内容相对复杂。比如 UART 通信,每一位的时间宽度是 1/baud。我们初中就学过一个概念,世界上没有绝对的准确。那么每一位的时间宽度 1/baud 要求精确到什么范围内呢?

前边教程我提到过,单片机读取 UART 的 RXD 引脚数据的时候,一位数据,单片机平均分成了 16 份,取其中的 7、8、9 三次读到的结果,这三次中有 2 次是高电平那这一位就是 1,有 2 次是低电平,那这一次就是 0。如果我们的波特率稍微有些偏差,只要累计下来到最后一位停止位,这 7、8、9 还在范围内即可。如图 13-1 所示。

时间宽度1/baud要求精确到什么范围内呢?

图 13-1 UART 信号采集时序图

我们用三个箭头来表示 7、8、9 这三次的采集位置,大家可以注意到,当采集到 D7 的时候,已经有一次采集偏出去了,但是我们采集到的数据还是不会错,因为有 2 次采集正确。至于这个偏差允许多大,大家自己可以详细算一下。实际上 UART 通信的波特率是允许一定范围内误差存在的,但是不能过大,否则就会采集错误。大家在计算波特率的时候,发现没有整除,有小数部分的时候,就要特别小心了,因为小数部分是一概被舍掉的,于是计算误差就产生了。我们用 11.0592M 晶振计算的过程中,11059200/12/32/9600 得到的是一个整数,如果用 12M 晶振计算 12000000/12/32/9600 就会得到一个小数,大家可以算一下误差多少,是否在误差范围内。

1602 的时序问题,大家要学会通过 LCD1602 的数据手册提供的时序图和时序参数表格来进行研究,而且看懂时序图是学习单片机所必须掌握的一项技能,如图 13-2 所示。

时间宽度1/baud要求精确到什么范围内呢?

图 13-2 1602 时序图

大家看到这种图的时候,不要感觉害怕。说句不过分的话,单片机这些逻辑上的问题,只要小学毕业就可以理解的,很多时候是因为大家把问题想象的太难才学不下去的。

我们先来看一下读操作时序的 RS 引脚和 R/W 引脚,这两个引脚先进行变化,因为是读操作,所以 R/W 引脚首先要置为高电平,而不管它原来是什么。读指令还是读数据,都是读操作,而且都有可能,所以 RS 引脚既有可能是置为高电平,也有可能是置为低电平,大家注意图上的画法。而 RS 和 R/W 变化了经过 Tsp1 这么长时间后,使能引脚 E 才能从低电平到高电平发生变化。

而使能引脚 E 拉高经过了 tD 这么长时间后,LCD1602 输出 DB 的数据就是有效数据了,我们就可以来读取 DB 的数据了。读完了之后,我们要先把使能 E 拉低,经过一段时间后 RS、R/W 和 DB 才可以变化继续为下一次读写做准备了。

而写操作时序和读操作时序的差别,就是写操作时序中,DB 的改变是由单片机来完成的,因此要放到使能引脚 E 的变化之前进行操作,其它区别大家可以自行对比一下。

细心的同学会发现,这个时序图上还有很多时间标签。比如 E 的上升时间 tR,下降时间时间 tF,使能引脚 E 从一个上升沿到下一个上升沿之间的长度周期 tC,使能 E 下降沿后,R/W 和 RS 变化时间间隔 tHD1 等等很多时间要求,这些要求怎么看呢?放心,只要是正规的数据手册,都会把这些时间要求给大家标记出来的。我们来看一下表 13-1。

时间宽度1/baud要求精确到什么范围内呢?

大家要善于把手册中的这个表格和时序图结合起来看。表 13-1 中的数据,都是时序参数,本节课的所有时序参数,我都一点点的给大家讲出来,以后遇到同类时序图,就不再讲了,只是提一下,但是大家务必要学会自己看时序图,这个很重要,此外,看以下解释需要结合图 13-2 来看。

tC:指的是使能引脚 E 从本次上升沿到下次上升沿的最短时间是 400ns,而我们单片机因为速度较慢,一个机器周期就是 1us 多,而一条 C 语言指令肯定是一个或者几个机器周期的,所以这个条件完全满足。

tPW:指的是使能引脚 E 高电平的持续时间最短是 150ns,同样由于我们的单片机比较慢,这个条件也完全满足。

tR, tF:指的是使能引脚 E 的上升沿时间和下降沿时间,不能超过 25ns,别看这个数很小,其实这个时间限值是很宽裕的,我们实际用示波器测了一下开发板的这个引脚上升沿和下降沿时间大概是 10ns 到 15ns 之间,完全满足。

tSP1:指的是 RS 和 R/W 引脚使能后至少保持 30ns,使能引脚 E 才可以变成高电平,这个条件同样也完全满足。

tHD1:指的是使能引脚 E 变成低电平后,至少保持 10ns 之后,RS 和 R/W 才能进行变化,这个条件也完全满足。

tD:指的是使能引脚 E 变成高电平后,最多 100ns 后,1602 就把数据送出来了,那么我们就可以正常去读取状态或者数据了。

tHD2:指的是读操作过程中,使能引脚 E 变成低电平后,至少保持 20ns,DB 数据总线才可以进行变化,这个条件也完全满足。

tSP2:指的是 DB 数据总线准备好后,至少保持 40ns,使能引脚 E 才可以从低到高进行使能变化,这个条件也完全满足。

tHD2:指的是写操作过程中,要引脚 E 变成低电平后,至少保持 10ns,DB 数据总线才可以变化,这个条件也完全满足。

好了,表 13-1 这个 LCD1602 的时序参数表已经解析完成了,看完之后,是不是感觉比你想象的要简单,没有你想的那么困难。大家自己也得慢慢学会看这种时序图和表格,在今后的学习中,这方面的能力尤为重要。如果以后换用了其它型号的单片机,那么就根据单片机的执行速度来评估你的程序是否满足时序要求,整体上来说器件都是有一个最快速度的限制,而没有最慢限制,所以当换用高速的单片机后通常都是靠在各步骤间插入软件延时来满足较慢的时序要求。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6039

    文章

    44579

    浏览量

    636457
  • 液晶
    +关注

    关注

    6

    文章

    606

    浏览量

    69669
收藏 人收藏

    评论

    相关推荐

    如果输入的LC回路的参数不在测量范围内,LDC1000会输出什么样的数据?

    您好,我们计划将LDC1000用于一个自动切换量程的多路电感传感器系统,于是在查看SNOA924之后,有如下几个问题: 1.如果输入的LC回路的参数不在测量范围内(例如谐振频率低于5k或者高于
    发表于 12-27 07:25

    ad7124上电开启诊断结果,显示LDO不在范围内,是哪里出错了?

    上电开启诊断结果,并输出--串口打印显示 0x80------模拟LDO不在范围内 万用表实际测量有1.89V,是在范围内的; 请问这种情况是芯片坏了?应该不是芯片坏了吧。数据能输出
    发表于 12-19 08:58

    ADS1230怎么处理才能使信号在芯片量程范围内

    要用10-15V电压给重量传感器,那需要怎么处理才能使信号在芯片量程范围内,加运放?且是负反馈?求高手指教,不胜感激
    发表于 12-19 07:01

    有没有推荐的方法或流程来校准AD7793,确保在100度200度之间的测量准确?

    我正在使用AD7793模数转换器和K型热电偶进行温度测量,目标是在100度200度的范围内获得精确读数。当前使用的配置是1.17V的参考电压和32的增益。 我遇到的主要问题是确定合适的转换
    发表于 12-19 06:47

    请问ldc1101是否能够检测到圆球在摆幅范围内不同位置的相对距离?

    应用场景:线圈在磁性圆球下大约1cm以内,线圈静止,圆球会缓慢水平摆动,摆动幅度约0.5cm。请问ldc1101是否能够检测到圆球在摆幅范围内不同位置的相对距离?
    发表于 12-09 07:04

    ADS1120 AIN1AVSS之间的电压范围是多少

    现在用ADS1120,AVSS和DGND之间是0V,DVDD和AVDD是5V,也就是同一个电源。AIN0输入信号高电位,AIN1负输入信号低电位。 请问AIN1AVSS之间的电压范围
    发表于 11-27 06:06

    ADS131A02 0-50的温度范围内,ADC输出漂移0.1%是怎么回事?

    请问ADS131A02在使用中,增益设置默认,当ADC输入3V时,在0℃-50℃范围内,MCU读取到ADS131输出漂移3mV左右;当输入是0.3V时,漂移量则为0.3mV,请问这个现象的如何解释?符合规格书要求吗?
    发表于 11-22 08:15

    LTV320DAC23输出可以随输入的DAC代码的改变而在一个正负电压范围内改变吗?

    LTV320DAC23数据手册上说作为line out输出时候其电压值为1Vrms。我对这个不太理解,改变输入的DAC代码,输出也不变吗,始终为1Vrms?输出可以为负值吗?我想要的是输出可以随输入的DAC代码的改变而在一个正负电压
    发表于 11-04 07:56

    三星CL11A系列X7R材质电容:宽温范围内稳定工作

    CL11A系列X7R材质电容在宽温范围内确实能表现出较好的稳定性。具体来说,X7R材质的电容器被称为温度稳定型的陶瓷电容器,当温度在-55℃+125℃时,其容量变化为15%。这表明,在这个广泛的温度范围内,X7R材质电容的性能
    的头像 发表于 10-28 15:35 226次阅读
    三星CL11A系列X7R材质电容:宽温<b class='flag-5'>范围内</b>稳定工作

    PCM1794A的INL性能大概在多少lsb范围内

    请教下PCM1794A的INL性能大概在多少lsb范围内
    发表于 09-30 06:34

    SN74ALVC164245的A端和B端电压是否在一个范围内连续可调?

    一个范围内连续可调?datasheet上B的电压3.3V 5V是否是在3.3V5V的范围内随意给一个电压都OK?这个问题是否要我转到时钟页面提问。 问题②:我现在在THS3201输出端测得的信号完全
    发表于 09-19 08:07

    如何在10uV误差允许范围内输出最低至几十微伏uV的交流方波信号?

    题主想要能够在10uV误差允许范围内输出最低至几十微伏uV的交流方波信号,最大频率为100kHz。目前有考虑过通过高位分辨率DAC+搭建无源衰减网络实现。想问问有什么低噪声放大器运放或者什么复合方法能比较准确输出这么低的方波信号吗。似乎噪声隔离也是一个很麻烦的问题。
    发表于 05-31 07:02

    PSoC 4100S Max是否能保证IMO精确度规格低于±2.5%?

    保证 ±1.25%(蓝色框),而不是 ±2.5%? 即使设备具有最差的 IMO 精确度规格(换句话说,温度范围为 -40deg 至 +105deg),如果在较窄的温度范围内使用(例如,-20deg 至 +105deg),是否能保
    发表于 05-20 06:24

    Microsoft Copilot for Security(国际版)将于4月1日在全球范围内正式发布

    今天,我们很高兴地宣布,Microsoft Copilot for Security (国际版) 将于 4 月 1 日在全球范围内正式发布。
    的头像 发表于 03-14 09:11 723次阅读

    浅谈IGBT模块使用温度范围

    IGBT模块的运行温度范围是非常重要的参数。一些设备要求工作在室温下,而另一些设备要求工作在很宽的温度范围内(如-40℃~+65℃)。温度和散热对于系统的可靠和有效运行非常重要。如果实
    的头像 发表于 01-19 16:25 5790次阅读
    浅谈IGBT模块使用温度<b class='flag-5'>范围</b>