微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1101的硬件BUG?

CC1101的硬件BUG?

时间:12-23 整理:3721RD 点击:

simpliciti上面的源码

    /*
    *  Read the RXBYTES register from the radio.
    *  Bit description of RXBYTES register:
    *    bit 7     - RXFIFO_OVERFLOW, set if receive overflow occurred
    *    bits 6:0  - NUM_BYTES, number of bytes in receive FIFO
    *
    *  Due a chip bug, the RXBYTES register must read the same value twice
    *  in a row to guarantee an accurate value.
    */
    {
        uint8_t rxBytesVerify;
        
        rxBytesVerify = mrfiSpiReadReg( RXBYTES );

        do
        {
            rxBytes = rxBytesVerify;
            rxBytesVerify = mrfiSpiReadReg( RXBYTES );
        }
        while (rxBytes != rxBytesVerify);
    }

事实上我以前读RxByte读取一次,还是稳定的!不知道为什么这段代码要读两次?

还有个问题,按照常理,接收触发一次都应该清洗一次RXFIFO,(SFRX)。但协议栈接收中断居然没有?

这个在SiliconErrata里有描述, 有work round就可以避免。

http://www.ti.com/lit/er/swrz020e/swrz020e.pdf

simpliciTI进入中断的条件是0x06,如下,即要么这包收完了,要么包因条件不满足丢了,要么就是进入到了OVERFLOW

Asserts when sync word has been sent / received, and de-asserts at the end of the packet. In RX, the pin will also deassert
when a packet is discarded due to address or maximum length filtering or when the radio enters
RXFIFO_OVERFLOW state. In TX the pin will de-assert if the TX FIFO underflows.

而出现了这些条件,在simpliciTI中都有处理。这个程序很稳固,没有问题。该调用SFRX的地方也调用了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top