一. I2C实验
I2C时钟选择与传输速率
1. IMX6ULL的 I2C频率标准模式 100kbit/S,快速模式为 400Kbit/S
2. 时钟源选择 perclk_clk_root=ipg_clk_root=66MHz(由之前的时钟实验章节可以知道是 66MHz)。
二. I2C 寄存器配置
I2Cx_IFDR寄存器:分频寄存器。
I2Cx_IFDR寄存器设置 I2C频率,bit5:0位是设置频分值。
假如,我们现在需要 100kbit 的速率,那么,66000000/100000=660。可以通过查找与 660接近的数值,经过查找IC位设置位 0X38或 0X15时,为 640分频,66000000/640=103.125Kbit。
分频值与寄存器所设置的值对应表,如下所示(在《IMX6ULL参考手册》中的 I2C章节):
I2Cx_I2CR寄存器:
bit7 为I2C使能位,置1使能I2C。
bit5 为主从模式选择位,为0表示从机,为1表示主机。
Bit4 为发送/接收设置位,为0的时候是接收,为1的时候是发送。
I2SR寄存器:
bit7:传输完成位,为 0 表示正在发送,为 1 表示发送完成。
Bit5:I2C忙闲位,为0表示 I2C总线空闲,为 1表示 I2C总线忙。
Bit0:是读确认位,也就是ACK信号
I2DR寄存器: 数据寄存器。
yu