找回密码
 立即注册
查看: 5159|回复: 18

I/O口 不够,咋办

[复制链接]

该用户从未签到

548

主题

9170

回帖

1万

积分

管理员

积分
13958
发表于 2023-2-5 10:50:21 | 显示全部楼层 |阅读模式
I/O口 不够,咋办
STC8H8K64U-45MHz-LQFP64, 60个 I/O;
STC32G12K128-35I-LQFP64, 60个 I/O;
====重要的输入/输出信号尽量用MCU内部的I/O来处理, STC-MCU的抗干扰强
====不够的不重要的输出,用MCU本身的高速SPI强推挽输出 扩展 74HC595, <RMB0.2【0.12 ~ 0.20】,  
         1个74HC595扩展8个I/O, 可以多个74HC595级联, 不需要再 增加/浪费 控制的I/O口,
         虽然是串行传送控制,但一次性锁存并行输出
====控制的 SPI 输出口设置成强推挽输出模式,20mA以上的驱动能力,使输出信号的抗干扰能力超强
         防止74HC595的串行输入控制信号受干扰,用强推挽输出控制扩展的74HC595, 可以这么讲,
         干扰使出吃奶的力气也干扰不了74HC595, 如果谁说能,那你系统太差到无法理解了
         传统的弱上拉工作模式的I/O口输出的抗干扰方式是,并小电容到地或加强的上拉电阻如2K!
         软件上增加涮新的频率,软件冗余设计,有强推挽输出, 这个软件上增加涮新的频率就没啥实践价值了,当然加了更好
====输入尽量用 MCU 自己的I/O口(有施密特触发输入),如有按键,可考虑用 ADC-I/O 检测,
         1路ADC检测4/8/16个按键很轻松
====按键ADC扫描配合软件去干扰也很容易

串行扩展输入74HC165的问题是,容易受干扰 !串行输入是高阻输入或准双向口,容易受干扰,
===特别需要软件反复读取判断,浪费系统时间
===或输入口对地并小电容,增加成本
===不如改成强推挽扩展输出,扩展 74HC595,不需要软件抗干扰,不需要增加电容

下图,1路 ADC 检测 16个按键,还可以更多


下图 1组SPI 可以 级联扩展多个 74HC595, 而不需要 再增加控制的I/O
I/O口 不够,咋办-1.png












回复 送花

使用道具 举报

  • TA的每日心情
    慵懒
    12 小时前
  • 签到天数: 147 天

    [LV.7]常住居民III

    24

    主题

    672

    回帖

    1660

    积分

    金牌会员

    积分
    1660
    发表于 2023-2-5 22:31:54 | 显示全部楼层
    我一般习惯用74165作为输入的扩展,输出单独控制,不然用595或者273之类的扩展还得考虑输出相互影响,要不就得增加输出口个数:)

    该用户从未签到

    548

    主题

    9170

    回帖

    1万

    积分

    管理员

    积分
    13958
     楼主| 发表于 2023-2-5 22:37:52 | 显示全部楼层
    输出相互影响===  ?
    74HC595 扩展输出是,串行输入,带锁存的并行输出,有啥麻烦,我们是优选后,推这个方案的,
    现在客人当中见到最多的扩展I/O,也是这个,可能跟我们的参考设计方案也有关系

    该用户从未签到

    45

    主题

    2884

    回帖

    6482

    积分

    超级版主

    积分
    6482
    发表于 2023-2-6 12:21:28 | 显示全部楼层
    ADC检测按键可以节省很多IO,但是要注意,任何时候只能有一个键按下,不支持多键按下。按键的接触电阻过大可能会影响键识别,处理程序要判断ADC读数的变化率来确定按键已经稳定。

    扩展数字IO,最常用的是输入用74HC165,输出用74HC595,这一对天仙配,非常好用,可以级联多片。比如LED点阵屏就用大量的74HC595(或兼容的专用IC)做驱动,一个单元板64*16点的,通常会使用8片74HC595.
  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 144 天

    [LV.7]常住居民III

    1

    主题

    24

    回帖

    1183

    积分

    金牌会员

    积分
    1183
    发表于 2023-2-6 18:42:01 | 显示全部楼层
    I2C 扩展 IO 也可以,成本会高一些

    点评

    I2C速度慢,不建议。  详情 回复 发表于 2023-2-7 10:42

    该用户从未签到

    45

    主题

    2884

    回帖

    6482

    积分

    超级版主

    积分
    6482
    发表于 2023-2-7 10:42:19 | 显示全部楼层
    ACLX51 发表于 2023-2-6 18:42
    I2C 扩展 IO 也可以,成本会高一些

    I2C速度慢,不建议。
  • TA的每日心情
    开心
    2024-1-26 15:29
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    28

    回帖

    331

    积分

    中级会员

    积分
    331
    发表于 2023-2-8 13:03:44 | 显示全部楼层
    之前用过LS164做输出扩展.

    点评

    164没有锁存功能,移位时各个输出会“闪烁”一下,建议使用595.  详情 回复 发表于 2023-2-8 14:08

    该用户从未签到

    45

    主题

    2884

    回帖

    6482

    积分

    超级版主

    积分
    6482
    发表于 2023-2-8 14:08:09 | 显示全部楼层
    qq603599910 发表于 2023-2-8 13:03
    之前用过LS164做输出扩展.

    164没有锁存功能,移位时各个输出会“闪烁”一下,建议使用595.
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 55 天

    [LV.5]常住居民I

    2

    主题

    11

    回帖

    332

    积分

    中级会员

    积分
    332
    发表于 2023-3-1 10:51:07 | 显示全部楼层
    有没有人做过串口输入的按键?如果用串口输入按键,是不是也能节省IO口呢
  • TA的每日心情
    奋斗
    2023-12-6 15:33
  • 签到天数: 2 天

    [LV.1]初来乍到

    20

    主题

    98

    回帖

    962

    积分

    荣誉版主

    积分
    962
    发表于 2023-3-1 16:36:32 | 显示全部楼层
    蓝色海阳 发表于 2023-3-1 10:51
    有没有人做过串口输入的按键?如果用串口输入按键,是不是也能节省IO口呢 ...

    一般情况下不会这样做,只是按键的话矩阵或者AD按键,输入的话五六十个输入一般也够用了。反正我都是尽量输入用io,剩下的输出不够就扩展,实在不够的话就换芯片:lol可惜stc没144脚的芯片
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-23 20:06 , Processed in 0.074751 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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