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.
大家好、
由于论坛的帮助、我能够让我们的定制板正常运行、从而使用 driverlib 在 I2C 模式下正确配置 eUSCI。
现在、我们需要尽可能降低功耗、因此我首先要做的是使用 ACLK 而不是 SMCLK 作为时钟
I2C。 嗯,一块蛋糕 我想…
由于某种原因,我的 ACLK 似乎没有正确启动..... 我的代码基于我在 Resource Explorer 中找到的示例、这是我配置 ACLK 的操作
int main (void) { volatile uint32_t j; PMM_unlockLPM5 (); WDT_A_HOLD (WDT_A_base); //为 XIN 和 XOUT 配置引脚 //将 P2.0和 P2.1设置为模块功能输入。 GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_P2、 GPIO_PIN0 + GPIO_PIN1、 GPIO_PRIMARY_MODULE_FUNCTION ); PMM_unlockLPM5 (); //初始化 XT1晶体振荡器而不超时 //如果出现故障,代码将在此处挂起。 //对于超时而不是代码挂起,请使用 CS_TurnOnXT1LFWithTimeout () CS_TurnOnXT1LF ( CS_XT1_DRIVE_0 ); cs_initClockSignal ( CS_ACLK、 CS_XT1CLK_SELECT、 CS_CLOCK 分频器_1 ); //清除所有 OSC 故障标志 CS_clearAllOscFlagsWithTimeout (1000); //启用振荡器故障中断 SFR_enableInterrupt (SFR_oscillator_FAULT_INTERRUPT); uint32_t clkValue = CS_getACLK (); /*应用程序继续使用 I2C 读数 ... (笑声) (笑声) *
问题是、稍后在代码中、我卡在 I2C 操作中、这只是因为 clkValue = 0。 因此、我假设 ACLK 未启动。
假设晶振正确安装在 PCB 上(XT1是32K 晶振、在 P2.0和 P2.1之间、请参阅说明)、您对我应该检查什么内容有什么建议以查看这里有什么问题吗?
提前感谢、
Lorenzo
作为一个附带问题,我可以补充说 eUSCI I2C 不能正常工作,即使我尝试使用 ACLK 作为 DCO 的时钟源....在使用 ACLK 进行 I2C 操作时是否有任何限制?
在这种情况下,clkValue 参数正确设置为预期值(32768),但不执行 I2C 操作.....
您好!
I2C 频率通常为100kHz 或400kHz、因此使用32.768kHz 时钟源可能无法正常工作。 如果您遇到 XT1晶振问题、则可能会由于未对晶振使用正确的有效负载电容而出现振荡器故障。
此致、
James
您好 James、
谢谢提示、电容器是正确的、因为我没有遇到任何故障...但我也没有得到任何计时器。 正如我在初始帖子中所写的、我在使用时获得的 clkValue
晶体为0,而在第二种情况下我得到32768......
不过,我对你的第一个发言很好奇。。。。 相反、我在 TI 文档中的任何地方都找不到 ACLK 不能用于 I2C 通信
在 driverlib 指南和其他任何地方、这作为一种可能性列出。 此外、在其他生产商的其他芯片上(例如 nRF52)、始终可以使用
I2C 上用于400k 通信的32k 时钟……这是 MSP430的限制吗? 您对此是否完全确定?
您好!
[引用用户="Lorenzo Bergamini">不过我对您的第一条陈述很好奇..... 我在 TI 文档中的任何地方都找不到 ACLK 不能用于 I2C 通信;相反、我[/引述]
ACLK 可被用作 eUSCI 模块的时钟源。 然而、对于 I2C、eUSCI 时钟源(BRCLK)被 UCBRx 分频、这意味着 BRCLK 必须大于位时钟频率(SCL)。 因此、对于400kHz SCL、您不能使用32kHz。
您可以参阅用户指南、了解有关 eUSCI 模块的更多信息。
此致、
James
洛伦佐:
只需补充 James 的说法:
PMM_unlockLPM5
配置完所有模块后,将端口解锁指令()放入程序中的一行。