Files
SmartSpeaker/main/tca9555_driver/tca9555_driver.c
T

50 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "tca9555_driver.h"
#include "esp_log.h"
#include "bsp_board.h"
esp_io_expander_handle_t io_expander = NULL;
void tca9555_driver_init(void)
{
i2c_master_bus_handle_t i2c_bus = esp_ret_i2c_handle();
esp_err_t ret = esp_io_expander_new_i2c_tca95xx_16bit(i2c_bus, ESP_IO_EXPANDER_I2C_TCA9555_ADDRESS_000, &io_expander);
/* Test output level function */
ret = esp_io_expander_set_dir(io_expander, (IO_EXPANDER_PIN_NUM_0 | IO_EXPANDER_PIN_NUM_1 | IO_EXPANDER_PIN_NUM_5 | IO_EXPANDER_PIN_NUM_6 | IO_EXPANDER_PIN_NUM_8), IO_EXPANDER_OUTPUT);
if(ret != ESP_OK){
printf("EXIO Mode setting failure!!\r\n");
}
ret = esp_io_expander_set_dir(io_expander, (IO_EXPANDER_PIN_NUM_2 | IO_EXPANDER_PIN_NUM_9 | IO_EXPANDER_PIN_NUM_10 | IO_EXPANDER_PIN_NUM_11), IO_EXPANDER_INPUT);
if(ret != ESP_OK){
printf("EXIO Mode setting failure!!\r\n");
}
}
/********************************************************** Set the EXIO output status **********************************************************/
void Set_EXIO(uint32_t Pin,uint8_t State) // Sets the level state of the Pin without affecting the other pins(PIN1~8)
{
esp_err_t ret;
ret = esp_io_expander_set_level(io_expander, Pin, State);
if(ret != ESP_OK){
printf("EXIO level setting failure!!\r\n");
}
}
/********************************************************** Read EXIO status **********************************************************/
bool Read_EXIO(uint32_t Pin) // Read the level of the TCA9555PWR Pin
{
esp_err_t ret;
uint32_t input_level_mask = 0;
ret = esp_io_expander_get_level(io_expander, Pin, &input_level_mask);
if(ret != ESP_OK){
printf("EXIO level reading failure!!\r\n");
}
bool bitStatus = input_level_mask & Pin;
return bitStatus;
}