This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好!
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;
}