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.

[参考译文] AM6442:AM6442 定制板上的 Cortex-M4F I2C 接口支持

Guru**** 2551110 points
Other Parts Discussed in Thread: AM6442, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1566761/am6442-cortex-m4f-i2c-interface-support-on-am6442-custom-board

器件型号:AM6442
主题: SysConfig 中讨论的其他器件

工具/软件:

您好、Thakar、

TI 团队大家好、

处理器:  AM6442
SDK 版本:  AM64x MCU+ SDK 10.00.00

我目前正在使用  基于 AM6442 处理器  在 A 上  定制设计的电路板 、侧重于验证  MCU_I2C0   MCU_I2C1  接口  Cortex-M4F 内核

根据当前的 SDK、没有现成的示例专门演示 Cortex-M 内核的 I2C 功能。 为了解决此问题、我已将必要的 I2C LLD 软件包导入 uart_echo 示例中、并尝试使用低级驱动程序启动 I2C 接口。

查询:

a) I2C_lld_init()  函数的 I2C 初始化失败、返回状态代码 -3
请您确认是否存在  支持 MCU_I2C 接口、可从 Cortex-M4F 内核访问这些接口

B) 如果支持、您能否提供或指出任何  示例项目或文档  演示 Cortex-M 内核的 I2C 用法?

参考: I2C_LLD 驱动程序

请就此提供您的意见

谢谢。此致

