问题现象:I2C时钟频率比预期的小。I2C时钟为10MHz,从测试数据来看从测试数据来看是总时间多了10MHz的一个周期0.1us,核查了参考手册配置无误,测试80kHz时信号频率为1/(2.5us+0.1us)=79.37kHz,400kHz时为1/(12.5us+0.1us)=384.62kHz.。
【下图】配置I2C时钟频率为80kHz的参数
【下图】配置I2C时钟频率为80kHz时实测为79.37kHz
【下图】配置I2C时钟频率为400kHz的参数
【下图】配置I2C时钟频率为400kHz时实测为384.62kHz.
咨询问题:
1、I2C时钟频率比预期的小这种现象是正常的对吧?
2、可以针对此现象改变参数配置使得I2C时钟频率符合预期,改成实际400kHz时实际对应的是手册里的417kHz的配置,超过了手册所述I2C时钟频率最大400kHz的限制,可以这么使用吗?
【下图】配置实际I2C时钟频率为400kHz的参数
【下图】实测为I2C时钟频率为400kHz
您好
在较低的 I2C 时钟速度下、I2C 在较高的 I2C CLK 下创建所需时钟频率的分辨率较低、因此 I2C 时钟计算会出现一些误差。 我想您已经参考了手册中与此相关的时钟部分。 如果您可以提供示例项目供我在电路板上进行测试、我也可以在我的硬件上进行测试以验证
测试例程路径:\ti\c2000\C2000Ware_5_02_00_00\driverlib\f28003x\examples\i2c\i2c_ex2_eeprom.c
另外SCL信号频率计算涉及的三个参数我帖子里已给出,以配置I2C模组时钟10MHz,SCL信号频率400kHz为例:I2caRegs.I2CPSC.all为11,I2caRegs.I2CCLKL为8,I2caRegs.I2CCLKH为7,则理论的SCL信号频率为120MHz / {(IPSC + 1) [(ICCL + 5) + (ICCH + 5)]} = 120MHz / {(11 + 1) / [(8 + 5) + (7 + 5)] = 400kHz。
您好
请参阅我们之前在 F280039C 器件上执行的一些与此相关的测试。 根据 I2C 参数、时钟频率可能会出现偏差。 请参阅下面的、其中预期的目标时钟频率为400kHz。 根据配置的 ISPC、它会偏离目标值。
对于预期的 ISPC 为11的测试、您可以使用表中的相应参数进行测试、以查看是否观察到所需的400kHz 时钟速度
你回复我以下两个问题:
1、下图中我给出了I2C时钟为8MHz、10MHz和12MHz时配置SCL信号频率为80kHz和400kHz时的共6种参数,我自己实测的结果图中已给出。我需要你给出在这6种参数下的SCL频率测试数据。
2、你结合自己的测试数据给我个答案,是否是芯片目前的测试表现就是这样,我的配置没有问题?
您好
请在我们的测试中查看以下内容 开始测试时设置时钟、同时强制执行 CLKH 和 CLKL 寄存器
400k 8M
400k 10M
400k 12M
80k 8M
80k 10M
80k 12M
这是在不改变 CLKH 和 CLKL 的情况下进行测试、最准确的时钟值出现在10MHz I2C 时钟上
400k 8M
400k 10M
400k 12M
80k 8M
80k 10M
80k 12M
我测试了用谷歌浏览器、微软浏览器、微信浏览器等均不能查看,发给其它同事打开来也看不见你回复的图片,也测试了用手机移动数据和Wifi等均无法显示图片,你可以自己复制链接用手机打开此链接来确认下是否有图片?
你好,图片可以看到了,你检查一下你图片里的参数配置,我按手册里的计算方法来看你给出的参数配置有误,以你给出的I2C模组10MHz时SCL频率为400kHz的配置为例:你给出的是I2caRegs.I2CPSC.all为11,I2caRegs.I2CCLKL为5,I2caRegs.I2CCLKH为5,则理论的SCL信号频率为120MHz / {(IPSC + 1) [(ICCL + 5) + (ICCH + 5)]} = 120MHz / {(11 + 1) / [(5 + 5) + (5 + 5)] = 500kHz。
以下为手册中计算SCL频率所需的信息,SYSCLK为系统时钟频率,为120MHz;I2caRegs.I2CPSC.all 、 I2caRegs.I2CCLKL 、 I2caRegs.I2CCLKH为调试时改变的参数;d在I2caRegs.I2CPSC.all 大于1时固定为5。
你检查一下我给出的参数配置,如果你检查后没发现问题的话就按我给出的参数进行测试后回复我,谢谢。
您好
我用I2C时钟做了一些额外的测试
测试#2(模拟提供的CLKL/CLKH)
10 MHz @ 400 kHz
10 MHz @ 80 kHz
12 MHz @ 400 kHz
12 MHz @ 80 kHz
8 MHz @ 400 kHz
8 MHz @ 80 kHz
测试#3(调谐CLKL/CLKH以实现所需的时钟频率)
10 MHz @ 400 kHz
10 MHz @ 80 kHz
12 MHz @ 400 kHz
12 MHz @ 80 kHz
8 MHz @ 400 kHz
8 MHz @ 80 kHz
从测试中可以看出,需要对CLK值进行轻微更改才能达到所需的频率,并使用DriverLib函数选择I2C时钟