打印

GPIO问题

[复制链接]
2753|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leewen|  楼主 | 2008-5-21 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一下。我将GPIO设置成如下:
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_8;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
外加上拉电阻。进行I2C通讯。在应答时设置为:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    GPIO_Init(GPIOC, &GPIO_InitStructure) ;

为什么在I2C应答时,GPIO口电平拉不下来,在1.8V左右。
对于GPIO的设置有问题么???
而且在我GPIO开漏配置模式下,不外部上拉,对它置高,有2V左右的电平。这样的电平对么?
沙发
香水城| | 2008-5-21 15:43 | 只看该作者

PC6和PC8不是I2C的管脚

外部上拉电阻是多大?

使用特权

评论回复
板凳
leewen|  楼主 | 2008-5-21 19:22 | 只看该作者

rePC6和PC8不是I2C的管脚

我不是用硬件I2C的。只是用两个GPIO进行模拟的。原先是上拉1K的。
后来把外部上拉到10K后,GPIO口电平拉不下来,在0.5V左右。

但是另外一个问题:在GPIO为开漏配置模式下,不加外部上拉,对它置高,进行验证,应该是低电平的吧。结果有2V左右的电平。这样的电平对么?

使用特权

评论回复
地板
香水城| | 2008-5-21 21:47 | 只看该作者

配置为开漏模式的GPIO必须外加上拉电阻

一般外部上拉电阻上能够有至少1mA左右的电流,这样看来上拉10K就不够了。

如果配置为开漏模式的GPIO没有加上拉电阻,这个口基本等同于浮空,因此很难确定它的电平数值。

使用特权

评论回复
5
leewen|  楼主 | 2008-5-22 10:27 | 只看该作者

配置为开漏模式的GPIO是要外加上拉电阻

配置为开漏模式的GPIO在应用中是要外加上拉电阻,这个了解。
但如果没外加上拉电阻,GPIO等同浮空,没给它置高时为0V,置高差不多为2V。虽不确定他的电平数值,但它是怎么来的??我给他置高,它应该没有驱动能力拉高吧?会不会是这个原因导致在I2C应答时电平拉不下来呢?

使用特权

评论回复
6
香水城| | 2008-5-22 10:46 | 只看该作者

不知道你是想解决实际问题还是要搞清这个工作原理

如果你在开发中有实际的问题要解决,我可以尽力帮助你;但如果是要研究它的实现机制,研究它的工作原理,我就很难帮你了。

你可以看看STM32技术参考手册中第79页的图12,这是一个I/O管脚的内部构造图,也许对你的问题有所帮助。图中可以看到,即使是开路配置,管脚上仍然有两个处于截止的P-MOS和N-MOS管,和两个反相的保护二极管,因为他们的电阻不是无穷大,所以形成一个弱上拉,估计这是你看到现象的原因。

使用特权

评论回复
7
leewen|  楼主 | 2008-5-22 11:00 | 只看该作者

RE

谢谢香主的热心帮助。
正因为开发中有实际问题,才想搞清楚它工作原理。看了那图,也就说它还不是彻彻底底的开漏了。

使用特权

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

本版积分规则

45

主题

102

帖子

2

粉丝