Ganesh Pawar

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

    指定的专家创建了一个常见问题解答、可以解决您的问题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501801/faq-processor-sdk-am64x-not-able-to-open-i2c-drivers-for-mcu-i2c

    如果这不能解决您的问题、请等待一段时间、直到专家可以回复此问题。

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

    尊敬的 Ganesh:

    能否确认  支持 MCU_I2C 接口、可从 Cortex-M4F 内核访问这些接口 ?

    是的、以上都是可行的。 之所以返回错误代码–3、是因为未在 API 中正确处理 MCU_I2C 的基地址检查。

    以上回复中提供的常见问题解答应有助于解决问题。

    [引用 userid=“548518" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1566761/am6442-cortex-m4f-i2c-interface-support-on-am6442-custom-board ]如果支持、您可以提供或指向任何  示例项目或文档  演示 Cortex-M 内核的 I2C 用法?

    SDK 中没有提供此类示例。 您可以按照常见问题解答中的步骤操作、并将其移植到 M4F。

    此致、

    Tushar

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

    你好、Vaibhav、

    我已实施主题中讨论的更改。 然而,我对最后一步--建造图书馆有疑问。 我当前正在直接编译工程、编译过程中没有错误。 但当我使用 JTAG 进行调试时、似乎没有考虑新添加的指令。 您能否详细说明使用提供的命令构建库的正确过程?

    此外、如果我只编译示例工程、这是否意味着库文件未重建或未包含在编译过程中?“

    请提供您对此的意见。

    谢谢。此致

    Ganesh Pawar  

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

    尊敬的 Ganesh:

    您使用什么命令来构建库?

    另外、如果我只编译示例工程、这是否意味着库文件不会重建或包含在编译过程中?“

    是的、需要显式构建库文件。 它不是示例构建的一部分。

    首先、您已经为发布和调试配置文件构建库、然后构建示例。

    此致、

    Tushar

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

    嗨、Tushar

    您使用什么命令来构建库?

    您能帮助我构建这个库吗? 我目前无法成功构建。 我附上了日志以供参考。

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    系统上似乎未安装 CCS v12.7.0。 您能否确认安装了所需的工具?

    此致、

    Tushar

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

    尊敬的 Tushar:

    我已安装 CCS v12.8.1、并可以确认所有必需的工具均已准备就绪。

    SDK 版本: mcu_plus_sdk_am64x_10_00_00_20。

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    您使用的是 CCS v12.8.1 gmake 问题 CCS v12.7.0 。 请更新 Imports.Mak 加载到正确的 CCS 路径中。

    修改路径后、您应该能够构建库。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您在构建库映像方面的指导、我成功地在调试和发布配置中构建了库映像。

    构建完库和工程后、我测试了 I2C0 线路的初始化。 但是、状态仍返回–3。

    观察结果:

     分配的 I2C 基地址:

         #define CSL_MCU_I2C0_CFG_BASE (0x4900000UL)。

    此地址似乎与运行时期间观察到的转换后的地址不同(如随附的图像所示)。

    我们是否可以使用直接验证基址 CSL_MCU_I2C0_CFG_BASE,就像我们如何与其他基址(如) CSL_I2C0_CFG_BASE进行比较,而不是依靠地址转换?“

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    我们能否使用直接验证基址 CSL_MCU_I2C0_CFG_BASE、就像我们与其他基址 CSL_I2C0_CFG_BASE(如)的比较方式一样、而不是依赖于地址转换?“

    这不奏效。 每当您在应用程序中更改 RAT 区域时、如果您对地址进行硬编码、代码将中断。

    常见问题解答中提到的更改应该适用于您的案例。

    此致、

    Tushar

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

    嗨、Tushar

    这将不起作用。 每当您在应用程序中更改 RAT 区域时、如果您硬编码地址
    、代码将中断。

    我的意思是

     (baseAddr = SL_I2C0_CFG_BASE)|| (baseAddr = CSL_MCU_I2C0_CFG_BASE)

    而不是  

     (baseAddr ==(uint32_t) AddrTranslateP_getLocalAddr (CSL_MCU_I2C0_CFG_BASE))

    如果这种方法不起作用、那么尽管根据常见问题解答应用了更改、但很明显、转换后的地址与基地址不匹配、从而导致状态为–3。

    由于 I2C 实例未初始化、因此 I2C_LLD_PROBE 返回状态为 I2C_STATE_RESET、并且外设保持忙碌状态。
    这会阻止 MCU_I2C 可用于通信。

    是否需要做任何其他工作来使 I2C 外设进入运行状态?
    感谢您对此的意见。

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    很明显、转换后的地址与基址不匹配、因此状态为–3。

    能否 在地址转换之前和转换后分享 CSL_MCU_I2C0_CFG_BASE 宏的值是多少?

    我已经看到、应用常见问题解答中指定的更改后、客户能够使用 MCU_I2C 启用 I2C 通信。

    此致、

    Tushar

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

    尊敬的 Tushar:

    您能否 在地址转换前和转换后分享 CSL_MCU_I2C0_CFG_BASE 宏的值是多少?

    以下是翻译后的基地址和地址的详细信息。

    基址:  

       #define CSL_MCU_I2C0_CFG_BASE (0x4900000UL)
       #define CSL_MCU_I2C0_CFG_SIZE (0x100UL)

    转换后地址: I2C0:转换后的地址 (0x84900000) 还附加了映像以供参考。

      

    请就此提供您的意见。

    谢谢。此致

    Ganesh Pawar

      

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

    尊敬的 Ganesh:

    请分享的价值 baseaddr 变量来表示  I2C_LLD_isBaseAddrValid() API。

    此致、

    Tushar

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

    尊敬的 Tushar:

    baseaddr  变量来表示  I2C_LLD_isBaseAddrValid()  API 为 (0x4900000UL)、转换后的地址为 (0x84900000)。

    此致

    Ganesh

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

    尊敬的 Ganesh:

    baseAddr 变量值应等于转换后的地址。 看起来您尚未在中进行更改   ${MCU+SDK}/source/drivers/i2c/v0/i2c_v0.c  源文件中、该文件位于常见问题解答中。

    此致、

    Tushar

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

    尊敬的 Tushar:

    已完成常见问题解答中提到的更改、没有排除项、也会构建库

    对于参考、我遵循“i2c_temperature_polling_lld_am64x-evm_r5fss0-0_nortos_ti-arm-clang"工程“工程、我已为我的 Cortex-M4 工程集成了 i2c 接口。

    此致

    Ganesh

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

    尊敬的 Ganesh:

    您是尝试 从 R5F 内核访问 MCU_I2C、还是尝试从 MCU_M4F 内核访问它?

    此致、

    Tushar

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

    尊敬的 Tushar:

    我正在从 Cortex-M4 内核访问 MCU_I2C。

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    请与我们共享您的 example.syscfg 文件。

    此致、

    Tushar

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

    尊敬的 Tushar:

    确保附上 syscfg 文件

     e2e.ti.com/.../syscfgConfiguration.zip

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    您发送了错误的文件。 我想要的 example.syscfg 头文件中。

    此致、

    Tushar

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

    尊敬的 Tushar:

    很抱歉分享了错误的文件。

    以下是附加的 example.syscfg zip

    .e2e.ti.com/.../example_5F00_SysCfg.zip

    谢谢。此致

    Ganesh

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

    尊敬的 Ganesh:

    感谢您共享上述 SysConfig 文件。 我检查了以上内容、配置看起来正常。

    但我担心为什么 baseAddr  变量 I2C_LLD_isBaseAddrValid API   0x4900000UL。

    您能否在 执行 i2c_v0.c 文件中提到的以下行后检查其值是多少 i2cLldHandle->baseAddr 可变?  变量应保留  0x84900000  数据值。

    此致、

    Tushar

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

    尊敬的 Tushar:

    感谢您的意见。

    [引述 userid=“16414" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1566761/am6442-cortex-m4f-i2c-interface-support-on-am6442-custom-board/6036710

    但我担心为什么 baseAddr  变量 I2C_LLD_isBaseAddrValid API   0x4900000UL。

    您能否在 执行 i2c_v0.c 文件中提到的以下行后检查其值是多少 i2cLldHandle->baseAddr 可变?  变量应保留  0x84900000  数据值。

    [/报价]

    您能否确认常见问题解答中提到的更改是否仅适用于 HLD(高级驱动程序)I2C API、或者是否还扩展了对 LLD(低级驱动程序)I2C API 的支持?

    谢谢。此致

    Ganesh Pawar

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

    尊敬的 Ganesh:

    您能否确认常见问题解答中提到的更改是否仅适用于 HLD(高级驱动程序)I2C API、或者是否还扩展了对 LLD(低级驱动程序)I2C API 的支持?

    是的、上面提到的常见问题解答专门针对 HLD 驱动程序构建。

    此致、

    Tushar

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

    尊敬的 Ganesh:  

    我确实检查了为 LLD 驱动程序生成的代码没有调用 I2C_OPEN () API ,该 API 将正确转换的基地址分配给 I2C 句柄。

    请在中添加以下代码行 I2C_LLD_INIT () API 指定  I2C_V0_LLD.c 文件位于 ${MCU+SDK} \source\drivers\i2c\v0\lld\i2c_v0_lld.c

     

    添加上述行后、将重新构建驱动程序库。 成功构建库后、重新编译示例。

    请告知我们上述情况是否有效。

    此致、

    Tushar