TMS320F280039C: I2C时钟频率咨询

Part Number: TMS320F280039C
Other Parts Discussed in Thread: C2000WARE

问题现象: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时钟频率进行了测试,在8MHz时和12MHz时偏差更加的大,我想确认下这个现象正常不?我怕我有哪里没配置到位,但是仔细看了手册也没发现问题。

  • 您好

    在较低的 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等均无法显示图片,你可以自己复制链接用手机打开此链接来确认下是否有图片?

  • 您好

    400k 8M

    400k 10M

    400k 12M

    80k 8M

    80k 10M

    80k 12M

  • 你好,图片可以看到了,你检查一下你图片里的参数配置,我按手册里的计算方法来看你给出的参数配置有误,以你给出的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时钟