搜索
bottom↓
回复: 66

探讨:扩展STM32的端口和好处

  [复制链接]

出425入0汤圆

发表于 2019-6-5 10:19:05 | 显示全部楼层 |阅读模式
众所周知,ARM单片机,由于制造工艺等原因,芯片和引脚承受过压过流的能力不强。一不小心就发生闩锁,过流发热或者损坏。
所以我设计的端口,一般都要做防护设计。最简单的是输入端串联10K电阻。对响应没有要求的,板子空间大的,还可以接入吸收作用的电容旁路到地。
输出就不好加入电阻,会降低驱动力和速度的问题。
我现在比较倾向于用IO扩展芯片来解决问题。
经典的扩展是用HC165扩展输入,HC595扩展输出。我认为这2个芯片引脚比ARM引脚耐操。我认为还有以下好处。
1-把各种类型的输入从单片机引脚分开了。单片机只跟扩展芯片打交道。他们相互距离小,不担心引线窜入继电器等强干扰,发生闩锁的情况应该大大减少。
2-扩展了引脚数量。现在芯片引脚规模普遍都很大,这个几乎没有优势。
但我认为带来好处的同时,也带来缺点。
1-引脚电平变化中断没有了。
2-实时性降低了。
3-编程复杂了。
为了解决缺点1,我在A****找到一个芯片AW9523,它有16个引脚可以用做IO端口。可以任意设置为输入和输出。如果输入引脚电平变化,会有中断发生,此时启用I2C总线读入,虽然反应慢些,总算有了输入中断。
现在的问题是:这个芯片以前没有用过,耐操吗?有没有比她耐操的芯片可以替代?
希望大家探讨一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-6-5 10:24:32 | 显示全部楼层
我记得TM1627也可以带外部中断,LED段位显示驱动

出0入0汤圆

发表于 2019-6-5 11:29:15 | 显示全部楼层
8255了解下

出0入362汤圆

发表于 2019-6-5 11:39:38 | 显示全部楼层
用573、164245之类呗。。。个别引脚需要增加驱动力的话,用LVC1G14、LVC1G00、LVC1G08之类就行了。

出0入59汤圆

发表于 2019-6-5 11:44:46 | 显示全部楼层

给你1024个赞

出425入0汤圆

 楼主| 发表于 2019-6-5 11:49:12 | 显示全部楼层

8255最经典了。就是通讯引脚多了些。

出425入0汤圆

 楼主| 发表于 2019-6-5 11:54:52 | 显示全部楼层
plb83 发表于 2019-6-5 10:24
我记得TM1627也可以带外部中断,LED段位显示驱动

TM的看了看,可能你记错了型号,我不是单要键盘输入。其他的比如传感器输入,TM这颗就不合适。CH423就符合,只是输入引脚少了些。

出0入0汤圆

发表于 2019-6-5 11:58:11 | 显示全部楼层
国产的伪cpld(真fpga+flash)了解一下,哈哈哈

出425入0汤圆

 楼主| 发表于 2019-6-5 11:58:46 | 显示全部楼层
tomzbj 发表于 2019-6-5 11:39
用573、164245之类呗。。。个别引脚需要增加驱动力的话,用LVC1G14、LVC1G00、LVC1G08之类就行了。 ...

你是隔离的方案。连线复杂了。还不如采用光耦呢。

出0入162汤圆

发表于 2019-6-5 12:11:21 来自手机 | 显示全部楼层
感觉多此一举,自己找麻烦

出0入89汤圆

发表于 2019-6-5 12:16:50 | 显示全部楼层
jlhgold 发表于 2019-6-5 11:58
国产的伪cpld(真fpga+flash)了解一下,哈哈哈

好想了解一下,给点资料呗

出0入0汤圆

发表于 2019-6-5 12:18:48 | 显示全部楼层
jlc就有,仔细找找,价格比较低的

出0入131汤圆

发表于 2019-6-5 12:20:58 | 显示全部楼层
再加个stm8上去做io,和stm32通讯就行了

出0入0汤圆

发表于 2019-6-5 12:23:41 来自手机 | 显示全部楼层
有没有扩展输入捕捉的。

出0入0汤圆

发表于 2019-6-5 13:24:18 | 显示全部楼层
或者试试PCA9555PW 价格哈哈哈

出425入0汤圆

 楼主| 发表于 2019-6-5 14:24:08 | 显示全部楼层
jlhgold 发表于 2019-6-5 13:24
或者试试PCA9555PW 价格哈哈哈

我上面提到的AW9523,和这个几乎同样功能。价格1.xx元。

出0入362汤圆

