在日常开拓的过程中你是否碰着过硬件须要增加外设的时候创造芯片IO资源不足了。某项目老板说设备还要增加几个传感器的时候是否碰着过芯片的串口资源已经用完了。
如果涌现这些问题如何办理呢?方案有很多,方案之一便是扩展,把一个IO口变成2个或者多个,把一个串口变2个或者多个。
这次就来谈谈芯片扩展的那些事情。

简要目录
大略IO口扩展
UART扩展
USB扩展
大略IO口扩展大略的IO口扩展常日采取TTL或者CMOS电路锁存器。三态门等作为扩展芯片(74L244、74LS245、74LV595、74LS377等等)。利用这些方案进行IO口扩展具有电路大略、本钱低、配置灵巧的特点。
方案的运用举例:
利用74LV595PW进行IO口输出扩展。
这是某家IMX6UL开拓板上运用的IO口扩展方案。74LV595是带存储寄存器和3态输出的8级串行移位寄存器。移动和存储寄存器都具有单独的时钟。其是低压硅栅CMOS器件。
利用74HC165进行IO口输入扩展。
74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互补的串行输出(Q7和!Q7),当异步并行读取引脚(!PL)输入为低时,从D0到D7口输入的并行数据将被读取进寄存器内。而当异步并行读取引脚为高时,数据将在每个时钟脉冲的上升沿从 引脚串行进入寄存器并将现有数据右移一位( 以此类推)。
利用这种特性,只要把Q7输出绑定到下一级的输入,即可实现移位寄存器位数的扩展。
以上便是普通IO口的常用实例,当然还有其他的扩展方案,比如专用IO扩展芯片或者加一个单片机等等。
UART(串口)扩展常用单片机串口资源一样平常有1个、3个、5个。一个轻微繁芜一点的嵌入式系统串口资源肯定不足用。那如何办理,只好想办法增加几个串口,也便是扩展。
之前有一个环境监测的项目,利用到GSM、WIFI、PM2.5传感器、CO2传感器、甲醛传感器、VOC传感器等等都是串口通讯的传感器。
一样平常的芯片都没有那么多的串口,传感器的通讯协议比较相似不能多个传感器并用一个串口,一开始的扩展办法便是增加一个子芯片用来读取各个传感器的数据然后通过一个串口传到主芯片进行处理和发送。
这个方案利用上不会有什么问题,便是在大批量生产的时候须要多次烧录程序,碰上现在这个芯片市场的影响本钱已经翻了好几倍。以是就成本来说这个方案并不是最好的选择。有没有其他更好一点的方案,答案是,有。
利用过比较大略的方案便是利用仿照开关来进行串口线路切换,从而达到扩展串口的目的。这个就像是六七十年代的电话接线员,须要跟哪条线路通讯就接通哪条线路即可。下面是在某个项目中利用过的两款仿照开关芯片芯片,一个是4路的仿照开关芯片74HC4006,另一个是16路的仿照开关芯片。
74HC4006在项目中紧张是实现一个串口读取4个串口通讯办法的传感器数据。
74HC4067这个芯片之前是用作传感器检测的一个项目,SM32F103RC为主控,STM32F103RC统共有5个串口,一个串口用做无线通信外还有4个串口。利用4块74HC4067芯片就可以同时测试64个串口通信办法的传感器。如果数据通信改用USB通信,那最多可以同时测试80个串口通信办法的传感器。这个方案的好处便是程序设计上不须要很繁芜。而且芯片的本钱比较低。
还有其余一种比较专业的串口扩展方案便是利用专用的串口扩展芯片vk3214。可以利用一个串口或者SPI接口扩展成4个串口。
扩展的子通道的UART具备如下功能特点:
每个子通道UART的波特率、字长、校验格式可以独立设置,最高可以供应1Mbps的通信速率。
每个子通道可以独立设置事情在IrDA红外通信、RS-485自动收发掌握、9位网络地址自动识别、软件/硬件自动流量掌握、广播吸收等高等事情模式下。
每个子通道具备收/发独立的16 BYTE FIFO,FIFO的中断为4级可编程条件触发点。
供应一个子通道的调制解调器(MODEM)掌握旗子暗记。
这些是该芯片的干系先容,由于没有真正利用共也不清楚详细的情形。以是就先说那么多了。
USB扩展USB扩展相信大家都比较熟习,常常利用电脑的如果创造USB接口不足用的话都会买一个USB扩展器来利用。所有这个就不多说了,下面分享一个某IMX6UL开拓板上面利用的一个USB2.0的扩展芯片,把一个USB口扩展成4个,就可以接更多USB接口的模块。