主题中讨论的其他器件:CC1125、
您好的团队,
我的一位客户正在从 CC1125迁移到 CC1120、他们现在正在读取器件型号以 区分这两个器件。
但是、当它们读取器件型号寄存器时、该值有时读取为0x00、应为0x48。
您能否帮助解释可能的原因并提供其他方法来区分这两个器件?
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.
区分这些器件的唯一方法(从软件角度)是读取器件型号。
此外、如果它们读取到意外值、则表示 SPI 设置不正确。 他们是否有机会握住逻辑分析仪或示波器来检查 SPI 接口(我认为从实际角度来看这很困难)
这是唯一的寄存器、它们在读取时遇到问题吗? 如果它们复位芯片并读回各种寄存器的值、它们应该读取复位值。 是这样吗?
他们以前是否在使用 CC1125时遇到过问题? 从 SPI 接口的角度来看、这两个器件是相等的、这意味着如果它们的代码与 CC1125一起运行、这也应该与 CC1120一起运行。 唯一的区别是、如果它们在 CC1125上使用了40MHz xtal、则时间可能不同、因为 CC1120使用32MHz xtal。
您好、Siri、
他们使用逻辑分析仪观察 所附的 SPI 图。
他们读取寄存器的逻辑如下:
1.从总线的器件编号寄存器地址开始读取四个寄存器;
启动的第一条指令依次从器件型号开始读取四个寄存器、器件型号和器件版本正常、逻辑分析仪捕获的数据包的屏幕截图如下所示。
之后 、继续从器件型号开始读取四个寄存器。 器件型号值为0x00 (不正常)、器件版本正常、捕获数据包屏幕截图的逻辑分析仪如下所示。
我们总结法律:
1、读取这个器件型号 ID 寄存器必须确保它是 cc112x 操作的第一条指令、只要它被放置在后面、它将失败、这是非常奇怪的。
2、为了延长后面指令的间隔时间、间隔时间较短、第一条指令也容易发生故障、我们现在要确保在超过2S 间隔后的学位段数和指令的运行;
CC1125也是一样的。
您能帮助解释一下这个问题吗?
你好、Zoey
您在.DSL 文件中发送给我的图中有很多内容、因此、如果您能够简化测试、并且只发送4条 SPI 线的图(而不是我不知道的所有其他内容)、我会很感激:
另外、在发送的图中清楚显示哪条线是 SCLK、CSn 等
我对 CC1120进行了快速测试、代码所做的唯一工作是在循环中读取两个寄存器:
void main(void) { // Initialize MCU and peripherals initMCU(); trxSpiCmdStrobe(CC112X_SRES); while(1) { cc112xSpiReadReg(CC112X_PARTNUMBER, &dummy, 1); cc112xSpiReadReg(CC112X_PARTVERSION, &dummy, 1); } }
我正在从 PARTNUM 寄存器中重复读取0x48、从 PARTVERSITION 寄存器中重复读取0x21。
逻辑分析仪如下所示:
如果我执行猝发读取:
void main(void) { // Initialize MCU and peripherals initMCU(); trxSpiCmdStrobe(CC112X_SRES); while(1) { cc112xSpiReadReg(CC112X_PARTNUMBER, &dummy[0], 2); } }
它如下所示:
请提供类似的图。
另外、请确保您首先重置器件(SRES)。
Siri