发表于 2019-6-5 14:36:08 | 显示全部楼层
guolun 发表于 2019-6-5 11:58
你是隔离的方案。连线复杂了。还不如采用光耦呢。

哪里隔离了,没有啊

出0入0汤圆

发表于 2019-6-5 16:24:18 | 显示全部楼层
595之类的芯片我只用于显示,对于控制方面的怕串行数据受到干扰造成误动作。实际上作为单片机隔离和增加驱动能力我比较喜欢2T45这种芯片

出0入0汤圆

发表于 2019-6-5 16:25:55 | 显示全部楼层

8255也太古老了吧,虽然是51单片机时代的经典,现在都停产了吧。

出425入0汤圆

 楼主| 发表于 2019-6-5 22:28:47 | 显示全部楼层
tomzbj 发表于 2019-6-5 14:36
哪里隔离了,没有啊

我重新看了datasheet,这个芯片还是不错的。双向输入输出,3V-5V兼容,增强驱动能力。价格也不高。部分满足要求。

出425入0汤圆

 楼主| 发表于 2019-6-5 22:47:47 | 显示全部楼层
anyanggcmy 发表于 2019-6-5 16:25
8255也太古老了吧,虽然是51单片机时代的经典,现在都停产了吧。

停产了。4楼推荐的可以替代。但要简单的话,我发现CH422就可以。

出0入0汤圆

发表于 2019-6-5 22:58:41 来自手机 | 显示全部楼层
哈哈,用过pca9539,有坑,反正这种带复位引脚的扩展io芯片我是不敢再用了。楼主说一块多钱,自己买到了吗,渠道怎么样。国产芯片担心买了这批没下批

出0入0汤圆

发表于 2019-6-5 23:08:13 | 显示全部楼层
STM32的IO是真的脆弱,在51转过来用STM32肯定会踩坑

出0入0汤圆

发表于 2019-6-6 00:51:13 来自手机 | 显示全部楼层
PCAL6416,16个IO;PCAL6534,34个IO,都是i2c总线扩展的

出140入8汤圆

发表于 2019-6-6 07:41:17 | 显示全部楼层
上海艾为电子的芯片么?
他们的这种芯片主要是用来点灯的吧,0.35间距的QFN封装,还有WLCSP估计不太适合小批量单片机板子玩,别人都是给蓝绿大厂手机点灯用的

出0入0汤圆

发表于 2019-6-6 08:10:10 | 显示全部楼层
flash3g 发表于 2019-6-5 23:08
STM32的IO是真的脆弱,在51转过来用STM32肯定会踩坑

请教一下,有这么严重吗?都是那些坑呢?

出1310入193汤圆

发表于 2019-6-6 08:17:30 | 显示全部楼层
asj1989 发表于 2019-6-5 12:20
再加个stm8上去做io,和stm32通讯就行了

二者之间数据用什么方式进行通讯最为可靠/速度也跟得上  谢谢

出1310入193汤圆

发表于 2019-6-6 08:24:50 | 显示全部楼层
2T45经典的电平转换芯片  成本在乎的产品  流口水的份      hc595扩展io是可以的  在输出使能端引脚有mcu控制,保证输出不容易受到干扰

出0入0汤圆

发表于 2019-6-6 08:28:02 | 显示全部楼层
asj1989 发表于 2019-6-5 12:20
再加个stm8上去做io,和stm32通讯就行了

IO口不够,可以选引脚多的型号,这种用法的多吗,有啥好处呢?

出0入0汤圆

发表于 2019-6-6 08:29:28 | 显示全部楼层
lb0857 发表于 2019-6-6 08:17
二者之间数据用什么方式进行通讯最为可靠/速度也跟得上  谢谢

理论上可以,但有这样用的吗?

出70入145汤圆

发表于 2019-6-6 08:52:03 来自手机 | 显示全部楼层
之前产品用串转并的4094控制16个继电器。刷新数据时受群脉冲或静电测试的干扰,继电器就会乱跳,时钟和数据线上并10nf电容会好很多。但是可靠性不如直接stm32的io直接驱动uln2003。后来就不在这里用串转并了。读按码开关只需要上电读一次还是用165

出425入0汤圆

 楼主| 发表于 2019-6-6 08:56:38 | 显示全部楼层
本帖最后由 guolun 于 2019-6-6 09:14 编辑
xzhiwei 发表于 2019-6-5 22:58
哈哈,用过pca9539,有坑,反正这种带复位引脚的扩展io芯片我是不敢再用了。楼主说一块多钱,自己买到了吗 ...


嘉立创有卖。
(下面后来添加)
有什么坑。能说不?

