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:GDO0 (设置为0x07)变为true,但状态寄存器0xFB在RX FIFO中报告0字节

Guru**** 2782445 points

Other Parts Discussed in Thread: CC1101, MSP430F2132

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/634889/cc1101-gdo0-set-to-0x07-goes-true-yet-status-register-0xfb-reports-0-bytes-in-rx-fifo

部件号:CC1101
主题中讨论的其他部件: MSP430F2132

我在两个正确传输的不同主板上使用带MSP430F2132的CC1101。

使用一个板进行TX,另一个板进行RX I时会看到以下我不理解的行为。

将GDO0设置为0x07 (断言具有良好CRC的数据包RX,读取RX FIFO时清除),我见证了此针脚变为真,我发出0xFB RX FIFO状态寄存器读取,显示为0字节。 我认为,如果pin正确,则FIFO中应该有一个有效的数据包。

我从以前的经验中注意到,有时GDO0 (设置为0x07)会产生噪音。 因此,在每次RX尝试之前,我从RX FIFO读取几个字节,以确保GDO0已被清除。

我最近在另一篇文章中读到,当RX FIFO为空时读取会导致问题,我想知道这是否是我的问题的根源?

这会导致另一个问题-如何在每次RX尝试之前安全清除GDO0 (设置为0x07)?

;----- 启动CC1101配置表----------------------------------
; CC1101配置表-所有cfg寄存器的数据-执行CC1101重置和Sidle命令后
;   2017年10月13日-已使用TI SmartRFStudio7,设置专家模式,数据速率=250K,针对电流进行了优化
;   将数据速率更改为200,将信道间距更改为250kHz
;   确保Ctrl-Reg 0x0B=FSCTRL1 = 0x12
;   基本频率=900MHz/:/ XTAL频率=26MHz/:/ GFSK:无白化
;   通道=各种/:/数据速率=200 kBaud /:/偏差=127KHz
;   信道间隔= 250kHz /:/ RX滤波器BW = 542KHz /:/ TX功率=各种
;   曼彻斯特启用/:/无PA斜升/优化用于低电流使用(非RX灵敏度)
;   从250 bps更改为200 bps,仍然是GFSK和曼彻斯特
;   最接近915MHz的信道(60)的载波频率=914.99.5972万MHz
;   通道8 = 902MHz (901.99.9146万MHz)
;   第一个可用信道=10, 902.5MHz (902.49.9023万)
;   最后可用信道= 110927.5MHz (927.49.292万)
;   通道112 = 928MHz (927.99.2798万)
;   生成100个可用信道
;   Channels Go 60= 915.0 / 61= 915.25 / 62= 915.5 / 63= 915.75 / 64= 916.0
RF_CFG_TABLE
;         .byte   0x2E         ;0x00=IOCFG2=tri-state
         字节   0x29         ;CHIP_RDYn = SmartRF Studio
;         .byte   0x06         ;当sync-word已是TX或RX时断言
         .byte   0x2E         ;0x01=IOCFG1=tri-state
;         .byte   0x2E         ;0x02=IOCFG0=tri-state
         字节   0x07         ;断言数据包RX具有良好的CRC,读取RX FIFO时清除
;         .byte   0x77         ;0x03=FIFO -关闭RX 18dB关闭
;         .byte   0x67         ;0x03=FIFO -关闭RX 12 dB关闭
;         .byte   0x57         ;0x03=FIFO -关闭RX 6 dB关闭
         字节   0x47         ;0x03=FIFO - 0dB关闭
;         .byte   0xD3         ;0x04=SYNC1,缺省值
         字节   0x7A         ;0x04=SYNC1 -购物车系统
;         .byte   0x91         ;0x05=SYNC0,缺省值
         字节   0x0E         ;0x05=SYNC0 -购物车系统
;         .byte   0x05         ;0x06=PKTLEN=控制器标准pkt大小
         字节   0x3C         ;0x06=PKTLEN=最大pkt长度= 0x3C = 60字节
;         .byte   0x0C         ;0x07=PKTCTRL1 (WIS 48)。 CRC-autosflush和追加RSSI和LQI
         字节   0x00         ;0x07=PKTCTRL1实验
;         .byte   0x08         ;0x07=PKTCTRL1,crc-autosplush,no appending
;         .byte   0x04         ;0x08=PKTCTRL0=CRC enabled & fixed pkt length-use PKTLEN
         .byte   0x05         ;0x08=PKTCTRL0=CRC enabled & variable pkt length configured by 1st byte.
         字节   0x00         ;0x09=ADDR

;         .byte   0x0A         ;0x0A=CHANNR=10=902.5MHz
         字节   0x33         ;0x33=CHANNR=51=912.75MHz
