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:CC1200写入寄存器和回读值无效

Guru**** 2535750 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/696135/cc1200-cc1200-write-to-register-and-reading-back-value-not-working

器件型号:CC1200

您好!

我正在尝试验证读取和写入函数是否正常运行、似乎没有正常运行。

我已经阅读过一些与此问题相关的类似论坛帖子、我已经尝试实施这些解决方案。

我特别提到的两个项目是:

1.从 TRXEB 板上移除 CC120xEM 并通过8个通孔连接到控制器时、必须手动将复位线连接到 VDD。  我通过6.8k 欧姆电阻器进行了此连接。

2.当尝试读回分配给地址的值时、在主控模式下、必须发送一个虚拟字节、以允许主控时钟输出该值。  我通过发送"dummy_byte = 0xAA;"来完成此操作

当前的程序流程非常简单:

选通状态(0x3D)

2.将值0x09写入0x01 (CC120X_IOCFG2)

3:选通状态(0x3D)

4、读取地址0x09分配的值(CC120X_IOCFG2)

5.发送虚拟字节以允许主器件时钟输出响应(0xAA)

6.选通状态(0x3D)

我已连接逻辑分析仪的输出、以显示上述过程的准确时序图。

我们期望发送0xAA 时 MISO 返回的值应为之前写入的0x09值、但返回的值为0x00。

写入命令如下所示:

uint8_t status = 0;

while (SPI0SR_SPTEF!= 1);

SPI0DR =(RADIO_WRITE_ACCESS|RADIO_SINGLE_ACCESS|CC120X_IOCFG2);

while (SPI0SR_SPTEF!= 1);

SPI0DR = 0x09;

状态= SPI0DR;

退货状态;

读取命令的步骤如下:

uint8_t status = 0;

while (SPI0SR_SPTEF!= 1);

SPI0DR =(RADIO_READ_ACCESS|RADIO_SINGLE_ACCESS|CC120X_IOCFG2);

状态= SPI0DR;

while (SPI0SR_SPTEF!= 1);

SPI0DR = 0xAA;

while (SPI0SR_SPTEF!= 1);

状态= SPI0DR;

退货状态;

问题:

1、0x0F 和0x00的状态字节值有何区别?

2.如何使 CC1200响应查询的命令?

我很乐意提供任何其他信息、如果 您有任何问题、请告诉我。

谢谢。

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

    您好 Nathan

    您不能在地址和数据之间将 CSn 拉高。 请查看用户指南中的图3:

    http://www.ti.com/lit/swru346

    我还建议您查看此处提供的示例:

    http://www.ti.com/lit/zip/swrc274

    BR

    Siri

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

    您好、Siri、

    感谢您的解释。  我能够更正我的芯片选择并使器件进行通信。

    不过,我有一个跟进问题。  寄存器空间的更多信息。

    我通过代码进行了测试、地址为 CC120X_IOCFG2、位于正常寄存器空间中、读取和写入工作正常。

    当我执行写操作后执行读操作时、只要我进入扩展寄存器空间、读取的结果都是零。

    我已经从逻辑分析仪上附加了另一个屏幕截图、其中显示了响应。  正在测试的地址是 CC120X_FREQOFF_CFG。

    如果我访问扩展寄存器的读取端的方式有问题、您能告诉我吗?

    谢谢、

    Nathan

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

    根据您的图解:

    0x2F:写入扩展寄存器
    0x01:扩展寄存器 FREQOFF_CFG 的地址
    0x09:值被写入 FREQOFF_CFG

    0xAF:从扩展寄存器读取
    0x81:扩展寄存器 MAGN2的地址(我想您希望从0x01读取而不是
    0x81)
    0xAA:要读取的虚拟字节

    当执行读取操作时、将"地址字节"的 MSB 设置为1仅在访问普通寄存器空间时有效、因为在这种情况下、地址仅为6个字节宽。
    在扩展寄存器空间中、地址为8位宽、R/W 位是"0x2F"字节的一部分。 请参阅用户指南中的表3。

    BR

    Siri