出425入0汤圆

 楼主| 发表于 2019-6-6 09:02:51 | 显示全部楼层
AWEN2000 发表于 2019-6-5 12:11
感觉多此一举,自己找麻烦

是麻烦了。对于脆弱的IO端口,有什么措施保护吗?比如:ARM连接无刷电机驱动器的引脚,3个输出:方向,刹车,调速。1个输入:霍尔脉冲。连接线40cm长度。工作于高电压(24V),大电流(5A),大的电压(电流)/时间 。样机试过端口损坏。

出425入0汤圆

 楼主| 发表于 2019-6-6 09:04:39 | 显示全部楼层
asj1989 发表于 2019-6-5 12:20
再加个stm8上去做io,和stm32通讯就行了

stm8的端口比STM32端口强壮吗?虽然复杂了,但功能灵活多样。不失为一个好方案。

出425入0汤圆

 楼主| 发表于 2019-6-6 09:11:10 | 显示全部楼层
lileistone 发表于 2019-6-6 00:51
PCAL6416,16个IO;PCAL6534,34个IO,都是i2c总线扩展的

这个功能强大。能提供购买的渠道吗?

出425入0汤圆

 楼主| 发表于 2019-6-6 09:13:42 | 显示全部楼层
anyanggcmy 发表于 2019-6-6 08:29
理论上可以,但有这样用的吗?

就是选择一个端口没那么脆弱的芯片,替代STM32脆弱的端口。

出0入0汤圆

发表于 2019-6-6 09:53:25 | 显示全部楼层
guolun 发表于 2019-6-6 08:56
嘉立创有卖。
(下面后来添加)
有什么坑。能说不?

就是在某些干扰的时候,IO不可控。reset好像很容易被干扰,我是省引脚,直接上拉,没有用IO去控制reset。

出0入0汤圆

发表于 2019-6-6 10:00:51 | 显示全部楼层
看了下这个AW9523的DS,发现其去抖动时间为8S,这个也太久了吧:

AW9523B 时刻监测输入状态,当检测到 GPIO 口逻辑电平变
化,内部电路先进行 8μs 去抖动处理;若 8μs 后,确认其状态变化,则中断引脚电平拉低。不论
GPIO 口电平由低变高或由高变低,均能产生中断。


不然作为GPIO Ext还是不错的。

出0入33汤圆

发表于 2019-6-6 10:43:40 来自手机 | 显示全部楼层
恕我看不出有什么好的,反而会增加系统复杂性和降低可靠性。

出0入0汤圆

发表于 2019-6-6 11:10:41 | 显示全部楼层
最近正在搞这个,准备用TCA6416APWR

出0入0汤圆

发表于 2019-6-6 11:11:19 | 显示全部楼层
楼主的这个问题看似简单, 还真不好处理

出0入162汤圆

发表于 2019-6-6 11:18:15 来自手机 | 显示全部楼层
用扩展芯片就不会坏了吗???
自找麻烦。

出0入0汤圆

发表于 2019-6-6 14:46:10 | 显示全部楼层
本帖最后由 WOSDAIZ 于 2019-6-6 14:51 编辑
hailing 发表于 2019-6-6 08:52
之前产品用串转并的4094控制16个继电器。刷新数据时受群脉冲或静电测试的干扰,继电器就会乱跳,时钟和数据 ...


你試看看用595,時序參數符合時,刷新資料時不會影響輸出狀態,也不須加電容.


編輯原因:修改更明確的回覆.

出0入0汤圆

发表于 2019-6-6 22:36:50 来自手机 | 显示全部楼层
jlhgold 发表于 2019-6-5 11:58
国产的伪cpld(真fpga+flash)了解一下,哈哈哈

给个型号啊

出70入145汤圆

发表于 2019-6-7 10:17:04 | 显示全部楼层
WOSDAIZ 发表于 2019-6-6 14:46
你試看看用595,時序參數符合時,刷新資料時不會影響輸出狀態,也不須加電容.

这个问题不是说刷新数据时影响输出状态,4094刷新数据时也是不会影响输出的。595在外部干扰下也会出现错误的情况,我们的板子平时调试时都没发现问题,当时测试或放现场接触器频繁开关时会产生误动作。当时最容易受干扰的CLK信号,外部干扰会在CLK上产生1到多个干扰的CLK信号,导致错误的数据被写入了。而这些串转并芯片读取数据都是靠CLK信号的,所以CLK信号是重灾区。其他的DAT线也会受干扰,只是敏感度没这么高。

出0入0汤圆

