设计说明
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 master
I2C 作为 master 时,驱动的实现主要包括四个部分:
-
硬件参数配置:主要是设置 I2C 工作的主机模式,7bit 或 10bit 寻址,寻址的从机地址设置,FIFO 设置以及总线传输速率等。
-
SCL 时序参数设置:根据设置的总线传输速率,设置 SCL 的高低电平时间。
-
i2c_algorithm 的实现:作为主机端,主要是 master_xfer 的实现。在驱动实现中,以 message 为单位进行数据的收发,数据的传输采用中断的方式。
-
中断的处理:处理 master 端的数据收发,并产生相应的 start、ack、nack、restart、stop 信号。