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.

[参考译文] AWRL6844EVM:低功耗模式下的 CANFD 通信

Guru**** 2457760 points
Other Parts Discussed in Thread: SYSCONFIG, AWRL6844, AWRL6432

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1458596/awrl6844evm-canfd-communication-in-low-power-mode

器件型号:AWRL6844EVM
Thread 中讨论的其他器件:AWRL6844、SysConfig、 AWRL6432

工具/软件:

尊敬的 TI:

对于如何在低功耗模式下进行 CANFD 通信、我希望获得一些指导。

我使用示例(mmwave_demo)实现了它、但出现了以下问题。

当在低功耗模式下配置 CAN FD 通信时、EVK 在一次操作后停止运行。

即使在没有 CAN Tx 和 Rx 的情况下仅设置通信、也会发生相同的现象。

在正常功率模式下、CAN 通信执行良好。

如果未配置 CANFD、则 EVK 将在低功耗模式下正常工作。

[配置环境]

EVK:AWRL6844 (PROC182修订版 A)

SDK:mmwave_l_sdk_06_00_02_00

演示:"mmwave_demo"

SysConfig:  

EVK 开关: S1.1关闭(禁用 STAN-BY-MODE)

CANFD 通信设置是参考示例"mcan_external_read_write"配置的

CAN 配置在 DPC_init()函数内实现。

此致。