发表于 2019-6-8 00:40:33 | 显示全部楼层
hailing 发表于 2019-6-7 10:17
这个问题不是说刷新数据时影响输出状态,4094刷新数据时也是不会影响输出的。595在外部干扰下也会出现错 ...

我用過上萬個595,能夠沒出問題是因為這些控制線都在板子上跑,只有最後輸出的部份才可能外拉接線,你的狀況我猜想是這些,控制,資料線是有接線外拉連接,這樣一定很容易受干擾,這種IC只是純硬件轉換,對時序波型都是直接反應的,不像51的UART還會取樣3次作為核實,線一但外拉,頻率高低也影響時序波形,畢竟工作電壓都是低壓,4094可以12V工作,或許你就是要用它12V,在結構不改變的狀況下,就試試看用帶隔離網的線,接地屏蔽看看是否有相當改善,若不是以上說的外拉線,那就另說了.

出10入18汤圆

发表于 2019-6-8 09:25:55 来自手机 | 显示全部楼层
MCP23S17 SPI的,16io 可以中断。PCA9506  40个IO IIC

出0入50汤圆

发表于 2019-6-8 11:04:41 | 显示全部楼层
其实这种扩展随便一片IO数量合适的带UART的8位单片机都可以胜任,而且可以编程,在某些场合,还能帮主MCU分担点事情,STC的就有很多,反正在一个PCB上,距离很近,通信速率可以上到Mbps,最关键的是通信数据可以加入严格的诸如CRC16这样的校验,保证你输入输出的数据不会有错误,而那些逻辑芯片,坏了一个腿,你都不会有机会知道更不要说你发出的数据被意外干扰,错误输出这样的事情了。

出330入0汤圆

发表于 2019-6-8 11:21:53 来自手机 | 显示全部楼层
ilikemcu 发表于 2019-6-8 11:04
其实这种扩展随便一片IO数量合适的带UART的8位单片机都可以胜任,而且可以编程,在某些场合,还能帮主MCU分 ...

STC的使用又增加一个不可靠因素。这玩意口碑不怎么好吧。

出0入50汤圆

发表于 2019-6-8 13:20:35 | 显示全部楼层
zcllom 发表于 2019-6-8 11:21
STC的使用又增加一个不可靠因素。这玩意口碑不怎么好吧。

你的眼里只看到STC,没辙。我只是提供一个思路,哪STC举个例子而已,唉;
另外STC如果真那么不济,老姚早就垮了,他的项目又没什么资助,网上太多人云亦云,以讹传讹了,起码我用过好几个型号的STC,没掉过链子

出425入0汤圆

 楼主| 发表于 2019-6-8 16:24:24 | 显示全部楼层
QQ373466062 发表于 2019-6-6 10:00
看了下这个AW9523的DS,发现其去抖动时间为8S,这个也太久了吧:

8微秒,不是8秒

出0入0汤圆

发表于 2019-6-8 16:34:23 | 显示全部楼层
AWEN2000 发表于 2019-6-6 11:18
用扩展芯片就不会坏了吗???
自找麻烦。

还是太年轻 1000个产品2个出现mcu损坏客户可能会让你批量报废。

出425入0汤圆

 楼主| 发表于 2019-6-8 16:36:54 | 显示全部楼层
ilikemcu 发表于 2019-6-8 11:04
其实这种扩展随便一片IO数量合适的带UART的8位单片机都可以胜任,而且可以编程,在某些场合,还能帮主MCU分 ...

是啊。这个方案功能非常强大。STC应该可以做这个事情。

出0入14汤圆

发表于 2019-6-8 20:18:34 | 显示全部楼层
扩展的话为什么不换芯片?飞思卡尔和nxp的抗性强不少啊

出425入0汤圆

 楼主| 发表于 2019-6-8 20:27:22 | 显示全部楼层
isakura 发表于 2019-6-8 20:18
扩展的话为什么不换芯片?飞思卡尔和nxp的抗性强不少啊

也是个好建议。

出0入25汤圆

发表于 2019-6-8 20:45:38 来自手机 | 显示全部楼层
zcllom 发表于 2019-6-8 11:21
STC的使用又增加一个不可靠因素。这玩意口碑不怎么好吧。

作为电工需要严谨、避免不可靠因素是对的,但是一提stc你就否定,你是用stc掉过坑吗?还是人云亦云?如果你是人云亦欲那就不严谨了,鄙视!
我大量用过好几种型号stc的mcu近10年了,怎么从来没掉过坑呢。论坛上帖子说stc有问题的,基本上到最后都是自己码的代码有问题、成了打脸贴。

出0入25汤圆

