打印
[STM32F1]

STM32单片机io口开漏加上拉5V不能输出5V电平的问题

[复制链接]
30589|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinwei|  楼主 | 2014-9-12 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我这使用STM32F103单片机,使用3.3V供电。现准备驱动一个5V的液晶屏。所以对io口加了上拉电阻到5V,并且io口输出方式为开漏,但是发现输出的高电平只能到3.3V,不能拉到5V(不接液晶屏单独测管脚也是一样)。使用带FT的兼容5V的管脚现象也是一样。这是正常的吗?
    以前用别的厂家51的单片机用这样的方法都是可以到5V的。哪位兄弟可以解答下!多谢!
沙发
huzi2099| | 2014-9-12 19:50 | 只看该作者
io到输出间加个电阻

使用特权

评论回复
板凳
airwill| | 2014-9-12 20:57 | 只看该作者
这不正常. 带FT的兼容5V的管脚, 肯定能上拉到 5V.
io口输出方式为开漏, 请再验证一下这个设置吧

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xinwei + 1 赞一个!
地板
xinwei|  楼主 | 2014-9-13 10:27 | 只看该作者
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD ;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        GPIO_SetBits(GPIOC,GPIO_Pin_9);
        //GPIO_ResetBits(GPIOC,GPIO_Pin_9);
       
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD ;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_SetBits(GPIOA,GPIO_Pin_7);

以上是设置io口的代码,让PC9(FT)和PA7都输出高电平,都加有3.3K电阻上拉到5V。但是2个脚实测高电平只能到3.3V。
找不到原因。
看了下资料说FT的意思是兼容输入5V,但是输出能不能兼容呢?是不是芯片内部有限制最好只能输出到3.3V,包括OD模式。

使用特权

评论回复
5
saviourxx| | 2014-9-13 10:43 | 只看该作者
我以前试过103的FT脚外加上拉是拉不到5v的,版主,你确认你测到5v了吗?

使用特权

评论回复
6
xinwei|  楼主 | 2014-9-13 11:56 | 只看该作者
        刚再做了个测试:STM32F103RC,分别把PA0~PA7;PC0~PC4;PC9(FT),PA8(FT),PB7(FT)都设置成开漏通过上拉电阻到5V来测试输出高电平。发现PA0~PA7和PC0~PC4输出为3.8V;PC9(FT),PA8(FT),PB7(FT)输出为3.3V。都不能输出5V;但是反而FT的管脚只能输出到3.3V。

使用特权

评论回复
7
elec921| | 2014-9-13 18:19 | 只看该作者
此OD跟真正的一个MOS或者三极管的OC还是有区别的
我试过EPM3064 也是这种情况,本来想用一个OD拉24V,兼容另一个板子的电平,死活不行,最后无奈只能再加一个三极管

使用特权

评论回复
8
dongranmengming| | 2014-9-13 19:10 | 只看该作者
输入容忍5V,输出的话,
3.3控制一个三极管输出5V

使用特权

评论回复
9
搞IT的| | 2014-9-14 22:25 | 只看该作者
多看看程序代码,多学习

使用特权

评论回复
10
zhaoyu2005| | 2014-9-15 09:43 | 只看该作者
saviourxx 发表于 2014-9-13 10:43
我以前试过103的FT脚外加上拉是拉不到5v的,版主,你确认你测到5v了吗?

正确的话确认可以拉倒5V,甚至更高,但是12V时可能会损坏,这个是测试过的,并且上周五晚上刚试了上拉到9V左右。我这是超标使用,不推荐,103RBT6,PB9
其实接5V的液晶屏,一般都不用处理,只要将需要输入到单片机的引脚选择成FT引脚即可,240128屏,T6963控制器都用了好长时间了

使用特权

评论回复
11
saviourxx| | 2014-9-15 11:18 | 只看该作者
zhaoyu2005 发表于 2014-9-15 09:43
正确的话确认可以拉倒5V,甚至更高,但是12V时可能会损坏,这个是测试过的,并且上周五晚上刚试了上拉到9 ...

可否贴一下代码,我今晚回去也试试看?

使用特权

