OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2279|回复: 5

stm32如何检测30个开关的输入

[复制链接]

70

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
976
金钱
976
注册时间
2013-8-14
在线时间
103 小时
发表于 2018-10-24 18:26:17 | 显示全部楼层 |阅读模式
1金钱
想用STM32的IO口检测30个电源开关是否被按下。
这些开关都控制着3.3V电压输出,没按下时,开关没有输出,按下时,开关输出3.3V。

我想把IO口设置为下拉输入,接到开关的3.3V输出上。这样可以检测按键是否按下。


但是,测试时发现,对一个IO口设置为下拉输入,那么3.3V接到这个IO口时,由3.3V流向单片机该引脚的电流为8ma左右。
如果按照这个电流值计算的话,那么30个IO口就会有240ma电流。
而STM32输入灌电流是不允许这么大的。

网上说,stm32内置的上下拉电阻典型值都是40K,

所以说,我这种检测方式是不可行的?
有没有其他更好的方法呢?

最佳答案

查看完整内容[请看2#楼]

1,直接接30个IO口。 2,用74LS164外扩.
谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-24 18:26:18 | 显示全部楼层
1,直接接30个IO口。
2,用74LS164外扩.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2018-10-24 20:52:12 | 显示全部楼层
可以接成矩阵的方式,或者直接用并转串行的芯片
回复

使用道具 举报

0

主题

126

帖子

0

精华

高级会员

Rank: 4

积分
502
金钱
502
注册时间
2016-11-28
在线时间
97 小时
发表于 2018-10-24 21:37:10 | 显示全部楼层
mcp23017 两片就好了
回复

使用道具 举报

0

主题

47

帖子

0

精华

高级会员

Rank: 4

积分
640
金钱
640
注册时间
2018-10-12
在线时间
91 小时
发表于 2018-10-25 08:45:18 | 显示全部楼层
应该是没有那么大电流的,就算电阻是1K,3.3V/1000R=3.3mA,30个同时按下也就100mA这样;最好不要3.3V直接接到IO口,最简单就是每个IO串个1K左右的电阻
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2018-10-25 09:30:43 | 显示全部楼层
io 够,30个开关;io不够用矩阵5*6,11个io;io还不够,矩阵内加二极管,6个io。ad也可以,30个有点多,可以多几个io来做。具体方法请百度。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 10:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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