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:无法在 I2C2的 SCL 和 SDA 线路上获得 I2C 输出

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1398131/am2634-not-able-get-i2c-output-on-scl-and-sda-lines-for-i2c2

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

工具与软件:

大家好、团队成员:

 我已将基于 I2C 的数字电位器连接到 I2C2。 我正在使用 Resource Explorer 中的代码"i2c_read_am263x-cc_r5fss0-0_nortos_ti-arm-clang"。 不过、无法在示波器上看到两个引脚的任何输出。

SDA 引脚:C6

SCL 引脚: A5

下面给出了 I2C2配置

代码:

void i2c_read_main (void * arg0)

uint16_t 采样;
int32_t status;
uint32_t i2cReadTargetAddr;
uint8_t rxBuffer[I2C_READ_LEN];
uint8_t txBuffer[I2C_WRITE_LEN];
I2C_Handle i2cHandle;
I2C_Transaction i2cTransaction;

drivers_open();
Board_driversOpen();

i2cReadTargetAddr = Board_i2cGetEepromDeviceAddr ();
i2cHandle = gI2cHandle[CONFIG_I2C1];

DebugP_log ("[I2C]读取数据...!!\r\n");
txBuffer[0]=1;
/*设置默认事务参数*/
I2C_Transaction_init (&i2cTransaction);

/*用所需的事务参数覆盖*/
i2cTransaction .readBuf = rxBuffer;
i2cTransaction .ReadCount = I2C_READ_LEN;
i2cTransaction .targetAddress = i2cReadTargetAddr;
i2cTransaction .writeCount= I2C_WRITE_LEN;
i2cTransaction .writeBuf= txBuffer;


/*读取20个样本并记录它们*/
for (SAMPLE = 0;SAMPLE < 20;SAMPLE++)

status = I2C_transfer (i2cHandle、&i2cTransaction);
if (STATUS == I2C_STS_SUCCESS)

DebugP_LOG ("[I2C]样本%u:%u\r\n"、sample、rxBuffer[0]);
}
设计

I2C_READ_ERROR_HANDLER (SAMPLE、i2cTransaction.status);
}
}

DebugP_LOG ("[I2C]读取数据...完成!!\r\n");
if (status == SystemP_SUCCESS)

DebugP_LOG ("所有测试均已通过!\r\n ");
}
设计

DebugP_log ("某些测试已失败!!\r\n ");
}

Board_driversClose ();
drivers_close();

返回;
}

如果我缺少任何配置或代码更改、请告知我。