;         .byte   0x3C         ;0x0A=CHANNR=60=915.0MHz
;         .byte   0x6E         ;0x0A=CHANNR=110=927.5MHz

         字节   0x12         ;0x0B=FSCTRL12017年4月及之前
         .byte   0x00         ;0x0C=FSCTRL0 = SmartRF Studio
         单字节   0x22         ;0x0D=FREQ2 =原始= SmartRF Studio
         单字节   0x9D         ;0x0E=FREQ1 =原始= SmartRF Studio
         字节   0x89         ;0x0F=FREQ0 =原始= SmartRF Studio
;         .byte   0xEF         ;0x0F=FREQ0 = t周更高的Wh-Ctrl #3003以匹配所有其他项
         字节   0x2C         ;0x10=MDMCFG4
         字节   0xf8         ;0x11=MDMCFG3=250kbps,GFSK
         字节   0x9B         ;0x12=MDMCFG2,位7=0表示最佳灵敏度,1表示低电流
         单字节   0x23         ;0x13=MDMCFG1 =无FEC,4个前导码字节,2个表示指数
;         .byte   0x72         ;0x13=MDMCFG1 = NO FEC,24个前导码字节,2个表示指数
         .byte   0x3B         ;0x14=MDMCFG0 = SmartRF Studio
         字节   0x62         ;0x15=DEVIATN
         字节   0x07         ;0x16=MCSM2 = SmartRF Studio
         .byte   0x30         ;0x17=MCSM1,返回RX和TX的空闲状态
;         .byte   0x3C         ;0x17=MCSM1,返回RX以获得RX,空闲以获得TX
         字节   0x18         ;0x18=MCSM0
         字节   0x1D         ;0x19=FOCCFG =原始
         字节   0x1C         ;0x1A=BSCFG
         .byte   0xC7         ;0x1B=AGCTRL2 -默认值
;         .byte   0xff         ;0x1B=AGCTRL2 -仅RX强信号
         .byte   0x00         ;0x1C=AGCTRL1 -缺省值
;         .byte   0x47         ;0x1C=AGCTRL1 -仅RX强信号
         字节   0xB0         ;0x1D=AGCTRL0
         字节   0x87         ;0x1E=WOREVT1
         字节   0x6B         ;0x1F=WOREVT0
         .byte   0xFB         ;0x20=WORCTRL
         字节   0xB6         ;0x21=FREND1
         字节   0x10         ;0x22=FREND0 = SmartRF Studio
         .byte   0xEA         ;0x23=FSCAL3 = SmartRF Studio
         .byte   0x2A         ;0x24=FSCAL2 = SmartRF Studio
         字节   0x00         ;0x25=FSCAL1 = SmartRF Studio
         字节   0x1F         ;0x26=FSCAL0 = SmartRF Studio
         字节   0x41         ;0x27=RCCTRL1 = SmartRF Studio
         .byte   0x00         ;0x28=RCCTRL0 = SmartRF Studio
;RF_CFG_TABLE +41 (0x29)-寄存器@地址0x29,0x2A,0x2B,0x2C,0x2D,0x2E未保留在睡眠中
         字节   0x59         ;0x29=FSTEST = SmartRF Studio
         .byte   0x7F         ;0x2A=ptest = SmartRF Studio
         字节   0x3F         ;0x2B=AGCTST = SmartRF Studio
         字节   0x88         ;0x2C=TEST2 = SmartRF Studio
         字节   0x31         ;0x2D=TEST1 = SmartRF Studio
         字节   0x09         ;0x2E=TEST0 = SmartRF Studio
         ;                   ;47 控制寄存器
;***********************************************************************

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果FIFO为空,切勿读取RX FIFO。 这可能会导致各种问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    重写代码,不读取RX FIFO,除非对讲机说明其中有要读取的字节数。

    但我仍然遇到同样的问题:GDO0 = 0x07,变为现实,但当我读RXBYTES寄存器时,它显示为0。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当GDO0发生变化并且您读取RXBYTES寄存器时,您是否有显示GDO0和SPI线的图解。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这显示GDO0=0x01工作正常。 第一个CS在MOSI上发送0xFB,Miso响应0x07,然后读取RXFIFO。

    当我使用GDO0=0x07时,图解看起来几乎一样,除了miso是零,但我还是读取了RXFIFO,仍然找到了有效的数据。

    我会说,最初我读的是一个空的RXFIFO。 你(和其他帖子)说永远不会这样做,所以我停止了。 但我仍然有同样的问题。

    然后,我发现我在RX状态下也在刷新RXFIFO,而不是空闲状态。 所以我也不再这么做了。

    现在GDO0=0x01和GDO0=0x07工作正常。 感谢你的帮助。

    但是,如果有方法手动清除GDO0,通过某些命令strobe或将GDO0设置更改为其他设置并将其写回所需的功能,则仍会很有帮助。