OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3628|回复: 19

STM8 IIC引脚的IO口驱动能力问题

[复制链接]

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2020-4-16 14:35:07 | 显示全部楼层 |阅读模式
5金钱
用STM8的IIC脚写了驱动继电器的程序,发现驱动能力不够,继电器不动作。继电器是磁保持的,两个输入,开脚给脉冲继电器打开,关脚给脉冲继电器关闭。遂加上拉电阻,然后发现有一个IIC脚是控制继电器开的,单片机上电时引脚还未初始化,有上拉电平,导致继电器自己打开了。请问不改硬件的话,软件有啥办法可以改善一下?

猪猪熊呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 14:53:22 | 显示全部楼层
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2020-4-16 15:08:53 | 显示全部楼层
上电时启动程序里有时钟初始化,初始化完成了才跳转到main的,你再那个初始化函数中先初始化控制引脚,设置好电平。还有最好上个图。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:25:46 | 显示全部楼层
365mcu 发表于 2020-4-16 15:08
上电时启动程序里有时钟初始化,初始化完成了才跳转到main的,你再那个初始化函数中先初始化控制引脚,设置 ...

STM8找不着启动程序......32是有的没错
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:27:22 | 显示全部楼层
4HOU0TOUU~ASJ~F)G2)NT.png
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:28:52 | 显示全部楼层
14J{08[B3CUPNN_{IH9KWB9.png
猪猪熊呢?
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2020-4-16 15:30:06 | 显示全部楼层
本帖最后由 brucewoo 于 2020-4-16 15:32 编辑

STM8引脚输出能力只有20mA吧,应该不能驱动线圈的,要加三极管或MOS管作为放大。
没记错的话STM8引脚初始化之前是高阻态的,除非你用的开发板已经有上下拉,否则可以在初始化同时设置电平,例如:
GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST); //这样初始化同时输出低电平了


回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:31:12 | 显示全部楼层
365mcu 发表于 2020-4-16 15:08
上电时启动程序里有时钟初始化,初始化完成了才跳转到main的,你再那个初始化函数中先初始化控制引脚,设置 ...

程序的话断点打在那个继电器开的函数里,根本没有执行到。也找了其他地方没有用到这个两个脚。调试的时候把继电器全部关闭后,停止运行,然后复位,程序没动继电器就已经打开了。确实是上拉的问题。但是改板子比较麻烦,看看有没有软件上的解决方法
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:32:02 | 显示全部楼层
编译环境是IAR
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:34:19 | 显示全部楼层
brucewoo 发表于 2020-4-16 15:30
STM8引脚输出能力只有20mA吧,应该不能驱动线圈的,要加三极管或MOS管作为放大。

是的,现在加了上拉电阻,但是上电的时候还没等我初始化,引脚已经上拉形成了高电平,把继电器打开了,请问软件上有没有办法让这个引脚上电就输出低,再改板子比较麻烦
猪猪熊呢?
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2020-4-16 15:40:16 | 显示全部楼层
323232 发表于 2020-4-16 15:34
是的,现在加了上拉电阻,但是上电的时候还没等我初始化,引脚已经上拉形成了高电平,把继电器打开了,请 ...

没办法的,你已经在硬件上上拉了,那么软件上再快也快不过硬件。
建议你把上拉电阻拆掉,要不就在线圈输入端并一个大点的电容,让它电压上升慢点看看怎样。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:45:27 | 显示全部楼层
brucewoo 发表于 2020-4-16 15:40
没办法的,你已经在硬件上上拉了,那么软件上再快也快不过硬件。
建议你把上拉电阻拆掉,要不就在线圈输 ...

继电器判断电平需要一个时间,不过我把引脚放在最前面初始化也没用就是了
猪猪熊呢?
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2020-4-16 15:49:12 | 显示全部楼层

继电器端电路看下
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 15:55:10 | 显示全部楼层
365mcu 发表于 2020-4-16 15:49
继电器端电路看下

只是很简单的用2003驱动的。硬件上没有问题,我把控制脚都切断,继电器上电没有异常
猪猪熊呢?
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2020-4-16 16:00:31 | 显示全部楼层
323232 发表于 2020-4-16 15:55
只是很简单的用2003驱动的。硬件上没有问题,我把控制脚都切断,继电器上电没有异常

2003驱动控制电流3mA以上就够了,不应该是IO口驱动能力不够啊!
回复

使用道具 举报

0

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2020-3-17
在线时间
23 小时
发表于 2020-4-16 16:49:59 来自手机 | 显示全部楼层
本帖最后由 bxayz 于 2020-4-16 16:51 编辑

用到芯片某项功能、IO都不看下手册?
IMG_20200416_164926.jpg
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-16 18:16:25 | 显示全部楼层
bxayz 发表于 2020-4-16 16:49
用到芯片某项功能、IO都不看下手册?

看了....加了上拉...我觉得你没懂我问的啥
猪猪熊呢?
回复

使用道具 举报

0

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2020-3-17
在线时间
23 小时
发表于 2020-4-16 18:47:33 | 显示全部楼层
323232 发表于 2020-4-16 18:16
看了....加了上拉...我觉得你没懂我问的啥

你这情况不改硬件没法做到,不是所有硬件设计缺陷都能用软件弥补的。


(我贴出上面只是提醒你以后做硬件设计,要注意事先看下相关资料)
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
 楼主| 发表于 2020-4-17 08:49:14 | 显示全部楼层
bxayz 发表于 2020-4-16 18:47
你这情况不改硬件没法做到,不是所有硬件设计缺陷都能用软件弥补的。

硬件不是我做的,何况因为看了,才加了上拉......
猪猪熊呢?
回复

使用道具 举报

0

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2020-3-17
在线时间
23 小时
发表于 2020-4-17 12:52:01 | 显示全部楼层
323232 发表于 2020-4-17 08:49
硬件不是我做的,何况因为看了,才加了上拉......

程序初始化IO放在最前,然后外加上拉电阻的IO可以加个合适电容延迟下,容量越大效果越明显,但也会造成驱动延迟。
所以最好还是大改硬件,要么PNP驱动,要么用有推挽模式的IO
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 10:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表