I2C driver cleanup (#21273)
* remove i2c_start and i2c_stop from i2c drivers * remove static i2c_address variable from chibios i2c driver
This commit is contained in:
parent
2b0965944d
commit
e9bd7d7ad3
49 changed files with 280 additions and 603 deletions
|
@ -5,8 +5,8 @@
|
|||
bool i2c_initialized = false;
|
||||
|
||||
void left_config(void);
|
||||
uint8_t left_write(uint8_t reg, uint8_t data);
|
||||
uint8_t left_read(uint8_t reg, uint8_t *data);
|
||||
i2c_status_t left_write(uint8_t reg, uint8_t data);
|
||||
i2c_status_t left_read(uint8_t reg, uint8_t *data);
|
||||
|
||||
uint8_t init_mcp23017(void)
|
||||
{
|
||||
|
@ -35,12 +35,11 @@ void left_init(void)
|
|||
|
||||
void left_scan(void)
|
||||
{
|
||||
uint8_t ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT);
|
||||
|
||||
i2c_status_t ret = i2c_ping_address(I2C_ADDR, HOTDOX_I2C_TIMEOUT);
|
||||
|
||||
if (ret == 0)
|
||||
if (ret == I2C_STATUS_SUCCESS)
|
||||
{
|
||||
i2c_stop();
|
||||
|
||||
if (!i2c_initialized)
|
||||
{
|
||||
i2c_initialized = true;
|
||||
|
@ -91,40 +90,29 @@ void left_config(void)
|
|||
left_write(MCP23017_B0_GPIOB, 0xC0);
|
||||
}
|
||||
|
||||
uint8_t left_write(uint8_t reg, uint8_t data)
|
||||
i2c_status_t left_write(uint8_t reg, uint8_t data)
|
||||
{
|
||||
if (!i2c_initialized)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t ret;
|
||||
i2c_status_t ret;
|
||||
|
||||
ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
|
||||
ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
|
||||
ret = i2c_write(data, HOTDOX_I2C_TIMEOUT);
|
||||
ret = i2c_writeReg(I2C_ADDR, reg, &data, sizeof(data), HOTDOX_I2C_TIMEOUT);
|
||||
|
||||
out:
|
||||
i2c_stop();
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint8_t left_read(uint8_t reg, uint8_t *data)
|
||||
i2c_status_t left_read(uint8_t reg, uint8_t *data)
|
||||
{
|
||||
if (!i2c_initialized)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t ret = 0;
|
||||
i2c_status_t ret = 0;
|
||||
ret = i2c_readReg(I2C_ADDR, reg, data, 1, HOTDOX_I2C_TIMEOUT);
|
||||
|
||||
ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
|
||||
ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
|
||||
ret = i2c_start(I2C_ADDR_READ, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
|
||||
|
||||
*data = i2c_read_nack(HOTDOX_I2C_TIMEOUT);
|
||||
|
||||
out:
|
||||
i2c_stop();
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -10,10 +10,7 @@
|
|||
#define MCP23017_A1 0
|
||||
#define MCP23017_A2 0
|
||||
|
||||
#define I2C_ADDR (0x20)
|
||||
#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
|
||||
#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
|
||||
|
||||
#define I2C_ADDR ((0x20) << 1)
|
||||
|
||||
#define MCP23017_B0_IODIRA 0x00
|
||||
#define MCP23017_B0_IODIRB 0x01
|
||||
|
@ -40,8 +37,6 @@
|
|||
|
||||
#define HOTDOX_I2C_TIMEOUT 100
|
||||
|
||||
typedef int16_t i2c_status_t;
|
||||
|
||||
void left_init(void);
|
||||
void left_scan(void);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue