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:CC1101

Guru**** 2587365 points
Other Parts Discussed in Thread: CC1101, CC-DEBUGGER, BOOST-CCEMADAPTER, CC1100

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/696120/cc1101-cc1101

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

你(们)好

我正在使用具有 STM32l063 的 CC1101 + Nucleo 在两个 CC1101和两个 Nucleo 板之间建立回波。

工作:

1.一般工作人员、UART、调试器等

SPI 读取-正常工作、我可以从 STM32L 读取 CC1101寄存器

SPI 写入在单次和突发模式下均有效。

我使用了该代码 https://github.com/veonik/arduino-cc1101/blob/master/src/cc1101.cpp 

作为基准。

发送接收不起作用。

如何进行调试?

我可以看到发送正常。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您写"发送接收不起作用"、但同时写"我可以看到发送正常"。 这样、您是否意味着回波不起作用、而发送却起作用? 如果是这种情况、您如何知道 TX 的工作方式?

    我尚未通读代码以查看您使用的设置。 是否确定设置有效?

    在这种情况下、当您在 TX 和 RX 端都有自己的软件时、我将首先使用 SmartRF Studio 来控制 RX 或 TX 端(您需要 CCDebugger)、从而确保其中一端具有已知的软件。

    此外、在调试代码时、您是否验证了对讲机处于 RX 状态而不是错误状态?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我获得的状态是8、即校准
    下次还可以。
    一个控制器仅像这样发送
    写入1个字节长度
    将数据写入 TX FIFO
    进入 TX 模式。

    另一个处于接收模式且 txbytes 始终为0。
    因此它无法正常工作。
    我不知道发送和接收顺序是否正确。
    也是如此
    地址为0且选择无地址检查
    也是如此。 固定长度为2。
    有些人注意到 CC1101对静电非常敏感。
    它是否可以烧写、但对寄存器进行读取和写入?

    此外、使用 SmartRF 的设置是什么? 您可以发送哪个硬件链接?
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关 CCDebugger、请参阅 www.ti.com/.../CC-DEBUGGER。 这样、您就可以连接到 CC1101板上的 SPI 接口。 如果您有 CC1101 EM 、则可以使用 store.ti.com/SOC-BB-Battery-Board-for-System-on-Chips-P1136.aspx 或 store.ti.com/boost-ccemadapter.aspx 来简化连接。

    在您的情况下、似乎应该从两端的 SmartRF Studio 开始、并使用"RF Device Commands"选项卡了解芯片。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    我们订购了 MSP430板、但需要购买 CC1101。 -应尽快抵达

    这是 sendData 函数的平均值:

    如果(txpacket.length >0)



    CC1101_writeReg (CC1101_TXFIFO、txpacket.length);

    CC1101_writeBurstReg (CC1101_TXFIFO、txpacket.data、txpacket.length);

    CC1101_setTxState();


    //检查是否进入 TX 状态(状态= RxTx趋 稳)
    marcState = CC1101_readStatusReg (CC1101_MARCSTATE)& 0x1F;
    if ((marcState!= 0x13)&&(marcState!= 0x14)&&(marcState!= 0x15))


    CC1100_setIdleState ();//输入空闲状态
    FlushTxFifo();//刷新 Tx FIFO
    CC1101_setRxState ();//返回 RX 状态

    //声明为处于 Rx 状态
    rfState = RFSTATE_RX;
    返回 RADIO_NOT _TX_STATE;

    if ((CC1101_readStatusReg (CC1101_TXBYTES)& 0x7F)= 0)
    RES = true;

    //CC1100_setIdleState ();//进入空闲状态
    FlushTxFifo();//刷新 Tx FIFO

    //返回 RX 状态
    //CC1101_setRxState();

    //声明为处于 Rx 状态
    //rfState = RFSTATE_RX;

    返回 res == true ? radio_OK:radio_no_sent;

    我没有检查 GDO、HIGH 和 LOW

    //WAIT_GDO0_HIGH ();

    //等待数据包传输结束
    //WAIT_GDO0_LOW ();

    我得到 的是 marcState 8和 marcstate 19 一次8和一次19。  

    谢谢、

    Eli  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否收到了电路板并取得了一些进展?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    是的,我使它正常工作  

    我从 MSP430开始进行 CC10L 评估,当它工作时,我切换到 STM32,然后转到 CC101 + STM,现在我的回波 STM+CC1101正在工作, 但是:

    我现在有一个关于我正在处理的 RX 的问题

    我不使用连接到 GDO0的中断、只需检查该位。

    IO CFG 0为6

    我 注意到、我需要在进入 RX 状态之后以及在读取 Rx 字节之前等待150ms、以使回波代码正常工作。

    我对 GDO0、GDO2 RX 和 TX IO CFG0= 6或 IOCFG0= 7有一些误解

    GDO 高电平表示数据包 TX RX 开始?

    GDO0低电平表示电池组结束 RX TX?

    我认为解决方案就是围绕这一点

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    6 (0x06)
    当发送/接收到 SYNC 字时置为有效、并在数据包末尾取消置为有效。 在 RX 中、该引脚也将失效
    当由于地址或最大长度过滤而丢弃数据包或对讲机进入时
    RXFIFO_OVERflow 状态。 在 TX 中、如果 TX FIFO 下溢、引脚将失效。
    7 (0x07)在接收到 CRC 正常的数据包时有效。 当从 RX FIFO 中读取第一个字节时、该位被置为无效
    --
    断言意味着'0'->'1'转换
    --
    我建议您使用基于中断的方法、尤其是在使用这些信号时。 请参阅 CC1101软件示例、了解如何执行此操作。 如果出于某种原因想要进行轮询、我将轮询 FIFO 中的字节数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢

    完美!

    我会尝试它、当它运行时、我甚至会发布代码

    谢谢!

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

    你(们)好

    我有疑问

    我只想等待 RX 中断!

    表示,不是用于 TX 同步或 TX 数据 ,而是仅用于监听 RX

    因为如果 GDO 管脚同时触发 TX 和 RX (置为有效或取消置为无效,无关紧要)如何知道我是否得到了 RX?

    那么、如何将代码配置为仅等待 RX? TX 我不 在乎。

    另外,我是否应该使用 GDO2?

    谢谢!!

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

    不确定我是否理解。 MCU 将根据向 CC1101发送的命令来判断您是处于 RX 还是 TX 状态。 您始终可以读取 MARCSTATE 来查看 CC1101所处的状态。  

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

    考虑 低功耗模式

    睡眠时的睡眠状态

    并且仅在 Rx 到达时唤醒

    因为它可以从不同的位置发送。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、但 MCU 仍应知道中断来自 RX 事件。