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.

[参考译文] BQ79600EVM:TMS570LS1224 (MCU)

Guru**** 2530840 points
Other Parts Discussed in Thread: TMS570LS1224, BQ79616, USB2ANY

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1443980/bq79600evm-tms570ls1224-mcu

器件型号:BQ79600EVM
主题中讨论的其他器件:TMS570LS1224BQ79616USB2ANY

工具与软件:

这种架构基于作为 MCU 的 TMS570LS1224、与 BQ79600进行通信。 我使用官方提供的 SPI 示例代码进行测试、但发现无法成功唤醒 BQ79600。

  • J10:1-2
  • J11:1-2
  • J12:2-3
  • J6:1-2
  • J1:2-3
  • J3:2-3

电源为5V、输入为 来自 MCU 侧的 p Post。

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

    我可以唤醒 BQ79600、但可以通过 SPI 通信唤醒 BQ79616

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

    您好!

    很抱歉因假期而延迟响应。 下周我再回答您的问题。

    此致!

    Zachary

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

    目前、我能够唤醒 BQ79600和 BQ79616并执行自动寻址过程。 但是、在随后的地址确认步骤中、我发现 BQ79616无法返回数据。 因此、BQ79600会一直等待来自 BQ79616的响应、导致通信失败。 此外、我测试了 USB2ANY 解决方案、结果与与与 MCU 通信时相同。

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

    您好!

    使用 USB2ANY 可以看到您可以成功唤醒器件、然后进行自动寻址。 不过、一旦开始轮询、就没有通信发生?

    以下是自动寻址的步骤、确保正确遵循这些步骤:

    61x 设备

    虚拟将0x00从0x343写入0x34A

    广播将0x01写入0x309以启用 AA 序列

    广播写入0x00、0x01、0x02、0x03等、直到所有器件(包括基址)都具有 ID (北向)

    广播将0x02写入0x308以将器件设置为堆栈(基址将忽略)。

    单个器件写入最后一个器件:0x03至0x308、以设置为栈顶

    验证、堆栈读取0x343至0x34A

    验证、堆栈读取0x306

    验证、单一开发读取600 (基址) 0x2001以验证0x14

    此致!

    Zachary

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

    我只能实现以下代码行:

    1. 0x00从地址0x343到的虚拟写入0x34A
    2. 广播写入0x010x309以启用 AA 序列。
    3. 广播写入0x000x01、、0x020x03等 直到所有器件(包括基座)都具有 ID (北向)。
    4. 广播写入0x020x308以将器件设置为堆栈(基极将忽略此内容)。
    5. 使用写入单个器件(最后一个器件)0x030x308、以将其设置为栈顶。

    但是、当我执行READ操作时、程序会卡在以下循环中:

    void delayus (uint16 us){
    如果(us =0)
    返回;
    否则{
    //更改中断比较值(中断周期)
    //设置比较0值。
    rtiREG1->CMP[0U].COMPx = 10 * us;//每微秒10个时钟周期、因此乘以10
    //设置更新比较0值。
    rtiREG1->CMP[0U].UDCPx = 10 * us;

    //启用我们设置的期间的通知
    rtiEnableNotification (rtiNOTIFICATION_COMPARE0);

    //启动计数器
    rtiStartCounter (rtiCOUNTER_BLOCK0);

    //在循环中等待、直到中断发生(在我们设置的周期之后发生)
    //发生中断时、RTI_NOTIFICATION 会在该中断中设置为1
    //转至 notification.c -> rtiNotification ()以查看 RTI_TIMEOUT 设置为1的位置
    while (RTI_TIMEOUT =0);

    //将变量重置为0、以便下次我们进行延迟
    RTI_TIMEOUT = 0;

    //禁用中断通知
    rtiDisableNotification (rtiNOTIFICATION_COMPARE0);

    //停止计数器
    rtiStopCounter (rtiCOUNTER_BLOCK0);

    //在下次我们做延迟时重置计数器
    rtiResetCounter (rtiCOUNTER_BLOCK0);
    }
    }



    程序专门卡在while (RTI_TIMEOUT == 0);循环中。

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

    我还注意到我的 TMS570LS1224偶尔会卡在函数中。 它会在循环中特别停止。 delayuswhile (RTI_TIMEOUT == 0);

    这个问题似乎只是间歇性出现、我不确定它是否与 RTI (实时中断)的配置或中断通知的处理方式有关。

    这可能是由以下原因造成的:

    1. 是否出现中断未正确触发的问题?
    2. RTI 比较或计数器设置的配置有误?
    3. 中断处理逻辑中是否存在竞争条件?

    如果您对如何调试或解决此问题有任何见解、请告诉我。

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

    如果可能、我迫切需要当地 FAE 的现场支持来解决这个问题。 我们已经购买了几块开发板、但由于贵公司的产品存在问题、SPI 通信目前尚未正常运行。

    如能尽快帮助我们解决这一问题、我们将不胜感激。

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

     此外、我还发现由于 SPI RDY (SPIRDY)被占用而出现通信问题。

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

    您好!

    我理解其紧迫性、但您的自动寻址过程似乎是正确的。 您是否也可以向我发送唤醒器件的过程以进行验证? 此外、如果您能够从逻辑分析仪发送日志文件、这对于调试非常有用。

    逻辑2编程:

    File --> Save Capture

    如果您想获得 FAE 支持、请联系您当地的 TI 办事处。

    此致!

    Zachary