Edit online

设计说明

4 Dec 2024
Read time: 1 minute(s)

源码说明

源代码位于 bsp/artinchip/
  • bsp/artinchip/drv/i2c/drv_i2c.c,I2C Driver 层实现

  • bsp/artinchip/hal/i2c/hal_i2c.c,I2C HAL 层实现

  • bsp/artinchip/include/hal/hal_i2c.h,I2C HAL 层接口头文件

模块架构

I2C 驱动 Driver 层采用 RT-Thread 的 I2C 设备驱动框架,APP 可以遵从 RT-Thread 的调用方式,也可以直接使用 HAL 层,支持 Baremetal 方式的应用场景。


i2c_structure

I2C master

I2C 作为 master 时,驱动的实现主要包括四个部分:

  1. 硬件参数配置:主要是设置 I2C 工作的主机模式,7bit 或 10bit 寻址,寻址的从机地址设置,FIFO 设置以及总线传输速率等。

  2. SCL 时序参数设置:根据设置的总线传输速率,设置 SCL 的高低电平时间。

  3. i2c_algorithm 的实现:作为主机端,主要是 master_xfer 的实现。在驱动实现中,以 message 为单位进行数据的收发,数据的传输采用中断的方式。

  4. 中断的处理:处理 master 端的数据收发,并产生相应的 start、ack、nack、restart、stop 信号。