TI中文支持网
TI专业的中文技术问题搜集分享网站

PCA9555: 无法真正输出电平值

Part Number:PCA9555

你好!

      1.  在写入PCA9555过程中,先进行了管脚输出设置,如下所示:

//P00~P05设置为输出,P10设置为输出
void Initialization_PCA9555(void)
{
unsigned char DevAddress,MemAddress;
unsigned char write_data[2];
DevAddress = 0x40; //0100 A2 A1 A0 0
//写入Configuration Registers
MemAddress = 0x06;
write_data[0] = 0xFF; //1100 0000 1为输入默认状态,0位输出
write_data[1] = 0xFF; //1111 1110
HAL_I2C_Mem_Write(&hi2c1,DevAddress,MemAddress,I2C_MEMADD_SIZE_8BIT,write_data,2,1000);
}

2. 然后我想改变管脚的输出电平,但是管脚电平并未真正改变,所有的管脚还是输出3.3V即VCC。

HAL_StatusTypeDef Slot1_8( unsigned char slot )
{
unsigned char DevAddress,MemAddress;
unsigned char write_data;
//先读一遍Output Port Register的值
DevAddress = 0x40; //0100 A2 A1 A0 0
MemAddress = 0x02; //0x02:Output Port 0;

write_data[0] =0x02;
return( HAL_I2C_Mem_Write(&hi2c1,DevAddress,MemAddress,I2C_MEMADD_SIZE_8BIT,&write_data,1,1000) );
}

3. 此时我再读Port 0 ,却可以读到0x02,说明上一步通讯成功,并成功写入,所以想请问下,要想改变管脚输出0/1,是否步骤错了?

uint8_t Output_PCA9555( unsigned char output_port )
{
unsigned char DevAddress,MemAddress;
unsigned char read_data;
//先读一遍Output Port Register的值
DevAddress = 0x41; //0100 A2 A1 A0 0

MemAddress = 0x02; //0x02:Output Port 0; 0x03:Output Port 1
HAL_I2C_Mem_Read(&hi2c1,DevAddress,MemAddress,I2C_MEMADD_SIZE_8BIT,&read_data,1,1000);
return read_data;
}

yang wenhua:

不好意思,解决了,应该是上电的时候,这颗芯片后面才启动,而MCU先启动,导致初始化的时候,设置port为输出时,没有成功。

,

Amy Luo:

您好,

很高兴您的问题得到解决,非常感谢您的反馈!

赞(0)
未经允许不得转载:TI中文支持网 » PCA9555: 无法真正输出电平值
分享到: 更多 (0)