J.Soo

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

    您好、

    感谢您通过 E2E 与我们联系。 请允许我们在一天左右提供答复。

    谢谢、
    昆丹

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

    你好

    已经有一段时间了。 您能否为客户提供快速帮助? 非常感谢您的帮助。

    此致、

    维克多·帕克

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

    您好、Victor、

    我已经将这一线程指派给了我们的一位软件工程师。 他将能够在一天之内作出回应。

    谢谢、
    昆丹

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

    您好:

    感谢您通过 E2E 就此问题联系我们。  首先、 如果您还没有确保使用最稳定的版本、我建议更新到最新的 SDK (06.00.03.00)。 深度睡眠不支持使用外设、因为除常开(AON)电源域之外的所有电源域都支持使用外设。 目前、如果仍要访问 CAN 收发器、则必须进入空闲状态。  

    此致、

    Kristien

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

    是的。 更新 SDK 后、我将再次对其进行测试并告知您。

    在 AWRL6432的 LPM 下、CAN 转换器的工作原理是在每次从深度睡眠模式唤醒时打开和配置它

    如果它必须处于空闲状态、这是否意味着 CAN 通信无法在 LPM 模式下工作?
    即使我在唤醒后再次设置 CAN 通信、也无法使用?

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

    您好:

     由于我误读了您的问题、因此对此造成的任何混淆、我深表歉意。 我假设您想在 LPDS 期间使用 CAN 通信、但如果您想在 LPDS 之后使用 CAN 通信、则需要在退出 LPDS 时启用 CAN 时钟并重新初始化收发器。 这两者都应该在 POWER_LPDSresumehook 函数中完成-假设您 已经定义了、因为电源驱动程序默认情况下引用此函数。  

    对于 CAN 时钟、您可以在 POWER_LPDSresumehook 函数中调用以下序列:

    PRCMPeripheralClkEnable(0, PRCM_GATE_CLK_ENABLE);
    while(PRCMPeripheralStatusGet(0) == 0U);

    如果您尚未开始、我建议 从 LSDK6 MCAN 外部读取写入示例中创建与 App_mcanConfig 类似的函数、用于初始化和配置 CAN 收发器的各种控制寄存器。 然后可以在重新启用 CAN 时钟后调用该命令。

    此致、

    Kristien

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

    您好、

    我将在6.0.3版中升级 SDK 并使用 mmWave_demo 对其进行测试。

    然后、我在您的指南后面添加了代码。

    然而,它仍然工作一次并停止。

    在 LPDSresumehook 函数中重新配置 CAN 通信时、似乎停止。

    如果我删除 CAN 配置代码、则 LPM 模式工作正常。

    是否有方法在 LPM 模式下进行调试?

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

    您好:

    您能否分享 POWER_LPDSresumehook 函数中当前使用的代码? 如果在恢复挂钩期间调用任何自定义函数(例如类似于 App_mcanConfig 的函数)、您能否提供相关代码?  

    我之前应该已经问过、但当 EVM 不再工作时、您是无法重新连接到调试器、还是能够连接但器件 出现了某种故障? 如果在 LPDS 之后无法连接到调试器、这意味着器件仍处于 LPDS 状态、因为 JTAG 连接将在此状态下断开。

    如果能够重新连接但器件出现故障、我建议  在下第710行的 Power_sleep 函数中将一个 while 循环设置为1或 true /source/drivers/power/v0/power_xwrLx4xx.c. 这可用于在恢复 LPDS 恢复序列之前停止该序列、方法是在 CCS 的"Variable View"中将变量值更改为0或 FALSE。 然后、您可以逐行执行恢复、并查看是否存在任何问题。

    此致、

    Kristien

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

    您好:

    感谢您发送编修。

    1.我将通过链接分享代码: 代码 

      CAN_INITIALIZE 函数在 POWER_LPDSresumehook functin 中的 DPC_init 函数之后调用   

    2.在 power_LPDSresumehook functinon 中除了 can_initialize 函数之外没有其他 custum 函数。

    3. EVM 不再工作后,无法重新连接到调试器。 EVM 似乎无法从睡眠模式唤醒。

    我下周在度假、所以我认为我能够在两周后回复您的回复。

    我请求您的理解。

    此致、

    是的

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

    嘿、Soo、

    感谢 您分享您的代码并回答我的问题。 将来、您可以通过 在文本窗口中单击插入->图像/视频/文件、直接将代码添加到帖子中。  

    3. EVM 不再运行后、无法重新连接到调试器。 EVM 似乎无法从睡眠模式唤醒。

    如果调试器不再连接、它可能仍处于睡眠模式。  让我看看你的代码,我会在下周初回来给你。

    此致、

    Kristien

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

    你好 Christian

    如果您能分享您的进展、我们将不胜感激。

    我将等待您的回答。

    此致、

    是的

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

    嘿、Soo、

    我建议您执行以下操作、以便进一步调试:

    1. 在 CCS 中加载程序
    2. 下的 Power_sleep 函数内 /sources/drivers/power/v0/power_xwrLx4xx.c、在第687行设置断点并运行程序
    3. 一旦达到每当器件尝试进入 LPDS 时应出现的断点、请使用 CCS 中的存储器查看器检查以下地址:
      0x5A04041C
      0x5A040014
      0x5A040430
      0x5A040434
      0x5A040438
      0x5A040670
      0x5A040674
      0x5A040678
      0x5A04067C

    请在文本文件中发送所有这些地址的副本、以便我可以对其进行解析并提供额外建议。

    此致、

    Kristien

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

    尊敬的 Christian:

    上传地址的存储器值。

    e2e.ti.com/.../ccs_5F00_memory_5F00_value.txt

    我将等待您的额外建议。

    此致、

    是的

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

    嘿、Soo、

    感谢您发送这些存储器值。 上下文相关、这些寄存器中的大多数用于配置器件进入低功耗深度睡眠时要保留的存储器。 任何未保留的存储器都将在进入 LPDS 时被清除/失效、这可能会导致无法退出 LPDS 等问题。 但是、看起来所有内存都被保留、因此不应导致恢复问题。

    您能再发送两个内存地址吗?

    0x5A040420
    0x5A040424

    此致、

    Kristien

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

    尊敬的 Christian:
    感谢您的详细说明。

    我在执行 RAM 保留代码之前/之后更新这些值。
    我要向您添加您请求的地址的值。

    e2e.ti.com/.../3482.ccs_5F00_memory_5F00_value.txt

    每当 EVM 复位时、寄存器(0x5A040420)的值都会发生变化。
    但是、在执行 RAM 保留代码之前和之后、该值之间没有变化。

    此致、

    是的

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

    尊敬的 Christian:

    我正在等待您的联系。

    如果您能分享我们的进展、这将是一个很大的帮助。

    此致、

    是的

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

    您好 、Kristien Everett、

    您的进一步帮助将不胜感激。 客户已经等了很多天。

    此致、

    维克多·帕克

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

    嘿、Soo、

    很抱歉这里的响应出现了延迟。 根据您共享的寄存器值、睡眠计时器和唤醒源似乎没有任何问题。 睡眠计时器似乎设置了约80ms、唤醒源设置为使用睡眠计时器触发唤醒。 我目前正在与一位 SDK 团队成员深入研究这一点、但我有一些建议和问题需要分享。

    1. 您大约在每帧周期尝试发送或接收多少数据? 您是否测量了每帧发送或接收所有 CAN 数据所需的时间?
    2. 您能否共享您正在使用的配置?
      增加帧周期可能有所帮助。
    3. 何时发送此 CAN 数据-即处理后或发出线性调频脉冲之前?
    4. 在 LPDS 期间、您是否将 CAN 引脚停驻?  
      确保解除停止 SysConfig 电源驱动程序中使用的 CAN 引脚/焊盘

    此致、

    Kristien

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

    您好、Kristien

    1.我还假设 CAN 传输时间太长,睡眠时间不够。 因此、在测试中、我仅执行 CAN 配置(CAN 数据传输除外)。 但是、结果是相同的、芯片不会在 LPDS 模式下唤醒。


    2.我已经附上了。 为了检查 LPDS 下的 CAN 通信、  不执行除距离 FFT 之外的每个信号处理。

     "sensorStop 0 \n\r",
     "channelCfg 153 63 0 \n\r",
     "chirpComnCfg 8 0 0 512 1 21.96 0 \n\r",
     "chirpTimingCfg 6 36 0 100 58 \n\r",
     "frameCfg 3 0 400 16 200 0 \n\r",
     "guiMonitor 1 1 0 0 0 1 \n\r",
     "cfarProcCfg 0 2 8 4 3 0 6.0 0 \n\r",
     "cfarProcCfg 1 2 4 2 2 1 6.0 0 \n\r",
     "cfarFovCfg 0 0.25 9.0 \n\r",
     "cfarFovCfg 1 -20.16 20.16 \n\r",
     "aoaProcCfg 64 64 \n\r",
     "aoaFovCfg -60 60 -60 60 \n\r",
     "factoryCalibCfg 1 0 44 2 0x1ff000 \n\r",
     "runtimeCalibCfg 1 \n\r",
     "antGeometryCfg 3 2 2 2 2 3 3 3 3 0 2 0 2 1 3 1 1 0 0 0 0 1 1 1 1 2 0 2 0 3 1 3 2.54 2.54 \n\r",
     "compRangeBiasAndRxChanPhase 0.0 -1 0 -1 0 -1 0 -1 0 1 0 1 0 1 0 1 0 -1 0 -1 0 -1 0 -1 0 1 0 1 0 1 0 1 0 \n\r",
     "adcDataSource 0 adc_test_data_0001.bin \n\r",
     "lowPowerCfg 0 \n\r",
     "sensorStart 0 0 0 0 \n\r",

    3、CAN 数据传输在 MmwDemo_transmitProcessedOutputTask 函数中实现。 在此函数中、发送 CAN 数据而不是 UART 数据。
    操作步骤如下:  
    辐射->信号处理-> CAN Tx -> LPDS ->唤醒-> CAN 配置->辐射...


    4.我不在 LPDS 之前停 CAN 针。 我在 SysConfig 中设置 CAN 引脚、并在 POWER_LPDSresumehook 函数中执行 Pinmux_init。

    此致、

    是的

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

    嘿、Soo、

    感谢您分享这些信息。 我还在向 SDK 团队成员研究这个问题、但我会在有更多信息时给您更新。

    感谢您的耐心、

    Kristien

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

    您好、Kristien

    我将等待您的解决方案。

    此致、

    是的

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

    嘿、Soo、

    很抱歉耽误您的时间、但我想分享一个更新。 我一直在 使用 Radar Toolbox 中的 AWRL6844 CAN 集成工程 作为基础工程、在低功耗模式下测试 CAN 使用情况。 它最初是在不采用低功耗模式的情况下写入的、因为发送的数据量会干扰电源管理时序。 但是、我将其降低到每帧单个 CAN 消息以进行测试-并将帧周期提高到500毫秒、以防万一-并且能够进入低功耗模式、尽管我未能从它返回您观察到的内容。

    经过一些进一步的 调试和测试、我发现可以通过在退出 LPDS 时重新初始化 CAN 模块来从 LPDS 返回 、方法是在 POWER_LPDSresumehook 中重新调用 App_mcanInit、并在 POWER_LPDSentryhook 中取消对 CAN 信标和中断的初始化、然后再进入 LPDS。 遗憾的是、由于未知原因、它目前只能在进入预取中止处理程序之前返回一次。  

    我怀疑这个问题 与 电源管理框架无关、但 我需要更多时间来进一步调试。 我将于下周发布最新情况。

    此致、

    Kristien  

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

    您好、Kristien。

    我想知道问题是否已解决。

    我将等待您的解决方案。

    此致、

    是的

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

    您好 、Kristien Everett、

    您能提供一些更新吗? 索先生发表这一问题已经有一段时间了。 我想就这个问题寻求您的帮助。 如果需要、让我上报此问题、以便您调整优先级。 请告诉我。 非常感谢您的帮助。

    此致、

    维克多·帕克

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

    大家好、

    请原谅我的延迟、但我有机会进一步调试、并能够解决我之前遇到的问题。 预取错误是由我为 CAN 调试目的进行的一些 DebugP_LOG 调用引起的、这些调用影响了应用程序时序。  

    对于任何外设、有三个通用指南说明如何正确处理低功耗模式的进入和退出以及确保外设正常运行:

    • 外设信标  必去之地 在进入 LPDS 之前解构(SemaphoreP_析 构)、然后在 LPDS 退出时重构(SemaphoreP_constructBinary)
    • 外设任务 必去之地  在进入 LPDS 之前删除(vTaskDelete)、然后 在 LPDS 退出时重新创建(xTaskCreateStatic)
    • ISR 的外设中断 必去之地  在 LPDS 退出时重构(HwiP_construct)
      • 外设中断 5月 在进入 LPDS 之前解构(HwiP_析 构)

    注意:进入操作可以添加到 POWER_LPDSentryhook -或任何等效的用户定义的入口挂钩-并且退出操作可以添加到 POWER_LPDSresumehook -另请参阅 attached power_management.c

    如前所述、我的工作基于 Radar Toolbox 中的 AWRL6844 CAN 集成工程(这只是具有 CAN 和硬编码配置的毫米波演示)、并进行了一些修改。 我在下面包括了新文件和修改后的文件。

    由于我在此工程中未使用 CAN 任务、因此我只解构了(App_mcanDeinit)和重构了(App_mcanInit)信标和中断。 我会注意到、我还将帧周期大幅提升至5000ms、以更大程度地降低导致问题的帧时序可能性、并且当前 每帧仅传输一条 CAN-FD 消息。 可能需要进行进一步测试和修改、以确定达到指定数量的 CAN 传输所需的最小帧时间。

    如果您在整合此处提到的任何更改时遇到任何问题、请告知我、这样是否能解决您的问题。

    谢谢、

    Kristien

    mmwave_demo.c

    power_management.c

    app_mcan.c

    app_mcan.h

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

    您好、Kristien。

    在使用 TI 提供的演示代码验证了低功耗模式下的 CAN 通信后、我们还使用自定义代码验证了在低功耗模式下 CAN 通信是否正常执行。

    非常感谢您的帮助。

    此致

    J. Soo.

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

    嘿、Soo、

    很棒! 我很高兴这对你有帮助。 我 现在将关闭此主题、但如果您遇到其他问题、请随时发布新的 E2E。

    谢谢、

    Kristien