bsp_i2c.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef _BSP_I2C_H
  2. #define _BSP_I2C_H
  3. void bsp_i2c_init(void);
  4. #if I2C_SW_EN
  5. void bsp_i2c_start(void);
  6. void bsp_i2c_stop(void);
  7. void bsp_i2c_tx_byte(uint8_t dat);
  8. uint8_t bsp_i2c_rx_byte(void);
  9. bool bsp_i2c_rx_ack(void);
  10. void bsp_i2c_tx_ack(void);
  11. void bsp_i2c_tx_nack(void);
  12. #elif I2C_HW_EN
  13. #define DATA_CNT_1B 1
  14. #define DATA_CNT_2B 2
  15. #define DATA_CNT_3B 3
  16. #define DATA_CNT_4B 4
  17. #define START_FLAG0 BIT(3)
  18. #define DEV_ADDR0 BIT(4)
  19. #define REG_ADDR_0 BIT(5)
  20. #define REG_ADDR_1 (BIT(5) | BIT(6))
  21. #define START_FLAG1 BIT(7)
  22. #define DEV_ADDR1 BIT(8)
  23. #define RDATA BIT(9)
  24. #define WDATA BIT(10)
  25. #define STOP_FLAG BIT(11)
  26. #define NACK BIT(12)
  27. //i2c_cfg配置I2C数据格式:
  28. //1、发送:[START_FLAG0] [DEV_ADDR0] [REG_ADDR_0(REG_ADDR_1, 16位地址)] [WDATA] [STOP_FLAG] (设上WDATA)
  29. //2、接收:[START_FLAG0] [DEV_ADDR0] [REG_ADDR_0(REG_ADDR_1, 16位地址)] [START_FLAG1] [DEV_ADDR1] [RDATA] [STOP_FLAG](设上RDATA)
  30. void bsp_i2c_tx_byte(u16 dev_addr, u16 reg_addr, u32 data);
  31. void bsp_i2c_rx_buf(u16 dev_addr, u16 reg_addr, u8 *buf, u16 len);
  32. void bsp_i2c_init(void);
  33. #endif
  34. #endif