你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ADC关闭全部通道施密特触发器,为什么上拉的管脚会被拉低

[复制链接]
iyumi 提问时间:2018-8-18 15:23 /
本帖最后由 iyumi 于 2018-8-20 10:12 编辑

用接口PD2和PD3作为ADC的输入,PD5,PD6做为key1和key2的输入
捕获.JPG
捕获5.JPG

GPIO初始化:
捕获1.JPG

ADC初始化,897行,关闭全部施密特触发器
捕获2.JPG

ADC初始化会执行到下边的260行
捕获3.JPG

执行前,PD5与PD6都是高电平
1184968696.jpg

执行后,PD5和PD6都变成了低电平并且不会再变为高
1464392056.jpg

把关闭全部施密特触发器改为关闭对应管脚的施密特触发器就不会把PD5和PD6管脚拉低了,但是没搞明白:
1、让ADC1->TDRL = 0x0FF与PD5和PD6有什么关系,为什么PD5和PD6这两个口的电平会被拉低呢?
2、施密特触发器有什么用,关闭可以降低功耗,打开有什么好处吗?

知道的大神请解答一下,谢谢
收藏 评论4 发布时间:2018-8-18 15:23

举报

4个回答
sincomaster 回答时间:2018-8-18 16:31:03
本帖最后由 sincomaster 于 2018-8-18 16:40 编辑

库函数不懂,帮顶我刚看了下,你这样置位ADC_TDRL |= 0xff,
是不是把这个寄存器的6,7位也给置位了,手册上说这两个位必须是0,ADC_TDRH也是一样必须是0
你改下试下
2018-08-18_163556.jpg

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

sincomaster 回答时间:2018-8-18 16:53:11
你问的斯密特的作用,在IO普通作用时用于波形整形,如下图所示输入进来的紫色方波有抖动,经过斯密特之后就去掉了,然后ADC时就必须关闭
2018-08-18_164828.jpg
feixiang20 回答时间:2018-8-18 23:20:45
楼上解释了很多了,空闲状态配置为高电平

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

iyumi 回答时间:2018-8-20 10:12:03
sincomaster 发表于 2018-8-18 16:31
库函数不懂,帮顶我刚看了下,你这样置位ADC_TDRL |= 0xff,
是不是把这个寄存器的6,7位也给置位了,手册上说这 ...

中文版的那个手册已经改了,而且感觉有笔误,下边是最新版的英文版本,TDRL的[7:0]都是可读写的,原因不是这个

捕获.JPG

经过大神的解答,我又在网上搜了一下,发现下边这个贴子:http://www.eepw.com.cn/article/201609/310076.htm
帖子最后边有这样一句话:“当施密特触发器被关闭后,不管外部引脚电平如何变化,它的输出恒定为0
下图中打红叉的地方,禁止施密特触发器以后,这条路就断了
165318zm2h2zthlvotpmcv.jpg

总结一下:就是作为输入时对应的施密特触发器必须使能,否则管脚的信号进不来;作为ADC时,对应的施密特触发器可以禁止,可以不禁止,禁止了可以降低一点功耗

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版