感谢您的帮助!

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

    申请紧急支持!

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

    申请紧急支持!

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

    尊敬的 Ajith:

    您似乎配置了错误的引脚。

    用户指南 https://www.ti.com/lit/ug/spruj09d/spruj09d.pdf?ts = 1723183030506中提到了正确的引脚。

    是否可以尝试在 SysConfig 中更改为此选项?

    如果问题仍然存在、请告诉我

    此致、

    Abishek S S.

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

    尊敬的 Abhishek:

    根据数据表、I2C2仅通过 HSEC 引脚提供(如下所示)、而不通过 B7和 C7提供(如第43页所示)。

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

    Achishek、也请让我知道 I2C0和 I2C1的引脚

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

    你好、Ajit、

    您已共享的引脚名称是引脚多路复用选项。 如果您在 SysConfig 中选择 B7或 C7、我们的 SDK Pinmux 驱动程序将配置多路复用器以将信号路由到 I2C。 我希望这能解答您的问题。

    另外、对于 I2C1、请使用 Sysconfg 建议的引脚

    谢谢!

    Abishek S S.

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

    当然是 Abhishek、我已从 I2C2的 syscfg 选项中选择了 C7和 B7、如下所示

    对于 I2C0 SCL->A13 和 SDA->B13

    I2C1 SCL->D7和 SDA->C8

    请验证。

    此外、我将使用4.7K 和100kHz 的外部上拉电阻

    要连接 AM2634控制卡  

    TMDSHSECDOCK 可使用所有 I2C 引脚。 我将使用 HSEC 引脚排列来获取 Dock 站引脚

    谢谢!

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

    I2C3 SDA->A16 SCL->B15

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

    仍然无法从 I2C0引脚 SCL->A13和 SDA->B13获得 I2C 波形

    尝试在 I2C0上发送0x55、但在示波器上看不到任何波形。

    感谢您的紧急支持!

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

    Ajit、

    您是否使用新的 SysConfig 设置在 CCS 中重新构建示例?

    此致、

    Brennan

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

    尊敬的 Brennan:  

    是的、我已经重建代码

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

    Ajit、

    您是否正确设置了 I2C0多路复用器的选择位?

    该信号来自 I2C 控制型 IO 扩展器、必须设置为高电平、以将信号路由到控制卡 EVM 的 HSEC 引脚。  

    此致、

    Brennan

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

    尊敬的 Brennan:

    我已在 syscfg 中为 I2C0配置了 I2C 引脚。 我是否需要对 I2C0_MUX_SEL 位执行任何其他操作。? 如何在代码中实现该操作? 如何验证它是否已在代码中完成?

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

    尊敬的 Brennan:

    我还开始检查 I2C1、因为 I2C1引脚直接连接到 HSEC180连接器。

    但仍然无法在 I2C1SDA 和 I2C1SCL 引脚上获取任何波形。  

    请对此提供支持!

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

    Ajit、

    对于 I2C0_MUX_SEL 位、您需要向 AM263x-CC 上的 IO 扩展器器件发送 I2C 命令以将该位设置为高电平。 您可以在 SDK 示例的以下文件中找到示例 IO 扩展器代码: mcu_plus_sdk_am263x_09_02_00_56\examples\drivers\gpmc\gpmc_PSRAM_io\am263x-cc\io_expander.c

    对于 I2C1、您能否描述如何探测 SDA 和 SCL 引脚以及建立了哪些连接?

    此致、

    Brennan

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

    尊敬的 Brennan:

    我将检查 I2C0的 IO_EXPANDER 代码

    对于 I2C1、我将使用以下连接

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

    Ajit、

    是否将每个示波器探头连接到控制卡上的公共 GND 点?

    此致、

    Brennan

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

    是的、布伦南!

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

    Ajit、  

    您是否已尝试探测 HSEC 引脚上的任何其他 I2C 外设?

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

    嗨 Brennan,是的,我试过 I2C2但结果相同。

    是否应该通过电话讨论此问题? 如果是、请告诉我合适的时间和时区。 我会安排会议。

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

    你好、Ajit、

    Brennan 目前正在休假、因此我将在这里尝试并提供帮助。

    今天我没有进行完整的硬件设置来测试 I2C1连接、而是会在周一提供。 同时、我可以查看原理图/SysConfig/ 代码、确定它的任何问题。

    回复:I2C1的示例我将回顾 SDK 示例、但我们通常不会为每个串行通信端口提供示例。

    此致、

    Ralph Jacobi

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

    你好、Ajit、

    查看软件+ SysConfig、一切看起来似乎都在表面上进行。 我已根据 controlCARD 原理图验证您的引脚选择是否正确。 仅供参考、我们在 controlCARD 上有上拉电阻器、因此您甚至不需要 I2C 线路上的上拉电阻器。 我认为这不会造成任何伤害、但您可以简化您的测试设置。

    对于 I2C1、我将使用以下连接

    [报价]

    因此、您直接在 controlCARD HSEC 引脚上进行探测、而不使用 Dock? 我以前从未尝试过这样的探测信号、但在理论上是可以做到的。 您能否发送确切硬件设置的图像、以便在我们的原理图中验证您正在探测正确的引脚?

    理想情况下、最好使用此处的 HSEC 坞。 如果是、请告诉我您在探测哪些引脚。 虽然我不记得使用 I2C 来解释、但我以前曾有一个例子、其中文档误导了要探测的 HSEC 坞引脚、因此想要验证您正在探测的确切位置。

    我将在星期一进行完整的硬件设置、在这里我可以运行您的确切代码并进行验证 同时、请咨询其他团队成员、看看他们今天是否能做到类似的事情。

    此致、

    Ralph Jacobi

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

    当然拉尔夫,感谢您的支持!

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

    尊敬的 Ralph、我使用坞站来测试 I2C1的信号。 我正在连接到坞站上的85和87

    如下所示的硬件设置图片。

    软件是否有任何问题?  

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

    目前我使用 Resource Explorer 中的 i2c_read_am263x-cc_r5fss0-0_freertos_ti-arm-clang、并尝试在此配置 I2C1。 我已经共享了 SYSCFG 和代码详细信息。

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

    你好、Ajit、

    运行测试时、您是否通过坞站上的 USB-C 连接器为坞站供电? 或者如果不是、您如何为设置供电?

    此致、

    Ralph Jacobi

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

    尊敬的 Ralph:

    我正在使用 Type-C 适配器为控制卡加电。 扩展坞卡正在从 controlCard 获得电源。 我还尝试了在集线站上使用 SPI 引脚、并且 SPI 可以工作、但 I2C1无法工作

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

    感谢 Ajit、我的一个团队成员正在努力复制此精确设置。 将在有结果时报告给我们。

    此致、

    Ralph Jacobi

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

    你好、Ajit、

    我的团队成员确认了 AM263 controlCARD + HSECDOCK 设置上的 I2C1运行情况、使用根据 SysConfig/您提供的应用程序代码构建的项目输出 I2C、而不是使用  Board_i2cGetEepromDeviceAddr API、该 API 旨在简化测试。

    根据该结果、我希望您能够在电路板上获得适当的输出。 是否显示了未建立调试连接的图像? 因为在该图像上未探测引脚85/87。

    此致、

    Ralph Jacobi

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

    是的、在图像中未连接。 但我将它连接到85和87到示波器。

    是否可以共享 syscfg 和代码文件、以便我比较和检查问题。

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

    你好、Ajit、

    我们采用了您的确切代码并将其重复使用 原样 除了我被替换

    i2cReadTargetAddr = Board_i2cGetEepromDeviceAddr();

    或者会与  

    i2cReadTargetAddr = 0x20;

    这样就不必导入 board.c 文件。

    在电路板上、看起来您使用的是 QSPI 闪存模式、那么您是加载.out 文件并从 QSPI 执行吗? 我相信我的团队成员所做的尝试是  直接在 CCS 中使用 NOBOOT 模式、而不是使用任何引导加载程序。

    e2e.ti.com/.../1222.example.syscfge2e.ti.com/.../i2c_5F00_read.c

    此致、

    Ralph Jacobi

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

    尊敬的 Ralph:  

    我使用了相同的代码、但在示波器上仍然没有输出。

    您能将您的电路板设置图像发送给我吗? 是否为底座板提供单独的电源?  

    如果可能、请提供您使用过的完整项目。

    谢谢!

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

    我会在周一举行安排会议。 请告诉我有关时序的信息、以便我准备好设置。

    会议链接->  立即加入会议

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

    代码卡在状态= I2C_transfer (i2cHandle、&i2cTransaction);

    调试终端输出

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

    尊敬的 Ralph:

    我能够在示波器上获取 I2C1波形。 现在、我将连接从器件并检查通信情况

    谢谢!

    您能否告知我还为 I2C0启用多路复用器选项的完整步骤? 因为我们需要在项目中使用两条 I2C 总线。 我已经研究了 IO 扩展器代码、但没有了解如何启用 I2C0多路复用器选项

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

    尊敬的 Ralph、我可以从 I2C1中写入或读取、但不能在同一个 I2C_transfer 调用中同时写入或读取这两个。

    我是否需要 分别调用 I2C_transfer 来写入数据、以及调用从器件读取数据的单独调用。

    此外、我们可以同时初始化 txbuf 和 rxbuf 吗? 如下图所示  

    i2cTransaction .writeBuf = txBuffer;
    i2cTransaction .writeCount = 1;
     i2cTransaction .readBuf = rxBuffer;
    i2cTransaction .ReadCount = 1;
    i2cTransaction。targetAddress = deviceAddress;

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

    你好、Ajit、

    我是否需要 单独调用 I2C_transfer 以写入数据、以及单独调用从设备读取数据。

    我还没有尝试通过一个电话这样做、因此我不确定、我会请我们的一位软件专家对此进行评论。 对于我来说、API 文档中没有明确说明我们可以改进哪些方面。

    我能够获取范围上的 I2C1波形。 现在、我将连接从设备并检查通信[/报价]

    很高兴听到您让 I2C1正常工作。

    您能告诉我另外启用 I2C0多路复用器选项的完整步骤吗? 因为我们需要在项目中使用两条 I2C 总线。 我已经研究过 IO 扩展器代码、但没有了解如何启用 I2C0多路复用器选项

    我目前正在验证此代码、并将在我确认 获取 I2C0信号输出后更新。

    此致、

    Ralph Jacobi

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

    当然、感谢您的支持!

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

    你好、Ajit、

    就 I2C0而言、可以-它实际上通常路由到电路板 ID EEPROM。 从我可以看到、您 还可以使用 HSEC 多路复用器选项对其进行路由、然后在 HSEC 引脚上将其用作 I2C、但那时您必须添加上拉。

    如果是、我们需要将 I/O 扩展器的 I2C0_MUX_SEL 输出设置为高电平。

    是否适合您的需求? 如果是这样、我将提供一个明天处理所有这些元素的项目。

    此致、

    Ralph Jacobi

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

    当然、这会很有帮助。 此外、请检查是否有任何使用 I2C1完成写入和读取的示例。

    谢谢!

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

    你好、Ajit、

    我今天还没有这样做、我不确定在接下来的几天里我将有多少时间来花更多的时间来讨论这一点、因为将这些示例整合在一起有点超出了我的常规范围。

    这里说的是用于处理 I2C0多路复用器的 IO 扩展器范围。 您需要将 I2C2配置为400kHz 的引脚 C7和 B7、然后运行:

    void i2c_io_expander(void *args)
    {
        int32_t         status;
        uint32_t        i2cTargetAddr;
        uint8_t         txBuffer[3];
        I2C_Handle      i2cHandle;
        I2C_Transaction i2cTransaction;
        i2cTargetAddr     = 0x20;
        i2cHandle = gI2cHandle[CONFIG_I2C2];
        status = I2C_probe(i2cHandle, i2cTargetAddr);
    
    
        if(status == SystemP_SUCCESS)
        {
            DebugP_log("[I2C] IO Expander found at device address 0x%02x \r\n", i2cTargetAddr);
        }
        else
        {
            DebugP_logError("[I2C] IO Expander not found at device address 0x%02x \r\n", i2cTargetAddr);
        }
        if(status == SystemP_SUCCESS)
                {
    
    
                    I2C_Transaction_init(&i2cTransaction);
                    i2cTransaction.writeBuf   = txBuffer;
                    i2cTransaction.writeCount = 3;
                    i2cTransaction.targetAddress = i2cTargetAddr;
                    txBuffer[0] = 0x06; /* configuration register 1 */
                    txBuffer[1] = 0xF3; /* ICSSM1_MUX_SEL ,ICSSM2_MUX_SELconfigured as output */
                    //txBuffer[2] = 0x07; /* configuration register 2 */
                    txBuffer[2] = 0xFC; /* RGMII_MUX_SEL configured as output, I2C0_MUX_SEL configured as output */
    
    
                    I2C_transfer(i2cHandle, &i2cTransaction);
                    DebugP_log("[I2C] IO Expander Configuration complete. [GPMC][PSRAM] ready for operation. \r\n");
                }
        Drivers_i2cClose();
    }
    

    此致、

    Ralph Jacobi