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.

[参考译文] CC1101-Q1:SO/GDO1引脚处于高电平、器件可能无法进入断电状态、测得高电流、无法发送

Guru**** 2482105 points
Other Parts Discussed in Thread: CC1101, CC1101-Q1

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1263013/cc1101-q1-so-gdo1-pin-high-device-probably-not-entering-powerdown-high-current-measured-not-able-to-transmit

器件型号:CC1101-Q1
主题中讨论的其他器件:CC1101

您好!

我们遇到的情况是、器件已进入某种模式、在没有完全复位/硬复位的情况下无法恢复。

当发生这种情况时、我们可以观察到以下情况。

器件仍然通过 SPI 进行通信、但不发送或接收新数据包。

当调用 SNOP 时、器件报告其位于 Rx 中、然后写入以下命令。

侧边

SFRX

SPWD

但在最后一个命令之后

 CS 释放后、GDO1/SO 引脚被驱动为逻辑高电平。

器件消耗连续电流> 8mA

我们也不能转到 Tx

我们启用了 Tx-if-CCA、但我认为即使存在 Rx FIFO 溢出、上述命令也会释放该 FIFO。

器件似乎没有进入睡眠状态。 不过、它报告它处于空闲状态、但在尝试转换到 TX 时也会失败(可能一直处于一些未报告的内部"接收"状态)。

此致、

标准

