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

[复制链接]
4945|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 | 显示全部楼层
电路图?板上的滤波电容接好了吗?电源接好了吗?
 楼主| qbasic 发表于 2010-8-15 15:44 | 显示全部楼层
用示波器监测IO管脚电平,电平保持为高,但读取时永远是低,这和板上的滤波电容有关吗??,我不是检测一下,我一直读取,通过仿真器调试,读了几十次都是低,而且,只要将该管脚输出置高,读出来立刻就正确。
香水城 发表于 2010-8-15 15:49 | 显示全部楼层
如果滤波电容接的不好,芯片有可能工作不正常。
 楼主| qbasic 发表于 2010-8-15 15:54 | 显示全部楼层
滤波电容应该是好的,每个电源管脚都有0。1的电容,板子是四层板,有专门的电源层和地层,如果这样接都不能满足要求,那STM32要求就太高了。
问题是为何先输出高,就能检测正确??
香水城 发表于 2010-8-15 16:09 | 显示全部楼层
既然2块板有不同的表现,问题应该与板子的差别有关。

板上还有什么?怎么初始化的?
 楼主| qbasic 发表于 2010-8-15 16:14 | 显示全部楼层
请教一下,IO即可以做为输出,也可以做为输入,如果设为输入时,输出寄存器是否对管脚有效,从框图上来说,好象IO做为输入时,输出寄存器依然对管脚有效,如果这样成立的话,要检测到正确的IO电平,必须将输出置高,否则必然会被输出拉低电平,检测高电平就可能出错。
香水城 发表于 2010-8-15 16:28 | 显示全部楼层
请教一下,IO即可以做为输出,也可以做为输入,如果设为输入时,输出寄存器是否对管脚有效,从框图上来说,好象IO做为输入时,输出寄存器依然对管脚有效,如果这样成立的话,要检测到正确的IO电平,必须将输出置高, ...
qbasic 发表于 2010-8-15 16:14


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

你可以看看STM32的GPIO,配置为输入模式的框图:
STM32_GPIO_Input_Configuration.GIF
李冬发 发表于 2010-8-15 21:48 | 显示全部楼层
这是啥东西?
未命名.PNG
香水城 发表于 2010-8-15 22:06 | 显示全部楼层
这是啥东西?
李冬发 发表于 2010-8-15 21:48


肖特基触发器——你不认识这几个字吗?
李冬发 发表于 2010-8-16 01:28 | 显示全部楼层
CMOS工艺还是肖特基工艺?
IJK 发表于 2010-8-16 09:43 | 显示全部楼层
CMOS工艺还是肖特基工艺?
李冬发 发表于 2010-8-16 01:28


呵呵,应该是翻译错了,按道理应该是施密特触发器
香水城 发表于 2010-8-16 09:54 | 显示全部楼层
呵呵,应该是翻译错了,按道理应该是施密特触发器
IJK 发表于 2010-8-16 09:43


呵呵,该打PP,确实是翻译错了:
STM32_GPIO_Input_Configuration_EN.GIF
 楼主| qbasic 发表于 2010-8-16 21:01 | 显示全部楼层
我又试了一下,同一端口(GPIOG),只有一个口检测不正确,其它的口都检测正确,是不是端口坏了,这么容易就坏了??
香水城 发表于 2010-8-16 21:26 | 显示全部楼层
哪个脚? 换一个芯片呢?
IJK 发表于 2010-8-17 09:38 | 显示全部楼层
我又试了一下,同一端口(GPIOG),只有一个口检测不正确,其它的口都检测正确,是不是端口坏了,这么容易就坏了??
qbasic 发表于 2010-8-16 21:01


同一端口(GPIOG),只有一个引脚检测不正确,要看这个引脚是否被用于复用功能(Alternate function)
 楼主| qbasic 发表于 2010-8-17 17:58 | 显示全部楼层
GPIOG。6脚有问题,再次说一下,是一块板有问题另一块板没问题,而且将输出置高就正常
香水城 发表于 2010-8-17 18:13 | 显示全部楼层
不明白为什么会这样,也许是这颗芯片有问题,你换一片试试看?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部