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.

[参考译文] AM2634-Q1:IIC 配置问题

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1528963/am2634-q1-iic-configuration-issue

器件型号:AM2634-Q1


工具/软件:

当引导程序跳转到应用程序时、不会调用 cdd_I2C_DeInit();

引导中 IIC 的配置为:

I2C_ICPSC=7;

I2C_ICCLKL=9;

I2C_ICCLKH=9;

应用程序中 IIC 的配置如下:

I2C_ICPSC=0xB;

I2C_ICCLKL=5;

I2C_ICCLKH=5;

此时、在测试 IIC 频率时、发现启动时为 380kHz、应用时为 520kHz。

在相同的配置下,当引导跳转到应用程序时,调用 cdd_I2C_DeInit();此时,测试 IIC 频率时,发现它在引导时为 380kHz ,在应用程序中为 360kHz。

我们发现这种现象是由 CDD_I2C_DeInit() 中的 IRS 配置引起的。 调用 cdd_I2C_DeInit() 后、IRS=0;此时这是正常的。

当 BOOT 跳转到应用程序时、如果未调用 CDD_I2C_DeInit()、即当 IRS=1 时、三个寄存器 I2C_ICPSC、I2C_ICCLKL 和 I2C_ICCLKH 被修改、修改此时不应生效。 为什么频率更改为 520kHz?

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

    顺便说一下、上面提到的频率都是指 I2C 的 SCL 时钟频率

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

    您好、

    您提到了在引导时使用 CDD I2C 取消初始化。

    您是否在引导加载程序中使用 MCAL 驱动程序? 是否可以知道您的引导加载程序也在 Autosar 上运行?

    谢谢。此致、

    Nikhil Dasan

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

    您好、

    引导模式仅使用 MCAL。

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

    您好、

    让我来看看这件事、明天再回来

    谢谢。此致、

    Nikhil Dasan

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

    您好、

    对此处延迟回复表示歉意。

    在如下所示的 MCAL 驱动程序流程中、仅当根据状态机调用 deinit 或在应用中首次调用 deinit 时、才会执行硬件时钟配置、如所示  

      

    因此、在本例中、由于您在 Boot 和 App 中都使用 MCAL I2C 驱动程序、因此您必须在进入应用程序之前在引导中将相同的软件取消初始化、否则将在不取消初始化的情况下重新初始化 I2C(这种情况下,行为可能不可预测)

    那么、您是否能够在引导中调用 deinit、或者是否有任何不这样做的特定要求?

    谢谢。此致、

    Nikhil Dasan

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

    你(们)好

    是的,我们可以  在 boot 中调用 deinit。 ?想知道 520kHz 频率是如何出现的、以及这是否是您提到的不可预测行为

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

    是的、由于 I2C INIT 在这种情况下会再次发生(即设置时钟而不将 I2C 置于复位状态)、这就是此行为的原因。

    作为修复的一部分、在即将推出的 SDK 中、我们将调用  cdd_I2C_Disable_master (pCddI2cInitParams->CddI2cHwCfgPtr[i]。HwInstance);  加载波形  Unit_Clk ()  电流、这样就不会发生这种情况。

    谢谢。此致、

    Nikhil Dasan