评论回复
12
zhaoyu2005| | 2014-9-15 14:16 | 只看该作者
saviourxx 发表于 2014-9-15 11:18
可否贴一下代码,我今晚回去也试试看?

#define MONEY_PITCH                              ((u16)0x0200)  //Pin 9 selected

GPIO_InitStructure.GPIO_Pin = MONEY_PITCH;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
我是引脚初始化一个函数,引脚重定义一个文件,不是直接Pin号来的。说起这个是我画原理图图时,要控制一个pnp三极管,进而控制投币器的电源,但是脑子抽筋,忘了加npn三极管了,板子做回来一焊三极管就反应过来了,测试时不控制,直接短接的。后来本打算用npn三极管打补丁,但是嫌费事,就测试用OD模式能不能控制,3906发射极10V多电压(本来是12V供电,经过全桥降了约1.3V),基极通过5.6K电阻接到这个控制脚,输出高电平时,单片机引脚电压9v多,具体值记不清了,3904集电极电压和发射极电压很接近,但是实际输出电流不大,不能投币,输出低电平时,投币正常。在11年前后,我用stm32的OD模式控制场效应管,测试时上拉到12V,坏过一个片子,我还讨论过,你搜下我的帖子

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xinwei + 3
13
saviourxx| | 2014-9-15 15:37 | 只看该作者
zhaoyu2005 发表于 2014-9-15 14:16
#define MONEY_PITCH                              ((u16)0x0200)  //Pin 9 selected

GPIO_InitStructure.GPIO_Pin = MONEY_P ...

大神,你用表笔测量过确实有5v电压没有哦?我有个朋友当时就跟我说能拉到5v,在跟他逐个排出问题的时候,他说没侧过,但是可以拉到5v。

我说拉到5v 是 mcu的gpio端拉到5v。你确定拉到了吗?

使用特权

评论回复
14
zhaoyu2005| | 2014-9-15 16:58 | 只看该作者
saviourxx 发表于 2014-9-15 15:37
大神,你用表笔测量过确实有5v电压没有哦?我有个朋友当时就跟我说能拉到5v,在跟他逐个排出问题的时候, ...

等我下班,再弄块板子测量了,给你准确数值,我确实测量了。

使用特权

评论回复
15
xinwei|  楼主 | 2014-9-15 17:24 | 只看该作者
我这边测了下:发现之前板子上的芯片有问题,换了块板子测了下。带FT的管脚确实OD加上拉可以到5V。但是不带FT的管脚OD加上拉输出只可以到3.8V。
zhaoyu2005:
你测试的时候也请看下不带FT的管脚是不是这样情况。

使用特权

评论回复
16
zhaoyu2005| | 2014-9-15 19:20 | 只看该作者
xinwei 发表于 2014-9-15 17:24
我这边测了下:发现之前板子上的芯片有问题,换了块板子测了下。带FT的管脚确实OD加上拉可以到5V。但是不带 ...

我刚才测试了,PB9上拉到8.36V,基极串的5.6K电阻,上周五测试时基极串的是5.1K的电阻。非FT引脚没测试,也不想测试,没意义,都有钳位二极管的,通常也就高出电源电压0.4V左右,就看钳位二极管的压降了。FT引脚不清楚啥结构

使用特权

评论回复
17
mmuuss586| | 2014-9-15 21:54 | 只看该作者
正常的话应该可以拉到5V;
STM32 IO有损坏或损伤就不一定了,建议输出再串个电阻(以免烧IO);

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xinwei + 1 赞一个!
18
xinwei|  楼主 | 2014-9-16 10:15 | 只看该作者
多谢大家的回复,现在问题都解决了。

使用特权

评论回复
19
jd972594| | 2014-9-16 15:47 | 只看该作者
xinwei 发表于 2014-9-16 10:15
多谢大家的回复,现在问题都解决了。

之前用NXP的LPC1756 TXD1串口输出也想开漏拉到5v
还特地找了ZLG去问的,结果硬件不支持

请问楼主这么解决的?

使用特权

评论回复
20
xinwei|  楼主 | 2014-10-20 14:02 | 只看该作者
ST 的FT的管脚是可以的

使用特权

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

本版积分规则

32

主题

72

帖子

0

粉丝