在功能良好的系统中、GDO1/SO 引脚被驱动为低电平且电流非常低。

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

    请提供有关您正在使用的硬件的信息(此问题是 TI EM 还是定制硬件上的问题)

    发生这种情况的频率以及在多少台设备(全部或部分设备)上发生这种情况的频率

    在器件发生故障后尝试与器件通信时、请提供全部4条 SPI 线路的逻辑分析仪图。

    Siri

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

    尊敬的 Siri、感谢您的快速回复。 HW 是我们的自定义 IOT HW、它使用 PIC24系列微控制器、具有用于低于1GHz 通信的 CC1101、如上所述。

    问题是系统性的、所有 CC1101-Q1芯片在投入使用几天后的行为都相同。  

    我们将检查/审计站点是否存在潜在的射频干扰。  

    这些板涂有硬环氧树脂、非常小、很难根据要求获得所有四条迹线。

    不过、我们可以从 MISO 线路的 SPI 线路中看到、器件会响应上述命令。

    当 SNOP 被称为首先以2F 响应时、我们命令它以2F (即电流状态)进行响应、然后我们发送 SFRX IT 响应0F 、接着是 SPWD、响应也是0F。

    表现正常的芯片将进入睡眠 MISO 线路低电平(如上所述 GDO1上的 tri 状态)

    出现故障的中断将不会进入睡眠状态、MISO 线路(GDO1)为高电平。  电流也高于空闲消耗。

    PIC24上的应用代码正在运行(不挂起)引脚分配、所有工作不变。

    任何想法

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

    我不确定我是否遵循您对问题的描述

    在第一个帖子中、您将其写入

    此时会显示"Device reports it is in Rx at SNOP is called、然后我们会写入以下命令。

    侧边

    SFRX

    SPWD"

    在第二个帖子中、您会写入"当 SNOP 被称为首先响应2F 时、我们命令它空闲、它以2F (即电流状态)进行响应、接下来我们发送 SFRX IT 响应0F 、然后是 SPWD、响应也是0F。"

    0x2F 是 TX 而不是 RX、那么下列哪项陈述是正确的?

    SPI 引脚不可用时、很难判断会发生什么情况。 调试时、您是否能够输出任何其他 GDO 信号?

    由于该问题是几天后才发生的、因此我怀疑该问题可能与软件相关。

    由于您使用的是 Tx-IF-CCA、这意味着您在 TX 之前进入 RX 以检查您的信道、并且您的对讲机必须处于 RX 状态才能选通 STX。

    即使您仅在 RX 中检查 RSSI、也可能收到与同步字类似的噪声。

    您是否编写了软件、以便将在收到数据包时可能发生的所有可能的错误考虑在内?

    有关以下错误的示例、请参阅 CC1101勘误表注释:

    "RXFIFO_OVER溢 问题-无线电保持在 RX 状态而不是进入 RXFIFO_OVER溢 状态"

    此外、确保在起诉无线电处于错误状态(上溢或下溢)或器件处于 RX 状态之前、切勿刷新任何 FIFO。

    Br

    Siri

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

    很抱歉、您对此感到困惑:  

    "当在 SPI 接口上发送标头字节、数据字节或命令选通时、CC1101在 SO 引脚上发送芯片状态字节。

    我们仅设法对时钟进行去封装、以便我们能够监听 Micro 和 CC1101之间的 SPI 通信

    我们知道发送的是什么、因此我们只读取时钟和响应:

    已发送:SNOP、  响应:0x1f (即 Rx)

    已发送:sidle、 回复:0x1f  

    已发送:SFRX、  响应:0x0F

    已发送:SPWD、 响应:0x0F

    释放 CS 后、行为良好的器件会进入睡眠状态。

    CS 释放后、设备错误操作看上去不会进入睡眠状态。

    代码不是由 我们编写的、而是通过产品收购继承的:

    我能看到的是正在完成:

    并不重要。

    用于应用处理的微唤醒

    使用 CS 序列唤醒射频芯片

    准备数据包

    向 Tx FIFO 加载数据

    直接转至 Tx

    SET_RF_CS ();
    RF_SEND_CMD (STX);
    CLR_RF_CS ();

    然后进入睡眠模式。

    在 TX 进入 Rx 后每9秒进入一次、然后从 Rx 进入睡眠状态。

    您是否认为、对于 Tx-If-CCA 设置、必须首先处于 Rx 状态?

    在确保没有出现错误备注之前、您能否解释从不刷新 FIFO?

    正如您在上面看到的。 定期刷新 FIFO、以确保如果它确实进入勘误表、则说明唯一可以从 FIFO 中取出的是什么?

    从空闲状态调用清除 FIFO 是多么糟糕?

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

    嗨、Siri、不确定您是否已阅读我在下面的回复、该查询标记为已重新发布、  但我们找不到任何明显的软件问题,除了你的一些意见,我恳请你也许澄清一些更为什么调用刷新 fio 命令 musnt',除非有错误的 fio。 此外、是否存在超出溢出缓冲区阈值的锁存 RSSI 值、如果存在未正确处理的 RX FIFO 溢出、则该值会阻止使用 TX-IF-CCA 设置传输新的 Tx 消息?

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

    由于我无法获得有关您的代码或完整 SPI 图的详细信息、因此我只能简单地回答、很难告诉您问题是什么。

    对于 CCA、是的、无线电需要处于 RX 状态才能使用此功能。

    根据信道是否清除进入 TX、但为了让无线电知道信道是否清除、它需要侦听信道(处于 RX 中)。

    在刷新 FIFO 时、这会改变 FIFO 指针、不应在 RX 或 TX 状态等状态下完成、因为如果发送/接收数据包、这些状态下的指针会更新。 因此、除非处于错误状态(刷新 FIFO 是退出错误状态的方法)、否则切勿刷新 FIFO。 如果您知道您处于空闲状态(我上一篇文章中写入了 RX 而不是 IDLE 时出错)、清空 FIFO 也是安全的

    如果您最后在处于 RX 状态以在进入 TX 之前检查通道时进入溢出状态、则将无法进入 TX。

    溢出状态必须首先被正确处理(通过刷新 FIFO)、然后您必须再次进入 RX。

    Siri

     

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

    感谢 Siri、非常感激、我们部署了一些诊断固件来了解状态。 我会随时向您通报最新情况。 我们发现的一个差异是故障器件中的 GDO1引脚处于高电平。  

    我通过编写一些自定义固件而不复位射频芯片、成功地将自己插入到了微控制器的 SPI 线路中。

    当我只执行一个返回的样本时、射频芯片看起来具有所有的默认值(即其中没有我们的初始化/编程值、有一个例外:)

    GDOx 引脚的设置如下:

    我们的设置 行为错误的单元 默认设置(数据表)
    IOCFG0 2E 0x02 3楼
    IOCFG1 2E 0x00 2E
    IOCFG2寄存器 2E 0x00 29

    有什么想法会导致重置并实现这些 IOCFGx 设置? 并具有其余默认配置。

    如果它是完全电源复位或重新初始化、则数据表设置将不是0x02、0x00和0x00  

    然后我重新编程了 MCU、它会重新初始化射频芯片、使得器件可以重新工作。 即射频电路不会受到永久性损坏。

    有什么建议吗?

    有了该设置、GDO1引脚(SO)将与 RX 溢出相关联 、这将解释为什么在 CS 释放后将其置位为高电平。

    问题是、我们的代码中没有任何地方具有该值作为此引脚的可能配置。

    此致、

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

    我还问 PKTSTATUS 是:0x80还是 0x08 (我在 Excel 工作表中可能没有正确键入)、 Marc _state 为0x01

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

    关于 复位、我知道对于 CC1101 (不是 CC11x1-Q1)、数据表中有一个表格(上电复位要求)、如果这些要求未被超限、您不知道寄存器在上电时的状态 、因此需要手动复位。 我将联系比我更了解 Q1器件的人、以了解为什么 Q! 细节和指导。

    Siri

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

    我现在正在阅读本节、将器件从睡眠模式唤醒时是否需要类似的等待时间:

    "当 CS 被拉至低电平时、MCU 必须等到 CC11x1-Q1、以便引脚变为低电平、然后才能开始传输标头字节。 这表明晶体正在运行。 除非芯片处于睡眠或 XOFF 状态 中,使 CS 置为低电平后,SO 引脚立即变为低电平。 "

    因此、在唤醒过程中、是否有可能在晶体稳定之前、尝试在 SPI 上写入芯片、从而使芯片复位或进入某种未知状态?

    从我们的代码中可以看到、我们除了在启动时调用复位之外、不在任何位置调用复位。

    配置完成并运行应用程序后、将执行 上述命令使 CC1101进入睡眠状态 、然后在1秒后将其唤醒

    作者:

    SET_RF_SCLK ();
    CLR_RF_MOSI ();
    SET_RF_CS ();
    nop();nop();
    CLR_RF_CS ();
    delay_usec (45);
    SET_RF_CS ();
    delay_usec (100);
    INT WAIT_DELAY = 0;
    while (WAIT_DELAY++< 500)
    {
    if (rf_miso =0) break;

    MCU 时钟为8MHz、增量和分支比较等指令为 1周期或2周期指令。 因此、上述 WAIT_DELAY 在250us 到500us 之间  

    老实说、现在看看、我不知道为何上述操作如此复杂。

    唤醒射频芯片的原因不应只是:

    SET_RF_CS ();

    while (rf_mISO)

    {

    NOP();

     

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

    你好,又 Siri。  如果附近强大的发射器发出的接收信号过强、此射频芯片上是否有其它组件会重置芯片?  

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

    您好,Norm

    接收器将处于饱和状态、无法解调任何内容。

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

    谢谢 Christin,只是检查是否有某种内置保护的路径? 几周的内部测试、我们无法重现问题。 现场故障平均时间3天。  上述可启动手动复位的唤醒序列是否会导致我们出现问题?