发表于 2019-6-8 20:53:43 来自手机 | 显示全部楼层
hailing 发表于 2019-6-7 10:17
这个问题不是说刷新数据时影响输出状态,4094刷新数据时也是不会影响输出的。595在外部干扰下也会出现错 ...

如果595和mcu在一块板子上,clk被干扰那需要多大的电磁干扰啊,mcu估计早跑飞了。
我想说的是:如果不是通过排线外部扩展、而是在同一块pcb上用595,尽情用就是了,担心是多余的。

出70入145汤圆

发表于 2019-6-9 07:21:50 | 显示全部楼层
WOSDAIZ 发表于 2019-6-8 00:40
我用過上萬個595,能夠沒出問題是因為這些控制線都在板子上跑,只有最後輸出的部份才可能外拉接線,你的狀況 ...

就在板子上,还有控制的是继电器,这样和灯有不一样的地方是只要刷新数据时有一次错误,继电器就会有动作,人就可以感觉出来,外部接的设备就会被开关一次,因为我们大概一秒刷新3次,虽然最终会控制正确,但是已经会导致外部设备异常动作了,要是控制led,异常灭一下无所谓的,这个也是一种因为不同控制对象的区别。

出70入145汤圆

发表于 2019-6-9 07:27:48 | 显示全部楼层
lswood 发表于 2019-6-8 20:53
如果595和mcu在一块板子上,clk被干扰那需要多大的电磁干扰啊,mcu估计早跑飞了。
我想说的是:如果不是 ...

mcu使用STM32F103VCT6,程序运行正常,静电8kv以上,对基板近距离接触放电,不是对测试的板子大,对基板打并且距离很近,火花声音不大,拉开距离火花声音变大,但是对外辐射能量其实变小了,之前打电能表的测试方法。静电电压抬高到20kv发生干扰的概率更大。mcu还是正常运行

出0入0汤圆

发表于 2019-6-9 07:36:45 来自手机 | 显示全部楼层
换个pin对的mcu吧

出0入0汤圆

发表于 2019-6-9 13:04:58 | 显示全部楼层
hailing 发表于 2019-6-9 07:21
就在板子上,还有控制的是继电器,这样和灯有不一样的地方是只要刷新数据时有一次错误,继电器就会有动作 ...

在一块板子上还能设计出这么弱的抗干扰能力,那估计很多外扩芯片你都用不了啦,比如SRAM、并口闪存、串口闪存、串口EEPROM、以太网扩展芯片等等,这些都有CLK信号

出70入145汤圆

发表于 2019-6-9 18:47:36 | 显示全部楼层
modbus 发表于 2019-6-9 13:04
在一块板子上还能设计出这么弱的抗干扰能力,那估计很多外扩芯片你都用不了啦,比如SRAM、并口闪存、串口 ...

从我测试的板子和测试方法来说,做静电测试就有这个问题,刷新频繁出现的几率就会变高。我们的测试方法是让板子尽量出问题,而我之前在外面的认证实验室做,对方的工程师操作的,把静电枪碰到基板上打,这样根本板子没什么干扰,板子一点问题也没有。没发现问题不代表没问题,出现了问题就一定有问题。我这样测试接触放电的干扰强度并不弱。

出0入0汤圆

发表于 2019-6-9 18:48:42 | 显示全部楼层
hailing 发表于 2019-6-9 07:21
就在板子上,还有控制的是继电器,这样和灯有不一样的地方是只要刷新数据时有一次错误,继电器就会有动作 ...

如你所說,是在一片板上,那就把方向瞄準PCB的佈線,電源部分,不過都不容易,各人經驗不同,

簡單點試把電源進入數位板間加入共模電感,或買個隔離的DC-DC電源模塊試看看.

若電氣上的隔離都不能解決,那就穿上防護衣吧,很多PLC也不用穿鐵殼啊.

出0入0汤圆

发表于 2019-6-10 17:12:43 | 显示全部楼层

AG1280Q32
国产的,仿的altera epm240 570 ep1c3

出0入0汤圆

发表于 2019-6-16 21:49:22 | 显示全部楼层
MARK 一下

出0入42汤圆

发表于 2019-6-17 09:37:26 | 显示全部楼层
zcllom 发表于 2019-6-8 11:21
STC的使用又增加一个不可靠因素。这玩意口碑不怎么好吧。

STC的有几个应用在机床控制车间上,大概十年前的产品了,后来升级了几代一直用STC系列的   没出过什么问题
过一些环境试验和EMC试验,这些也能看的出来
那些说不行的    请拿出数据来说话吧   不要误人子弟了       
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 12:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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