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:器件 ID 读出为0x1F、与规范不同。

Guru**** 2767785 points

Other Parts Discussed in Thread: CC1101, CC430F5137

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/625860/cc1101-device-id-read-out-as-0x1f-different-from-the-specification

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

尽管双芯片不再受欢迎、但我尝试将 CC1101连接到 mbed Micro。 我在 这里共享了我的项目。嗯。 其主要目的是尝试为具有 Linux Box 的物联网网关构建通用框架、同时利用 USB 作为标准接口、实现各种物联网连接、具有即插即用功能、针对 TD/FD/SD/调 制除自动运行、平滑缩放功能、并且选择 CC1101、因为它实际上是低于1GHz 的连接。 尽管 TI 提供了许多组合解决方案、但我更喜欢将复杂性转移到在主机中运行的软件、而不是在固件中运行。

根据规范、0x30以下的寄存器可以一对一读/写、位于0x30以上高地址的寄存器应在突发模式中只读。 命令选通可被视为器件的单字节指令。

当前的问题是 PARTNUM、版本读取结果为0x00和0x1F、之后是0x1F。 但 PARTNUM/版本与数据表不相同。 我不知道它是否正确? 我有其他工具、如 CC430F5137、但它不会将 SPI 总线透露给外部世界。

我将使用另一个 Arduino 板来测试 CC1101、因为 Arduino 驱动程序已经过全面测试。 但任何方向都很有用。

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

    你(们)好

    在单模式和突发模式下、可以读取和写入0x30以下的寄存器、但对于状态寄存器地址0x30或更高版本、必须设置突发位。 对于这些寄存器、bustb 位表示您正在访问状态寄存器、而不是正在进行突发访问、因此您必须发送要读取的两个寄存器的地址。

    这意味着、如果您希望在两次读取之间读取 PARTNUM 和版本而不将 CSn 拉为高电平、则应在 MOSI 上发送以下命令:

    0xF0、0x00、0xF1、0x00 (读取状态寄存器0x30和状态寄存器0x31。 0x00是从 MCU 计时的虚拟字节、用于为从 CC1101返回的寄存器值生成时钟)

    然后、芯片将在 MISO 上返回以下内容:

    0x00、0x00、0x00、0x04

    字节1和3是在 SPI 上发送地址时经过修剪的状态字节。 状态表示芯片处于空闲状态并且 RX FIFO 中没有字节。 字节2和4是 PARTNUM 和版本。 在 CC1101上、PARTNUM 将为0x00、版本将返回0x04 (最新)。

    BR SIRI