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.

[参考译文] IWR1443:外部主机上未运行任何操作系统的 DFP 示例代码

Guru**** 2614265 points
Other Parts Discussed in Thread: IWR1443, UNIFLASH, AWR1243, AWR1443

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/663931/iwr1443-dfp-example-code-on-external-host-not-running-any-os

器件型号:IWR1443
主题中讨论的其他器件: IWR1243UNIFLASHAWR1243AWR1443

您好!

我尝试移植 DFP 示例代码 在 DFP 版本01_00_00_01中、添加到 STM32微控制器、但遗憾的是、我的实施存在一些问题、因此代码无法按预期工作。

我正在使用 IWR1443、 我已将"xwr12xx_masterss.bin"和"xwr12xx_xwr14xx_radarss.bin"加载到该 IWR1443、因此需要对 IWR1243进行仿真。 这些容器也可在 DFP 库中找到。

SPI 通信和 SPI_HOST_IRQ 似乎正常工作、因为 在 CNYS 写入之后、STM32 MCU 正在接收 IWR1443芯片的异步事件、而来自 IWR1443芯片的初始消息将随正确的校验和发送。

对"MMWL_powerOnMaster"的调用 返回 OK

MMWL_setDeviceCrcType 也返回 OK

但调用 MMWL_rfEnable 会返回超时错误。

我已经分析了 STM32 MCU 为 RF (在 MMWL_rfEnable 中)加电写入和读取的消息、看起来不错、请参阅下面的内容。

但有一点奇怪的是、在示例代码中、似乎我们正在等待一条异步消息、它说 RL_DEV_AE_RFPOWERUPDONE_SB (请参阅 MMWL_asyncEventHandler)、但在 AWR_DEV_RFPOWERUP_MSG 命令之后从 IWR1443读取的消息(请参阅下文)没有异步消息类、 但响应消息类(下面为黄色)、即"rlDriverEventHandler"不会在函数"rlDriverMsgCmdlReply"中调用、因此在 MMWL_asyncEventHandler 中、mmwl_BStartComp 永远不会设置为1。

这是错误还是我做了错误的事情?

在我的 STM32实施中,我没有使用任何操作系统,因此,实施某些 rlos***功能并不明显。 例如 、我在 函数"rlosiSpawn"中立即调用 pentry(pValue)、这是可以的吗?

我非常感谢为外部主机使用 DFP 的示例实施、而该主机未使用任何操作系统。

BR

HAKAN

--写入22个字节--
0x0034 /* SYNC =>主器件到从器件指示一个新命令*/
0x0012  
0x0021  
0x0043  
0x0005 /*操作码*/
0x0080 0x8005 =>方向= 0101 (主机到主机)、MSGTYPE = 00 (命令)、MSGID = 0x200 (AWR_DEV_RFPOWERUP_MSG)
0x0012 /* MSGLEN */
0x0000 len = 18
0x0000 /*标志*/
0x0010 0x1000 =>重试= 00 (新消息)、ACKREQ = 00 (ACK)、PROT_VER = 0、CRC = 00 (附加 CRC)、CRCLEN = 00 (16位)、seqnum = 1
0x0000 /* REMCHUNKS */
0x0000 0
0x0001 /* NSBC */
0x0000 1  
0x00E7/* 校验和*/
0x006F CRC = 0x6FE7 (μ Stämmer!)
0x0000 /* SBLKID */
0x0040 0x4000 = AWR_DEV_RFPOWERUP_SB
0x0004 /* SBLKLEN */
0x0000 0x4 = 4字节
0x0000  
0x00DA  

--写入16个字节--
0x0078 //*写入 CNYS =>外部主机已准备好接收消息*/
0x0056  
0x0065  
0x0087  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  

--读取4个字节--
0x00FF  
0x00FF  
0x00BA /*同步开始*/
0x00DC  

--读取4个字节--
0x00CD  
0x00AB /*同步结束*/
0x0016 /*操作码*/
0x0080 0x8016 =>方向= 0110 (主机到主机)、MSGTYPE = 01 (响应)、MSGID = 0x200 (AWR_DEV_RFPOWERUP_MSG)

 --读取10个字节 --
