This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2340R5:Zephyr I2C 驱动程序不配置 I2C 总线速度

Guru**** 2779905 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1618941/cc2340r5-zephyr-i2c-driver-does-not-configure-i2c-bus-speed

器件型号: CC2340R5

您好:

我注意到在 i2c_cc23xx_cc27xx.c Zephyr 驱动程序中、没有设置 I2C 控制器速度的实际代码、只有一条 switch 语句将 fast 设置为 true 或 false:

	switch (I2C_SPEED_GET(dev_config)) {
	case I2C_SPEED_STANDARD:
		fast = false;
		break;
	case I2C_SPEED_FAST:
		fast = true;
		break;
	default:
		LOG_ERR("Unsupported speed");
		return -ENOTSUP;
	}

但没有实际代码将 I2C 控制器配置为 100KHz 模式或 400KHz 模式。 看起来好像控制器现在默认为 100KHz。

我们可以在这里添加实际代码来更改控制器速度吗?

Munan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Munan:

    感谢您联系我们! 让我向合适的 Zephyr 专家求助。

    此致、

    1 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Jan!  

    我注意到在 i2c_cc23xx_cc27xx.c 的第 496 行、我们确实调用了:

    /*启用和配置 I2C 主器件*/
        I2CControllerInitExpClk(config->base, fast);
    但我想我会看到、TPR 寄存器没有更新为 5、这是我们对 400KHz 的预期、它仍在读数 0x17:
    [仍然无法共享屏幕截图、但 TPR 正在读取 0x17]
     
    我在 hal ti i2c.c 文件中看到、用于计算 TPR 的公式与 TRM 有很大不同:
      TPR            =((I2C_CLK_FREQ +(2 * 10 * sclFreq)- 1)/(2 * 10 * sclFreq))- 1
    来自 TRM:
    TPR =[CLKSVT/(2 ×(SCL_LP + SCL_HP)×SCL_FREQ)]–1.
    这个公式看起来可疑。
    Munan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Munan、

    感谢您提供信息! 我会仔细研究一下、然后回复您。

    此致、

    Tarek D