Error handling for PCA9535D?

This commit is contained in:
Jasper Blanckenburg 2025-04-17 21:49:58 +02:00
parent ea45c3cbfb
commit 00bb72d7b7
2 changed files with 18 additions and 2 deletions

View File

@ -28,6 +28,7 @@
#define PCA_I2C_BASE_ADDRESS 0x40 #define PCA_I2C_BASE_ADDRESS 0x40
void PCA9535_init(I2C_HandleTypeDef* hi2c, uint8_t subadr); void PCA9535_init(I2C_HandleTypeDef* hi2c, uint8_t subadr);
HAL_StatusTypeDef PCA9535_writeRegister(uint8_t reg, uint8_t data);
void PCA9535_setGPIOPinDirection(uint8_t Port, uint8_t pin, uint8_t state); void PCA9535_setGPIOPinDirection(uint8_t Port, uint8_t pin, uint8_t state);
void PCA9535_setGPIOPinOutput(uint8_t Port, uint8_t pin, uint8_t state); void PCA9535_setGPIOPinOutput(uint8_t Port, uint8_t pin, uint8_t state);

View File

@ -31,8 +31,23 @@ void PCA9535_init(I2C_HandleTypeDef* hi2c, uint8_t subadr) {
pcai2c = hi2c; pcai2c = hi2c;
deviceadr = PCA_I2C_BASE_ADDRESS | (subadr << 1); deviceadr = PCA_I2C_BASE_ADDRESS | (subadr << 1);
uint8_t initalizationconfig[7] = {0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF}; if (PCA9535_writeRegister(2, 0) != HAL_OK) {
HAL_I2C_Master_Transmit(pcai2c, deviceadr, initalizationconfig, 7, 1000); Error_Handler();
}
if (PCA9535_writeRegister(3, 0) != HAL_OK) {
Error_Handler();
}
if (PCA9535_writeRegister(6, 0) != HAL_OK) {
Error_Handler();
}
if (PCA9535_writeRegister(7, 0) != HAL_OK) {
Error_Handler();
}
}
HAL_StatusTypeDef PCA9535_writeRegister(uint8_t reg, uint8_t data) {
uint8_t dataarray[2] = {reg, data};
return HAL_I2C_Master_Transmit(pcai2c, deviceadr, dataarray, 2, 1000);
} }
void PCA9535_setGPIOPinDirection(uint8_t Port, uint8_t pin, uint8_t state) { void PCA9535_setGPIOPinDirection(uint8_t Port, uint8_t pin, uint8_t state) {