这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » PCF8574功能模块及其使用

共3条 1/1 1 跳转至

PCF8574功能模块及其使用

菜鸟
2026-05-10 14:00:28     打赏

对于某些嵌入式开发板,由于其功能强劲往往引脚资源被分配殆尽,要想进行外设控制较难找到空闲引脚可用。

曾用过每款开发板,其留给用户的GPIO引脚就只有3个。

那任何布局呢?

方法就是使用并行扩展器件来解决,在众多的选择中,PCF8574就是一个不错的选择对象。

PCF8574是德州仪器(TI)推出的一款常用I/O扩展芯片,主要解决微控制器(MCUI/O引脚数量不足的问题。它采用I²CInter-Integrated Circuit)总线进行通信,仅需两根线(SDA串行数据线和SCL串行时钟线)即可实现MCU与芯片之间的数据交互,能为系统额外扩展8个双向I/O口,极大地提高了电路设计的灵活性。

image.png

1 器件内部结构框架 

该芯片的工作电压范围较宽,通常为2.5V5.5V,兼容5V3.3V两种常见的MCU系统电压,这使得它在各种电子设备中都有广泛的应用,如智能家居控制模块、工业自动化检测设备、小型消费电子产品等。

PCF8574通过I²C总线与MCU通信,总线是一种多主从架构的串行通信总线。在通信过程中,MCU作为主设备,PCF8574作为从设备。主设备通过SCL线产生时钟信号,同步SDA线上的数据传输。

I²C通信的基本流程包括:起始条件(主设备拉低SDA线时SCL线为高电平)、从设备地址发送(主设备发送7位从设备地址和1位读写控制位)、应答信号(从设备接收到正确地址后拉低SDA线表示应答)、数据传输(主从设备之间通过SDA线传输8位数据,每传输完一个字节都有应答信号)、停止条件(主设备拉高SDA线时SCL线为高电平)。

PCF8574共有16个引脚,其中关键引脚包括:A0A1A2(从设备地址选择引脚)、SDA(串行数据线)、SCL(串行时钟线)、P0-P78个双向I/O引脚)、VCC(电源正极)、GND(电源负极)。

PCF8574双向I/O口的实现原理是:PCF8574内部有一个8位的输入/输出寄存器。当MCUPCF8574写入数据时,数据被存储到该寄存器中,寄存器的输出状态直接控制P0-P7引脚的电平(高电平或低电平),此时引脚作为输出使用;当MCUPCF8574读取数据时,实际上是读取P0-P7引脚的当前电平状态,并将其存入输入/输出寄存器,再通过I²C总线传输给MCU,此时引脚作为输入使用。需要注意的是,PCF8574I/O引脚为开漏输出结构,当作为输出高电平时,需要外部上拉电阻才能实现真正的高电平输出(通常上拉电阻取值为4.7kΩ左右)。

为了实现多个I²C从设备在同一总线上的通信,每个从设备都需要有唯一的地址。PCF8574的从设备地址由7位组成,其中高4位固定为0100,低3位由A0A1A2引脚的电平状态决定(高电平为1,低电平为0)。通过改变A0A1A2引脚的连接方式(接VCCGND或悬空,悬空视为低电平),可以设置不同的从设备地址,最多可在同一I²C总线上连接8PCF8574芯片,极大地扩展了I/O口的数量。

image.png

2 引脚功能 

PCF8574使用分为2个部分,即:硬件和软件。

1硬件方面

电源连接:将VCC引脚连接到系统电源(2.5V-5.5V),GND引脚连接到系统地,确保电源电压稳定,避免因电压波动影响芯片正常工作。

I²C总线连接:将SDA引脚连接到MCUSDA引脚,SCL引脚连接到MCUSCL引脚。由于I²C总线为开漏输出,通常需要在SDASCL线上分别串联一个上拉电阻到VCC,电阻值一般选择4.7kΩ。

地址引脚设置:根据系统中PCF8574的数量和地址分配需求,将A0A1A2引脚分别连接到VCCGND或悬空,确定每个芯片唯一的从设备地址。

I/O引脚连接:将P0-P7引脚根据实际需求连接到外部设备(如LED、按键、传感器等)。当作为输出引脚驱动LED时,可直接串联限流电阻后连接LED;当作为输入引脚读取按键状态时,可配合上拉或下拉电阻使用,确保引脚电平稳定。

image.png

3  I/O结构 

2软件方面

