33 IIC(十一)IIC Control Register

发布时间 2023-07-23 13:59:51作者: 人民广场的二道贩子

1. IIC 控制器通用结构

对于IIC Control器而言一般结构如下,不同设备会存在个体差异,但整体差别不大

  • control_register

    设置SCL的clock的frequency

  • tx_register

    将数据写入tx_register,数据会被shift_register(移位寄存器)一位一位通过SDA发送出去。

    数据发送完成之后,设备会产生一个中断

  • rx_register

    shift_register从SDA上一位一位的读取数据,写入到rx_register。读取完成之后,IIC control会产生一个中断

  • status_register

    状态寄存器

  • int_register

    中断寄存器

2. IMX6ULL IIC CONTROL

  • I2C Address Register

    此IIC adapter支持作为I2C client使用

3. IMX6ULL IIC Register

imx6ull存在4个iic control,每组iic控制器由5个16bit的寄存器控制

分别为

  • I2Cx_IADR(地址寄存器)

    iic adapter作为从设备iic client时设定其地址

  • I2Cx_IFDR(iic 分频寄存器)

  • I2Cx_I2CR(iic 控制寄存器)


    需要注意iic cotrol register未被使能,不影响iic status register的数据读取

  • I2Cx_I2SR(iic status register)

  • I2Cx_I2DR(iic data register)

4. 编程流程

  • 控制I2Cx_IFDR设置SCL

  • 配置I2Cx_I2CR

  • 发送数据

    • 设置I2Cx_I2CR进入发送模式

    • 将数据写入I2Cx_I2DR,等待中断发生

    • 中断事件发生后,判断是否为异常。是否得到ACK

    • 装填下一帧数据

  • 接受数据

    • 设置I2Cx_I2CR进入接收模式
    • 等待中断发生,判断是否为异常。
    • 读取I2Cx_I2DR中的数据