33 IIC(十一)IIC Control Register
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中的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义