初始化I²C总线:在MCU中配置I²C总线的通信参数,包括时钟频率(PCF8574支持的I²C时钟频率最高为100kHz,即标准模式)、SDASCL引脚的GPIO模式等,使MCU能够正常发起I²C通信。

确定从设备地址:根据硬件电路中A0A1A2引脚的连接方式,计算出PCF85747位从设备地址,并结合读写控制位(读操作时为1,写操作时为0)形成完整的8位通信地址。

写操作(输出控制):当需要控制PCF8574I/O引脚输出电平时,主设备(MCU)发起I²C起始条件,发送包含从设备地址和写控制位的字节,等待从设备应答;收到应答后,发送8位数据(对应P0-P7引脚的输出状态),再次等待应答;最后发起停止条件,完成写操作。此时,PCF8574I/O引脚会按照写入的数据输出相应的电平。

读操作(输入检测):当需要读取PCF8574I/O引脚电平状态时,主设备先发起I²C起始条件,发送包含从设备地址和写控制位的字节,等待应答;收到应答后,发起重复起始条件,再发送包含从设备地址和读控制位的字节,等待应答;收到应答后,主设备开始接收从设备发送的8位数据(对应P0-P7引脚的当前电平状态),接收完成后,主设备发送非应答信号,最后发起停止条件,完成读操作。MCU可通过解析接收到的数据获取外部设备的状态。


image.png

4 工作时序

为了便于进行功能测试,可在Arduino IDE环境下,使用Arduino UNO来控制PCF8574功能模块。

实现输入输出测试的程序为:

image.png

5 测试程序及结果 

实现彩灯控制效果的程序如下:

image.png

6 彩灯效果控制程序

image.png

7 器件连接

image.png

8 控制效果 

在实际应用中,很难都得到Arduino IDE的支持,为此利用仅有的引脚实现并口扩展是是必备的手段。

这里就尝试在RA2L1开发板上以模拟方式控制PCF8574其引脚连接关系为:

LCD1602_SCL-----P407

LCD1602_SDA----P408 

模拟起始条件的函数内容为:


void IIC_Start()
{
   SDA_Set();
   SCL_Set();
   delay_us();
   SDA_Clr();
   delay_us();
}

接收应答的函数内容为:

void IIC_Ack()
{
   uint8_t i;
   SCL_Set();
   delay_us();
   IIC_INPUT_MODE_SET();
   while((IIC_SDA_IN==1)&&(i<250)) i++; 
   SCL_Clr();
   delay_us();
}

模拟I2C发送字节数据的函数内容为:

void IIC_Write_Byte(uint8_t date)
{
   uint8_t i,temp;
   temp=date;
   IIC_OUTPUT_MODE_SET();
   for(i=0;i<8;i++)
   {
       SCL_Clr(); 
       if(temp & 0x80)
       {
          SDA_Set();
        }
       else
       {
             SDA_Clr();
         }
         temp=temp<<1;
       delay_us();
       delay_us();
       SCL_Set(); 
       delay_us();
   }  
   SCL_Clr();
   delay_us();
   SDA_Set();
   delay_us();
}

实现并行输出控制RGB_LED变换色彩效果的函数为:

void PCF8574_test()
{
   R_BSP_SoftwareDelay(20, BSP_DELAY_UNITS_MICROSECONDS);
   IIC_Start();
   IIC_Write_Byte(ADDR);
   IIC_Ack();
   IIC_Write_Byte(0x01);
   IIC_Ack();
   Delay_ms(500);
   IIC_Write_Byte(0x02);
   IIC_Ack();
   Delay_ms(500);
   IIC_Write_Byte(0x04);
   IIC_Ack();
   Delay_ms(500);
   IIC_Write_Byte(0x03);
   IIC_Ack();
   Delay_ms(500);
   IIC_Write_Byte(0x05);
   IIC_Ack();
   Delay_ms(500);
   IIC_Write_Byte(0x06);
   IIC_Ack();
   Delay_ms(500);
}

进行功能测试的主程序为:

void hal_entry(void)
{
   Delay_ms(300);
   while(1)
   {
      PCF8574_test();
   }
}

经程序的编译和下载,其器件连接和测试效果如图9所示。 

image.png

9 器件连接及测试效果

 

这样,在面对引脚资源紧俏时就具备了克制的能力。

 

演示视频:






关键词: PCF8574    

院士
2026-05-10 16:12:05     打赏
2楼

学习了,谢谢分享的器件应用测试。


菜鸟
2026-05-10 16:53:51     打赏
3楼

多谢主持


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]