• 正文
  • 相关推荐
申请入驻 产业图谱

【CW32L012】MCU的IO口阈值判断

08/11 08:54
226
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

MCUGPIO外设是我们最常用的外设,也是应用场景最多的外设,我们时常需要读取IO口的高低电平,输出IO口的高低电平,输出的是模拟电压或者是数字电压,模拟电压是根据模拟外设输出的连续电压,不在这篇文章的探讨范围,输出的数字电压是0和1,只有0V或者给芯片供电的VDD。使用GPIO数字输入功能的时候,读取外部电压,高于多少V的电压MCU判断为高电平,低于多少V的电压判断为低电平,这就是一个比较有意思的事情了,而我这篇文章就是要探讨我们MCU对于外部输入电压高低电平的判断。

首先给大家阐明的就是我们测试的平台:

MCU:CW32L012

MCU供电电压:VDD=3.264V:

测试IO:PA10

测试方法:使用了两种测试方法,后文详细阐述

接着我们看一下官方给出的理想实验数据,这是IO口的电气特性:

这是GPIO外设的结构框图:

结构框图中的这个符号需要提前给大家介绍一下,这个三角符号代表的硬件就是施密特触发器,这个器件对于IO口高低电平的判断有极大的影响,他的本质就是带两个不同阈值电压比较器,有回差(滞环),抗抖动、抗噪声能力极强,专门解决信号毛刺、开关弹跳、波形整形问题,这对于读取外部电压是极其重要的。

施密特触发器的特征是:电压从低往高上升:必须冲到 ≥上限阈值,输出才翻转为高电平,电压从高往高下降:必须跌到 ≤下限阈值,输出才翻转为低电平

方法一:

按数据手册,先调节好相应的电压值(如:0.3*VDD、0.4*VDD、0.5*VDD……),然后分别直接加到IO口上,看MCU程序的高低电平读取结果;

测试结果:

低电平:<0.4*VDD(1.305V)

高电平:>0.5*VDD(1.634V)

中间的电平(1.3~1.6):可能为高,也可能为低

由于测试时,是先调好电压,再接到IO口上,测试完后去掉连接(此时IO口悬空),等调好下一个电压,又再接到IO口上),故此对中间的电平不能起到“施密特触发迟滞”的作用!

方法二:

IO口固接在一个电位器的调节输出端,从0开始增加电压,或者从3.3V开始减少电压,看看MCU程序的高低电平读取结果;

方法二的IO口是一直接在电位器的输出上的,方法一是先调好电压,再接到IO上,测试完后去掉连接(此时IO口悬空),等调好下一个电压,又再接到IO上

测试结果:

1. 从0开始增加电压,增到1.37V时,MCU从原来的低,判定为高。(约为0.4*VDD)

2. 从3.3V开始减少电压,减到1.84V时,MCU从原来的高,判定为低。(约为0.56*VDD)

回差约为:1.84-1.37=0.47V,与数据手册基本一致;并且确认是“施密特触发迟滞电压”起作用了

这是测量的过程,用万用表实测加在PA10IO口上的电压,软件进入调试模式,打断点看程序断在了高电平的判断里还是停在了低电平的判断里。

 


扫码加入QQ群3群| 610403240

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

以开放、共享、互助为理念,致力于构建武汉芯源半导体CW32系列MCU生态社区。无论是嵌入式MCU小自还是想要攻破技术难题的工程师,亦或是需求解决方案的产品经理都可在CW32生态社区汲取营养、共同成长。