打印

stm32复位后端口是高阻态吗?

[复制链接]
16188|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nylyt|  楼主 | 2009-9-25 12:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用了STM32F103C6T6,通过一个端口加上缓冲芯片74LV07,低电平驱动光藕。发现有时上电过程中光藕带的负载导通一下。请问GPIO复位后看手册是FLOAT输入,是高阻态的吗?如果是高阻态光藕不应该瞬间导通的。
沙发
香水城| | 2009-9-25 12:40 | 只看该作者

STM32复位后端口是高阻态

STM32复位后端口是高阻态,高阻态意味着这个信号线很容易受到干扰。

对于你的低电平驱动光藕,最好在它的输入端加一个弱上拉电阻,这样保证在上电时这个信号线的电平是稳定的。

使用特权

评论回复
板凳
laotang09| | 2009-9-25 13:51 | 只看该作者
香版主,弱上拉电阻的具体含义?
这个问题我们也在STM32的使用中会遇到。

使用特权

评论回复
地板
香水城| | 2009-9-25 14:00 | 只看该作者
弱上拉电阻 就是一个大于10K的电阻,可以是20K~50K。

使用特权

评论回复
5
nylyt|  楼主 | 2009-9-26 13:02 | 只看该作者
74LV07是OC门输出,3.3转换5V后带个上拉5K1然后低电平驱动光藕。香主的意思是STM32驱动74LV07的时候输出端口也要加个20K的上拉电阻是吗?

使用特权

评论回复
6
香水城| | 2009-9-26 16:15 | 只看该作者
这个问题的关键是,看你的74LV07在输入端为高阻悬空的时候,输出端是什么状态?如果输入端为高阻悬空时,它能够输出高,自然没有问题,但如果输入端为高阻悬空时,它的输出端为低,就必须在它的输入端就上拉电阻。

你最好看看这个74LV07的手册,它的输出端是如何动作的,尤其是在上电时是什么样的。

使用特权

评论回复
7
nylyt|  楼主 | 2009-9-27 20:06 | 只看该作者
74lv07手册无说明上电后如果输入是高阻的情况下,输出是什么状态.不过根据情况最可靠的情况还是在上电的时候加个上拉电阻

使用特权

评论回复
8
nylyt|  楼主 | 2009-10-20 12:36 | 只看该作者
7407是开漏输出,我在STM32的GPIO输出上接一10K上拉电阻但仍然光藕在上电的时候导通[img][/img]

使用特权

评论回复
9
nylyt|  楼主 | 2009-10-20 12:41 | 只看该作者
不知道如何发图片

使用特权

评论回复
10
zyok| | 2009-10-20 12:42 | 只看该作者
高级回复/添加附件

使用特权

评论回复
11
nylyt|  楼主 | 2009-10-20 12:46 | 只看该作者
这是部分驱动单元

111.JPG (20.73 KB )

111.JPG

使用特权

评论回复
12
nylyt|  楼主 | 2009-10-20 12:52 | 只看该作者
怕描述不清楚,7407是开漏输出的缓冲器。7407通过5K1电阻接到5V系统。同时也是3.3v系统和5V系统的转化

111.JPG (20.77 KB )

111.JPG

使用特权

评论回复
13
nylyt|  楼主 | 2009-10-20 20:19 | 只看该作者
没人回答呢?我把STM32的IO线断开,上电再也不会误动作.STM32上电过程IO不是高阻吗?我接了上拉应该是高电平才对啊.但实际情况不是.

使用特权

评论回复
14
香水城| | 2009-10-20 20:47 | 只看该作者
你的上拉电阻是上拉到STM32端的电源,还是上拉到设备端的电源?如果是上拉到STM32端的电源,在上电的电压达到正常的工作电压前,相对于设备端的电源可不是高电平呀。

你可以用示波器看看STM32的IO口,在上电前、上电过程中和上电结束后的状态,同时观察一下STM32端的电源电压状况。

顺便问一下,你用的是哪个I/O口?

使用特权

评论回复
15
nylyt|  楼主 | 2009-10-20 20:53 | 只看该作者
GPIO_SetBits(GPIOA, GPIO_Pin_3); //T1
  GPIO_SetBits(GPIOA, GPIO_Pin_2); //T2
  GPIO_SetBits(GPIOA, GPIO_Pin_1); //T3
  GPIO_SetBits(GPIOA, GPIO_Pin_10); //T13
  GPIO_SetBits(GPIOA, GPIO_Pin_9); //T14
GPIO_SetBits(GPIOB, GPIO_Pin_0); //T4
  GPIO_SetBits(GPIOB, GPIO_Pin_1); //T5
  GPIO_SetBits(GPIOB, GPIO_Pin_10); //T6
  GPIO_SetBits(GPIOB, GPIO_Pin_11); //T7
  GPIO_SetBits(GPIOB, GPIO_Pin_8); //T8
  GPIO_SetBits(GPIOB, GPIO_Pin_9); //T9
  GPIO_SetBits(GPIOB, GPIO_Pin_5); //T10
  GPIO_SetBits(GPIOB, GPIO_Pin_6); //T11
  GPIO_SetBits(GPIOB, GPIO_Pin_7); //T12
用的是PA和PB,STM32输出接一10K上拉电阻.光藕端的电源是5V,STM32电源是从5V稳压到3.3V.STM32的IO输出接7407缓冲开漏输出接光藕7407的输出接上拉到5V.如果STM32复位是高阻那我有一上拉电阻可以强制到高啊

使用特权

评论回复
16
nylyt|  楼主 | 2009-10-20 20:56 | 只看该作者
用的是PA和PB,STM32输出接一10K上拉电阻到3.3V.光藕端的电源是5V,STM32电源是从5V稳压到3.3V.STM32的IO输出接7407,而7407的输出通过电阻上拉到5V.然后接光藕的LED负

使用特权

评论回复
17
nylyt|  楼主 | 2009-10-20 20:57 | 只看该作者
图是很清楚的

使用特权

评论回复
18
nylyt|  楼主 | 2009-10-20 21:00 | 只看该作者
通过做一实验如果把STM32断开,去掉上拉电阻.让7407的inputs悬空也不会使后设备动作(上电过程).

使用特权

评论回复
19
yybj| | 2009-10-21 10:55 | 只看该作者
是的,STM32复位后是高阻态

使用特权

评论回复
20
nylyt|  楼主 | 2009-10-21 11:05 | 只看该作者
问题已解决,谢谢。STM32本身无问题。问题出在使用库函数当从浮空输入转成推挽输出的时候。虽然接着让输出为高。但可控硅已导通。对时序包括位操作还是直接用寄存器类汇编好。用库函数根本不知道用了多久时间。
STM32例子中包括对GPIO操作初始化有时侯在要求高的系统应用中真的误导人,还是要看汇编窗口啊

使用特权

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

本版积分规则

146

主题

296

帖子

1

粉丝