打印

IO作为输入时,检测外管脚电平必须要将输出置高吗??

[复制链接]
3869|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qbasic|  楼主 | 2010-8-15 08:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我有两块板,程序一样,初始化时将输入管脚都通过GPIOWRITE(GPIOG,0X0000)输出0,结果一块板在可以检测到输入管脚上电平变化,另一块板只能检测到电平由1变0,从0变1就检测不到,后改程序,将初始化时输入管脚通过GPIOWRITE(GPIOG,0XFFFF)输出1,结果检测就正常,请问这是为什么,难道检测输入时,要将管脚输出置为1,手册上好象没有提到,而且两块板结果不一样????
沙发
香水城| | 2010-8-15 11:30 | 只看该作者
什么板?什么芯片?什么程序?怎么检测?

使用特权

评论回复
板凳
qbasic|  楼主 | 2010-8-15 15:19 | 只看该作者
我用的是STM32F103ZET6,自已做的板子,用IO端口(GPIOG。6)检测端口的电平变化,直接用GPIO_ReadInputData(GPIOG),读取端口数据

使用特权

评论回复
地板
香水城| | 2010-8-15 15:31 | 只看该作者
电路图?板上的滤波电容接好了吗?电源接好了吗?

使用特权

评论回复
5
qbasic|  楼主 | 2010-8-15 15:44 | 只看该作者
用示波器监测IO管脚电平,电平保持为高,但读取时永远是低,这和板上的滤波电容有关吗??,我不是检测一下,我一直读取,通过仿真器调试,读了几十次都是低,而且,只要将该管脚输出置高,读出来立刻就正确。

使用特权

评论回复
6
香水城| | 2010-8-15 15:49 | 只看该作者
如果滤波电容接的不好,芯片有可能工作不正常。

使用特权

评论回复
7
qbasic|  楼主 | 2010-8-15 15:54 | 只看该作者
滤波电容应该是好的,每个电源管脚都有0。1的电容,板子是四层板,有专门的电源层和地层,如果这样接都不能满足要求,那STM32要求就太高了。
问题是为何先输出高,就能检测正确??

使用特权

评论回复
8
香水城| | 2010-8-15 16:09 | 只看该作者
既然2块板有不同的表现,问题应该与板子的差别有关。

板上还有什么?怎么初始化的?

使用特权

评论回复
9
qbasic|  楼主 | 2010-8-15 16:14 | 只看该作者
请教一下,IO即可以做为输出,也可以做为输入,如果设为输入时,输出寄存器是否对管脚有效,从框图上来说,好象IO做为输入时,输出寄存器依然对管脚有效,如果这样成立的话,要检测到正确的IO电平,必须将输出置高,否则必然会被输出拉低电平,检测高电平就可能出错。

使用特权

评论回复
10
香水城| | 2010-8-15 16:28 | 只看该作者
请教一下,IO即可以做为输出,也可以做为输入,如果设为输入时,输出寄存器是否对管脚有效,从框图上来说,好象IO做为输入时,输出寄存器依然对管脚有效,如果这样成立的话,要检测到正确的IO电平,必须将输出置高, ...
qbasic 发表于 2010-8-15 16:14


如果设为输入时,输出寄存器仍然对管脚有效,则会对外部电路造成干扰,这种情况是不可能的!

你可以看看STM32的GPIO,配置为输入模式的框图:

STM32_GPIO_Input_Configuration.GIF (14.49 KB )

STM32_GPIO_Input_Configuration.GIF

使用特权

评论回复
11
李冬发| | 2010-8-15 21:48 | 只看该作者
这是啥东西?

未命名.PNG (4.74 KB )

未命名.PNG

使用特权

评论回复
12
香水城| | 2010-8-15 22:06 | 只看该作者
这是啥东西?
李冬发 发表于 2010-8-15 21:48


肖特基触发器——你不认识这几个字吗?

使用特权

评论回复
13
李冬发| | 2010-8-16 01:28 | 只看该作者
CMOS工艺还是肖特基工艺?

使用特权

评论回复
14
IJK| | 2010-8-16 09:43 | 只看该作者
CMOS工艺还是肖特基工艺?
李冬发 发表于 2010-8-16 01:28


呵呵,应该是翻译错了,按道理应该是施密特触发器

使用特权

评论回复
15
香水城| | 2010-8-16 09:54 | 只看该作者
呵呵,应该是翻译错了,按道理应该是施密特触发器
IJK 发表于 2010-8-16 09:43


呵呵,该打PP,确实是翻译错了:

STM32_GPIO_Input_Configuration_EN.GIF (12.12 KB )

STM32_GPIO_Input_Configuration_EN.GIF

使用特权

评论回复
16
qbasic|  楼主 | 2010-8-16 21:01 | 只看该作者
我又试了一下,同一端口(GPIOG),只有一个口检测不正确,其它的口都检测正确,是不是端口坏了,这么容易就坏了??

使用特权

评论回复
17
香水城| | 2010-8-16 21:26 | 只看该作者
哪个脚? 换一个芯片呢?

使用特权

评论回复
18
IJK| | 2010-8-17 09:38 | 只看该作者
我又试了一下,同一端口(GPIOG),只有一个口检测不正确,其它的口都检测正确,是不是端口坏了,这么容易就坏了??
qbasic 发表于 2010-8-16 21:01


同一端口(GPIOG),只有一个引脚检测不正确,要看这个引脚是否被用于复用功能(Alternate function)

使用特权

评论回复
19
qbasic|  楼主 | 2010-8-17 17:58 | 只看该作者
GPIOG。6脚有问题,再次说一下,是一块板有问题另一块板没问题,而且将输出置高就正常

使用特权

评论回复
20
香水城| | 2010-8-17 18:13 | 只看该作者
不明白为什么会这样,也许是这颗芯片有问题,你换一片试试看?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

34

帖子

0

粉丝