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.

[参考译文] CC1200:探查模式下的GPIO

Guru**** 2539500 points
Other Parts Discussed in Thread: CC1200

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/602140/cc1200-gpios-in-sniff-mode

部件号:CC1200

我提出了一个使用CC1200的应用程序。

我正在使用无限模式,并且正在使用来自GPIO的2个中断来感应同步字和FIFO阈值。

当我完成应用程序并检查是否有任何错误时,我决定执行最后一步并在嗅探模式下使用接收,因为我到目前为止只是使用接收模式。

据SmartRF工作室说,我只需要更改几个关于WOR的寄存器,一切都能正常工作。  
但事实并非如此。 然后我发现睡眠模式下的GPIOs会硬接线。 现在我的问题是:

GPIO是否始终硬连线在eWOR模式下,或仅在eWOR的睡眠部分,并且在eWOR的RX部分正常工作?


其他信息。  我在 GPIO3上使用RXFIFO_thr,在上升边缘有一个中断。 事实证明这是一个错误,因为如果CC1200处于睡眠状态,GPIO3将硬接线至1。 即使 未收到任何数据包,也会触发此中断。 因此,我将RXFifo_thr从GPIO3更改为GPIO0以避免此错误,但它仍然不起作用。 如果能对我的问题提供任何一般性帮助,我们将不胜感激。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    GPIO仅在睡眠模式下通过硬接线连接,在RX模式下,它们按编程方式工作。

    您也可以尝试反转输出(并重新定义中断应触发的哪一个侧面)。 用户指南中的3.4 对这两种方法都进行了说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。 如果我反转GPIO,则我反转信号,因此我需要更改边缘,这会产生与我已有的相同结果。 试过,结果是一样的,一切都颠倒了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起,我在绘制简单的数字时犯了一个错误。

    我没有查看示波器上的信号,所以如果我犯了新的错误,请纠正我。 如果您在GPIO3上有RXFifo_thr,则信号在睡眠中将为'1',在进入RX时向下转到'0',在断言时向下转到'1'。 我假设问题是当你进入睡眠状态时,因为GPIO3将从'0'到'1'。 问题是是否可以忽略此中断。 不确定这是否可行,因为MCU不知道对讲机何时处于睡眠状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这正是问题所在。

    不幸的是,在我的情况下,这是不可能的。这就是为什么我将RXFIFO_THR切换到GPIO0,但问题是我仍然需要使用RXFIFO_overflow,这与在GPIO2或GPIO3上的RXFIFO_THR有相同的问题。 我认为我可以在RXFIFO第一次中断后激活RXFIFO溢出的中断,这样,如果错误发生在第一个接收字节期间,我可能会错过,但我会找到一些解决方法。

    问题仍然存在,我似乎无法让它正常工作。 我有一个工作配置,我更改了这些寄存器:

    AGC_CS_thr 09 <- EC
    AGC_CFG1 40 <-51.
    AGC_CFG0 83 <-87
    结算_CFG 03 <-08.
    WOR_CFG0 20 <-21.
    WOR_EVENT0_MSB 93 <- 00
    WOR_EVENT0_LSB 5A <- 00
    RFEND_CFG0 09 <- 00

    (新值位于左侧,旧值位于右侧)

    我进入了RF,选择了我正在使用的配置,选择了sniff选项卡,并将前导码长度更改为30,因为我使用该前导码。 然后转至我的代码并将SRX更改为SCAL和SWOR。 由于GPIOs的原因,这不起作用,然后出于上述原因,我更换了GPIO3和GPIO0,但仍然不起作用。 关于在何处查找错误的建议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用GPIO0和GPIO2,则应该可以这样做,因为这两个都是睡眠中的'0'。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,您说得对。 我误读了GPIO0和GPIO1配对nad GPIO2和GPIO3,但它是02和13。 谢谢