0x000E /* MSGLEN */
0x0000 0xE = 14字节
0x000C /*标志*/
0x0010 0x100C =>重试= 00 (新消息)、ACKREQ = 11 (NO_ACK)、PROT_VER = 0、CRC = 00 (附加 CRC)、CRCLEN = 00 (16位)、seqnum = 1
0x0000 /* REMCHUNKS */
0x0000  
0x0000 /* NSBC */
0x0000  
0x00CF /* CHKSUM */
0x006F CRC = 0x6FCF (Stämmer!)

--读取2个字节--
0x0026 /* CRC *
0x00B5 0x26B5

---写入16个字节---
0x0078 //*写入 CNYS =>外部主机已准备好接收消息*/
0x0056  
0x0065  
0x0087  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  
0x00FF  

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

    您的请求已转发给 DFP 专家。 我们将在返回一些响应时通知您。

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

    尊敬的 Michelle:

    如果您在主机上未使用 OS、则需要调用 非 OS-Task 函数、其中此函数调用可能已从 mmWaveLink 添加的衍生 API、同时从 AWR12xx 获取异步事件。

    在操作系统环境中、操作系统本身负责此上下文切换、因此您无需调用上述函数。

    这是非操作系统生成和 MainLoopTask 的伪代码-

    int MMWL_rfEnable (unsigned char deviceMap)

    int RetVal = RL_RET_CODE_OK、timeOutCnt = 0;
    RetVal = rlDeviceRfStart (deviceMap);
    while (mmwl_BStartComp = 0U)

    rlNonOsMainLoopTask();
    rlAppSleep (1);/*睡眠1毫秒*/
    timeOutCnt++;
    if (timeOutCnt > MMWL_API_RF_INIT_TIMEOUT)

    RetVal = RL_RET_CODE_RESP_TIMEOUT;
    中断;

    /*用于参考的非操作系统锯动函数*/

    rlInt32_t rlNonOsSpawn (rL_P_OSI_spawn_entry pentrry、const void* pValue、rlUInt32_t flags)
    {  

    /*在 某些全局变量中存储 penry (要生成的函数指针)和 pValue (生成的函数的参数)。 *

    /* NonOsMainLoopTask 供您参考*/

    rlNonOsRetVal_t rlNonOsMainLoopTask (空)

    /*获取存储在 rlNonOsSpawn 中的 sawn 函数指针的全局变量*/

    /*如果它不是 NULL、则使用参数参数参数调用该函数*/

    主机需要在需要来自设备的任何异步事件消息时调用'rlNonOsMainLoopTask'。

    此致、

    Jitendra

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

    Jitendra、

    我理解、但问题是:您应该何时从芯片中接收到异步消息?

    另一种解决方案是使用计时器 ISR 来处理生成的函数,但我不清楚是否应在生成的函数设置为 NULL 之前调用生成的函数一次或重复。 当 不应再调用该函数时,驱动程序是否会通过将函数指针设置为 NULL 来“unspawn”生成的函数?

    BR HAKAN

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

    尊敬的 HAKAN:

    锯动函数基本上是上下文切换。 这是从中断上下文中调用的、预计会在不同上下文中执行。

    由于在 No OS 环境中、您没有多个任务、因此您需要从主任务/计时器 ISR 中执行 spwan 函数、如您所述。

    rlDevicePowerOn、rlDeviceRfStart 和 rlRfInit API 具有关联的异步事件、建议等待此类异步事件、然后继续使用示例代码中演示的下一个 API。

    除此之外、您还可以在主任务中定期检查任何异步事件。 这些基本上就是一些有关器件状态的报告。

    此致、

    Kaushal

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

    感谢您的回答。

    这种情况越来越清楚,但我仍有一些问题。

    -应该反复调用 sawn 函数,还是只在“不同的上下文”中调用一次?

    -如果重复:如何确定何时应停止调用函数? 我正在考虑计时器 ISR 中的实现。 是否应调用产生的函数、直到函数指针为 NULL?

    -您写了“在主任务中,您可以定期检查任何异步事件”,但问题是:我该怎么做? 通过调用生成的函数、或者是否可以使用任何其他毫米波函数?

    -生成的函数与异步事件有何关系? Async 事件是否会触发该函数? 生成的函数是否会调用 rlDriver当 EventHandler?

    哪些文档描述了所有这些详细信息、因此我可以为在外部主机中运行的 Nonos 软件编写驱动程序?

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

    尊敬的 HAKAN:

    请查找我的答案直列式[Kaushal]

    -应该反复调用 sawn 函数,还是只在“不同的上下文”中调用一次?

    [Kaushal]:只需一次。

    -您写了“在主任务中,您可以定期检查任何异步事件”,但问题是:我该怎么做? 通过调用生成的函数、或者是否可以使用任何其他毫米波函数?

    [Kaushal]:在 main 函数中、您应该只检查是否调用了 sprawn Callback、如果是、则执行 entry 函数。 输入函数负责接收异步事件。

    -生成的函数与异步事件有何关系? Async 事件是否会触发该函数? 生成的函数是否会调用 rlDriver当 EventHandler?

    [Kaushal]:如上所述、应用程序主任务/计时器 ISR 在 sawn 回调中调用入口函数。 entry 函数接收异步事件并调用 rlDriverEventHandler。

    哪些文档描述了所有这些详细信息、因此我可以为在外部主机中运行的 Nonos 软件编写驱动程序?

    [Kaushal]:API 文档中的移植指南讨论了操作系统抽象、但没有可用于非操作系统的示例代码

    API 文档:C:\TI\ \ti\continion\mmwavelink\docs\doxygen\html\index.html

    此致、

    Kaushal

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

    谢谢高斯

    我已根据您的建议更改了实施方案、但仍然无法从器件中获取异步事件<0x5001–AWR_AE_DEV_RFPOWERUPDONE_SB>。  由于我从未收到 此事件、因此在函数"MMWL_rfEnable"中、MwM_example 代码会超时等待 mmwl_bStartComp = 1。

    我得到的唯一事件是<0x5000–AWR_AE_DEV_MSSPOWERUPDONE_SB>、该事件在超时前得到几次。

    我使用 UniFlash 下载的二进制文件中是否存在一些错误。 请注意、我尚未启用通过 SPI 进行刷写。

    我还注意到 、我在每次启动试验时从芯片上收到一次非常奇怪的事件:

    正常事件
    ===================

    1) 1)接收到 SPI_HOST_INTERRUPT

    2) 2)数据写入 IWR1443
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  

    3) 3)从 IWR1443读取数据
    0xFF  
    0xFF  
    0xBA  
    0xDC  

    4) 4)从 IWR1443读取数据
    0xCD  
    0xAB  =>同步读取
    0x36  
    0xA0  

    5) 5)从 IWR1443读取数据
    0x26  
    0x00  
    0x0C  
    0x00  
    0x00  
    0x00  
    0x01  
    0x00  
    0x96  
    0x5F  

    6) 6)从 IWR1443读取数据
    0x00  
    0x50 => SBLKID = AWR_AE_DEV_MSSPOWERUPDONE_SB    
    0x18  
    0x00  
    0xF2  
    0x37  
    0x02  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x80  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  

    7) 7)从 IWR1443读取数据
    0xf8  
    0x57  


    奇怪的事件
    ===================


    1) 1)接收到 SPI_HOST_INTERRUPT

    2) 2)数据 写入 IWR1443
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  

    3) 3)从 IWR1443读取数据
    0xFF  
    0xFF  
    0xA5  
    0x41  

    4) 4)从 IWR1443读取数据
    0x00  
    0x00  
    0xFF  
    0xFF  

    5) 5)从 IWR1443读取数据
    0x00  
    0x00  
    0xFF  
    0xFF  

    6) 6)从 IWR1443读取数据
    0x00  
    0x00  
    0xFF  
    0xFF  

    7) 7)从 IWR1443读取数据
    0x00  
    0x00  
    0xFF  
    0xFF  

    8) 8)从 IWR1443读取数据
    0x00  
    0x00  
    0xFF  
    0xFF  

    9) 9)从 IWR1443读取数据
    0xFF  
    0xFF  
    0xBA  
    0xDC  

    10) 10)从 IWR1443读取数据
    0xCD  
    0xAB           =>同步读取
    0x36             
    0xA0           =>操作码

    11) 11)从 IWR1443读取数据
    0x22  
    0x00          => MSGLEN
    0xFF  
    0xFF          =>???? 应为标志
    0xFF  
    0xFF          =>???? 应为 REMCHUNKS
    0xFF           
    0xFF          =>???? 应为 NSBC
    0xFF           
    0xFF          =>???? 应为校验和

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

    我认为奇怪的事件是由于同一事件多次触发中断。 您能否确认您已将中断仅配置为 GPIO 的上升沿。

    此外、由于奇怪事件而在 SPI 上进行的通信通常是陈旧的数据读取。 您能否在下面确认:

    SPI 字大小= 16位
    CS 保持=错误
    在 DFP 用户指南中查找 SPI 配置/限制

    第3步(正常事件)
    3) 3)从 IWR1443读取数据
    0xFF
    0xFF
    0xBA
    0xDC
    我看到另外2个字节0xFF 0xFF。 您是否实现了 rlDeviceWaitIrqStatus、rlTimerCBs_t.rlDelay 回调。 请确认

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

    Kaushal、

    感谢您的帮助!

    我已经验证了外部 IRQ 设置、它只配置了上升沿、所以这不是问题、但我在 ReadSPIData 例程中发现了一个问题、所以现在通信看起来更好、没有奇怪的消息。 由于 CS 的切换和时序要求对于该芯片来说有一点特殊、因此我无法使用内置 SPI 硬件来控制 CS、因此我必须在 CS 和 SPI_Send/Receive 之间存在延迟的情况下手动执行此控制。 我必须弄清楚如何稍后通过 DMA 传输来实现这一点...

    通过这些更改、MMWL_rfEnable 中的代码不再超时 、这非常好。 此外、软件通过 MMWL_basicConfiguration 测试、没有任何问题。

    但遗憾的是、软件会在函数 MMWL_rfInit 中提供超时。

    下面是我对通信和外部中断的分析。 (仅在 RF_init 出现后进行写入/读取)

    您可以看到、主机从未收到任何 AWR_AE_RF_INITCALIBSTATUS_SB 事件、而是收到几个 AWR_AE_DEV_MSSPOWERUPDONE_SB 事件。

    非常感谢您的任何帮助...

    /*主机写入 IWR1443 */
    0x34  
    0x12  
    0x21  
    0x43 /* SYNC =>主器件到从器件指示一个新命令*/
    0x81 /*操作码*/
    0x01 0x0181 =>方向= 0001 (主机至 BSS)、MSGTYPE = 00 (命令)、MSGID = 0x202 (AWR_RF_INIT_MSG)
    0x12  
    0x00  
    0x00  
    0x90  
    0x00  
    0x00  
    0x01  
    0x00  
    0x6B  
    0x6E  
    0xC0 /* SBLKID */
    0x00 0x00C0–AWR_RF_INIT_SB
    0x04  
    0x00  
    0x7C  
    0xFA  


    <<< >>>

    /*主机写入 IWR1443 */
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  


    /*主机从 IWR1443读取*/
    0xBA  
    0xDC  
    0xCD  
    0xAB  

    /*主机从 IWR1443读取*/
    0x92 /*操作码*/
    0x01 0x0192 =>方向= 0010 (从 BSS 到主机)、MSGTYPE = 01 (响应)、MSGID = 0x06 (AWR_RF_INIT_MSG)
    0x0E /* MSGLEN */
    0x00 14字节
    0x00 /*标志*/
    0x90 0x9000
    0x00  
    0x00  
    0x00  
    0x00  
    0x5F  
    0x6E  

    /*主机从 IWR1443读取*/
    0x34  
    0xF1  


    <<< >>>

    /*主机写入 IWR1443 */
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  

    /*主机从 IWR1443读取*/
    0xBA  
    0xDC  
    0xCD  
    0xAB  

    /*主机从 IWR1443读取*/
    0x36 /*操作码*/
    0xA0 0xA036 =>方向= 0110 (主机到主机)、MSGTYPE = 11 (异步)、MSGID = 0x280 (AWR_DEV_ASYNC_EVENT_MSG)
    0x26  
    0x00  
    0x0C  
    0x00  
    0x00  
    0x00  
    0x01  
    0x00  
    0x96  
    0x5F  

    /*主机从 IWR1443读取*/
    0x00 /* SBLKID */
    0x50 0x5000 (= AWR_AE_DEV_MSSPOWERUPDONE_SB)
    0x18 /* SBLKLEN /*
    0x00  
    0xF2 /* MSS_POWERUP_BIST_STATUS_FLAGS */
    0x37  
    0x02  
    0x00  
    0x00 /* POWERUP_TIME */
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x80  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  

    /*主机从 IWR1443读取*/
    0xf8  
    0x57


    <<< >>>

    /*主机写入 IWR1443 */
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  

    /*主机从 IWR1443读取*/
    0xBA  
    0xDC  
    0xCD  
    0xAB  

    /*主机从 IWR1443读取*/
    0x36  
    0xA0  
    0x26  
    0x00  
    0x0C  
    0x00  
    0x00  
    0x00  
    0x01  
    0x00  
    0x96  
    0x5F  

    /*主机从 IWR1443读取*/
    0x00 /* SBLKID */
    0x50 0x5000 (= AWR_AE_DEV_MSSPOWERUPDONE_SB)
    0x18  
    0x00  
    0xF2 /* MSS_POWERUP_ BIST_STATUS_标志*/
    0x37  
    0x02  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x80  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  

    /*主机从 IWR1443读取*/
    0xf8  
    0x57  


    <<< >>>


    /*主机写入 IWR1443 */
    0x78  
    0x56  
    0x65  
    0x87  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  
    0xFF  

    /*主机从 IWR1443读取*/
    0xBA  
    0xDC  
    0xCD  
    0xAB  

    /*主机从 IWR1443读取*/
    0x36  
    0xA0  
    0x26  
    0x00  
    0x0C  
    0x00  
    0x00  
    0x00  
    0x01  
    0x00  
    0x96  
    0x5F  

    /*主机从 IWR1443读取*/
    0x00 /* SBLKID */
    0x50 0x5000 (= AWR_AE_DEV_MSSPOWERUPDONE_SB)
    0x18  
    0x00  
    0xF2 /* MSS_POWERUP_BIST_STATUS_FLAGS */
    0x37  
    0x02  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x80  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  
    0x00  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Hakan、
    在 RF_init 器件将进行复位且主机收到 MSSPOWERUPDONE_SB 消息后、看起来是这样的。
    如果器件的不同电源轨上的电源不正确、则可能会发生这种情况、因为 Rf_init 命令器件会进行多次校准、从而从电源获取更多的功率。

    您能否确认 AWR 板类型是 EVM 还是定制板? 如果它是带有 xWR1443芯片的定制板、则我们会请求检查电源规格。

    AWR1243数据表(www.ti.com/.../awr1243.pdf)第5.5节提供了电源规格


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

    Jitendra、

    感谢您的侵入。

    我正在使用定制板、但在 IWR1443芯片中运行其他代码时、我没有遇到任何电源问题、该芯片还包括校准。  例如、我  成功地在芯片中运行了修改后的 MMW 演示。

    BR、

    Håkan μ A  

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

    是否有任何方法可以检查 MSS 或 BSS 是否已重新启动? (如果有一些状态寄存器会更好...)

    我尝试使用 rlRfInitCalibConfig-command 禁用所有校准、但看不到任何差异、即我仍然等待超时(mmwl_BRfInitComp!= 0)

    在 RfInit 超时之后、我还尝试使用 rlGetRfBootupStatus-command 读取 RfBootStatus、但函数不会返回、即似乎被吸入此函数、这感觉有点奇怪。 调用 rlRfInit 之前、它返回合理的值。

    MSS 二进制文件是否配置 PMIC (通过 I2C)?

    BR

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

    你好,Haakan,

    带有子块 ID [0x5000] 器  件的异步事件消息仅在器件启动时发送、在您的情况下、主机在 RF-Init 命令后再次接收到该消息。

    是否可以将 JTAG 连接到 AWR1443器件并读取'0xFFFFE1EC'寄存器? 这是显示 RadarSS 上电状态的状态寄存器。

    如果 RadarSS 上电[rlDeviceRfStart]、则该寄存器的值为'0x000F0028'。

    尝试在主机因读取异步事件而超时时后读取该寄存 器 RF-init 命令、寄存器值"0x00000028"将证明器件复位事件。

    MSS 二进制文件不配置 PMIC (通过 i2c)。

    请确认上述寄存器值、然后我们可以通过与 SDK AWR1443应用的比较进一步调试。

    此致、

    Jitendra

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

    Jitendra、

    由于我只有 MSS 和 BSS 二进制文件(可在 MMWAVE_DFP_01_00_00_01\firmware 中找到)、因此我的调试可能性非常有限。

    我使用示波器进行了一些测量、如下所示。

    蓝色曲线是 IWR1443芯片启动期间的电流消耗。

    青色曲线是 QSPI 与外部闪存的通信

    从触发点(T)开始的高电流消耗、我猜来自芯片校准(在 MMWL_rfInit 中完成)。 校准 似乎会持续一段时间、但 很明显、在校准/验证期间芯片会重新启动、因为 QSPI 通信显示软件是从闪存读取的。

    另一个示波器图是第一个示波器图的缩放版本、位于芯片似乎重新启动的位置。 在这里、您可以看到、SW 负载在电流消耗的最后一个尖峰之后大约3ms 开始。

    我还验证了所有电源轨上的电源、看不到任何压降、这可以解释芯片的重启。

    除了电压降之外、还有什么可以解释重新启动的原因?

    看门狗复位?

    致命异常重置?

    我还觉得有点奇怪、当芯片重新启动后、它似乎进入复位循环、每125ms 复位一次。

    BR、

    HAKAN

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

    我的图:

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

    Jitendra、

    我进行了一些更深入的调查、并发现:

     使用"mmWave_DFP_01_00_00_01\firmware"中的二进制文件

    -如果我只启用 PMIC 并释放 IWR1443的复位(即我不 启动 mmwavelink_example)、 IWR1443将在加载软件大约40ms 后自动重新启动。

    -重新启动后、IWR1443将在40ms 之后再次重新启动、依此类推...

    -使用"mmWave_DFP_00_09_01_06\firmware"中的二进制文件、我看不到任何复位。

    我的理论是、您必须从 MSS 请求数据。 如果您不这样做 、IWR1443将在大约40ms 后重新启动。

    -如果我运行"mmwavelink_example"、我在"MMWL_rfInit"中得到超时、正如我之前所写的那样、但如果我在环路中20ms 后添加对"rlDeviceGetMssVersion"的调用、MMWL_rfInit 将返回 RL RET_CODE_OK、 但这种"修复"仅会延迟重启、因为代码被锁定在"MMWL_啁 啾配置"中。

    您对此有什么意见吗?

    您能否验证"mmWave_DFP_01_00_00_01\firmware"文件夹中的二进制文件是否处于良好状态。

    BR

    HAKAN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Haakan,
    要在调用 RF_init() API 时确定哪个校准导致了此复位,您是否可以遵循此序列?

    1.调用 rf_init()之前,调用 rlRfInitCalibConfig (device_map,&rfInitCalib),在这里需要禁用传递给此 API 的参数中的所有校准。
    2.现在调用 RF_init() API。

    尝试通过一次启用一次校准(rlRfInitCalConf_t rfInitCalib)并调用 rlRfInitCalibConfig 来尝试上述实验、检查哪个点器件用于输出电容。

    此外、您还可以为我们提供您要馈送到器件的电源(所有电源轨)详细信息。


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

    Jitendra、

    我已经尝试过这种方法、但它没有任何影响。 即使禁用了所有校准、IWR1443也会重新启动。

    我还下载了其中一个 EVM 中的(MMWAVE_DFP_01_00_00_01)二进制文件、并且 IWR1443在电源开启时进入复位环路。

    我猜您已经在 MSS 软件中启用了看门狗(超时约为40ms)。 似乎只有当您与 IWR1443 (MSS)通信时才会触发看门狗、因此 IWR 会进入该复位环路。

    这有道理吗?

    调试器中寄存器的视图(EVM 已连接)=>启用看门狗、超时大约为36ms……

    另一个视图 (EVM 已连接)=>看门狗已超时...

    BR、

    HAKAN

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

    如果您仍有疑问、请告知我们。

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



    如果您阅读了这些帖子、您将看到有几个问题尚未得到解答、例如我的上一个帖子、因此您的问题的答案是"是"。


    我仍然无法使用 DFP 执行测量。


    BR


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

    你好,Haakan,

    很抱歉耽误你的时间。 我们一直在努力解决这个问题。 这似乎是与 dfpv1.0相关的问题。 是否可以改用 dfpv0.9?

    谢谢

    此致、

    Michelle