PDU_Code/Core/Inc/PCA9535D_Driver.h

43 lines
1.3 KiB
C

/*
* PCA9535D_Driver.h
*
* Created on: 24. April, 2024
* Author: nived
*/
#ifndef INC_PCA9535D_DRIVER_H_
#define INC_PCA9535D_DRIVER_H_
#include "main.h"
#define INPUT_REG_BASE_ADDRESS 0U
#define OUTPUT_REG_BASE_ADDRESS 2U
#define INPUT_POLARITY_INVERSION_REG_BASE_ADDRESS 4U
#define CONFIGURATION_REG_BASE_ADDRESS 6U
#define GPIO_DIR_OUTPUT 0U
#define GPIO_DIR_INPUT 1U
#define GPIO_INPUT_POLARITY_INVERTED 1U
#define GPIO_INPUT_POLARITY_NORMAL 1U
#define SET_ALL_GPIO_OUTPUT_MASK 0xFF
#define PC9535_PORTA 0x00
#define PC9535_PORTB 0x01
#define PCA_I2C_BASE_ADDRESS 0x40
void PCA9535_init(I2C_HandleTypeDef* hi2c, uint8_t subadr);
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_invertGPIOPinPolarity(uint8_t Port, uint8_t pin, uint8_t state);
uint8_t PCA9535_readGPIOPinInput(uint8_t Port, uint8_t pin);
void PCA9535_setGPIOPortDirection(uint8_t Port, uint8_t bitmask);
void PCA9535_setGPIOPortOutput(uint8_t Port, uint8_t bitmask);
void PCA9535_invertGPIOPortPolarity(uint8_t Port, uint8_t bitmask);
uint8_t PCA9535_readGPIOPortInput(uint8_t Port);
#endif /* INC_PCA9535D_DRIVER_H_ */