请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:PROCESSOR-SDK-AM64X 工具/软件:
我在 AM64x 器件上使用 M4F 内核中的 MCU_I2C 实例。 我无法初始化 MCU_I2C 实例、它始终无法打开。
我使用的是 SDK v10.0。 请指导我们解决相同问题的步骤。
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.
工具/软件:
我在 AM64x 器件上使用 M4F 内核中的 MCU_I2C 实例。 我无法初始化 MCU_I2C 实例、它始终无法打开。
我使用的是 SDK v10.0。 请指导我们解决相同问题的步骤。
在 SDK v10.0发布到 SDK v11.0后、I2C 驱动程序似乎损坏。
I2C_LLD_isBaseAddrValid() API 返回失败状态、因为未检查 MCU_I2C 地址。 请将 I2C_LLD_isBaseAddrValid 函数代码替换为以下提供的代码。 I2C_LLD_isBaseAddrValid 位于 ${MCU+SDK}/source/drivers、soc、am64x_am243x/sdk.h soc 添加到工程。
static inline int32_t I2C_lld_isBaseAddrValid(uint32_t baseAddr) { /* Set status to invalid Param */ int32_t status = (int32_t)(-3); if ( (baseAddr == CSL_I2C0_CFG_BASE) || \ (baseAddr == CSL_I2C1_CFG_BASE) || \ (baseAddr == CSL_I2C2_CFG_BASE) || \ (baseAddr == CSL_I2C3_CFG_BASE) || \ (baseAddr == (uint32_t)AddrTranslateP_getLocalAddr(CSL_MCU_I2C0_CFG_BASE)) || \ (baseAddr == (uint32_t)AddrTranslateP_getLocalAddr(CSL_MCU_I2C1_CFG_BASE)) ) { /* Set status to success */ status = 0; } return status; }
还 应在 soc 文件中包含 AddrTranslateP.h 文件。
另请替换中的代码 I2C_OPEN 功能如下图所述。
gmake -s libs PROFILE={release|debug} clean gmake -s libs PROFILE={release|debug}