|
|
@@ -2,15 +2,13 @@
|
|
|
#include "gd32f3x0_i2c.h"
|
|
|
#include "gpio.h"
|
|
|
#include "i2c.h"
|
|
|
-#include "libs/logger.h"
|
|
|
|
|
|
static int _gd32_i2c_rw_bytes(uint32_t index, uint8_t address, uint8_t reg, uint8_t *buffer, int length, int write);
|
|
|
|
|
|
#define iic_device(id) ((id == 0)?I2C0:I2C1)
|
|
|
static uint32_t i2c_clk[2];
|
|
|
static uint8_t i2c_busy_count[2];
|
|
|
-static int i2c_busy_error = 0;
|
|
|
-static int i2c_other_error = 0;
|
|
|
+
|
|
|
static void _delay_1us(uint32_t n)
|
|
|
{
|
|
|
while(n-->0)
|
|
|
@@ -61,9 +59,6 @@ static void gd32_i2c_busy_recovery(uint32_t i2c_periph){
|
|
|
i2c_software_reset_config(i2c_periph, 0);
|
|
|
}
|
|
|
|
|
|
-void gd32_i2c_log(void) {
|
|
|
- sys_debug("i2c error %d - %d\n", i2c_busy_error, i2c_other_error);
|
|
|
-}
|
|
|
|
|
|
void gd32_i2c_init(uint32_t i2c_device, uint32_t rate){
|
|
|
uint32_t device = iic_device(i2c_device);
|
|
|
@@ -170,7 +165,6 @@ static int _gd32_i2c_rw_bytes(uint32_t i2c_index, uint8_t address, uint8_t reg,
|
|
|
|
|
|
if (gd32_i2c_wait_flags(device, I2C_FLAG_I2CBSY, RESET) < 0){
|
|
|
i2c_busy_count[i2c_index]++;
|
|
|
- i2c_busy_error ++;
|
|
|
if (i2c_busy_count[i2c_index] >= 10) {
|
|
|
gd32_i2c_deinit(i2c_index);
|
|
|
gd32_i2c_init(i2c_index, i2c_clk[i2c_index]);
|
|
|
@@ -270,9 +264,6 @@ static int _gd32_i2c_rw_bytes(uint32_t i2c_index, uint8_t address, uint8_t reg,
|
|
|
out_i2c_stop_on_bus:
|
|
|
i2c_stop_on_bus(device);
|
|
|
gd32_i2c_wait_stop(device);
|
|
|
- if (ret < 0) {
|
|
|
- i2c_other_error++;
|
|
|
- }
|
|
|
return ret;
|
|
|
}
|
|
|
|