请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC1200EMK-868-930 主题中讨论的其他器件:C2000WARE、 CC1200
您好!
我将 F28379D 与 CC1200EMK 配合使用。 从单个(非扩展)寄存器读取和写入的行为似乎是奇数的。 例如、当我读取/写入 IOCFG3时、0x01、0x06和0x03有效、但0x02和0x04失败。 此外、当我使用其他寄存器尝试此操作时、有时会失败。 我将在下面发布两个示例、其中一个是 IOCFG3寄存器、另一个是通道 BW 寄存器。
我当前的流程是:
拉低 CSn、等待 MISO 变为高电平、延迟0.5us、开始传输。 写入地址。 完成后、从地址读取。
一些其他信息:我将 C2000Ware Driverlib 用于 SPI。 4MHz 时钟速度。 SPIA_LOW 和 SPIA_HIGH 等用于 CC1200的 CS_n 的外部 GPIO。
这两个测试返回的状态为0x60。
代码: (ICOFG3)
while (final_value!= 0x03)//使用中断点重复此操作
{ SPIA_LOW; SPIA_WAIT; DEVICE_DELAY_US (1); //写入地址 SPI_writeDataBlockingNonFIFO (Current_BASE、0x0000);// IOCFG3 DEVICE_DELAY_US (0.5);//延迟 SPI_writeDataBlockingNonFIFO (Current_BASE、0x02<<8); //从地址读取 DEVICE_DELAY_US (1); SPI_writeDataBlockingNonFIFO (CURRENT_BASE、0x80<<8); WRITE_RETURE_VALUE = SPI_READDataNonBlocking (CURRENT_BASE); DEVICE_DELAY_US (0.5); WRITE_RETURE_VALUE = SPI_READDataNonBlocking (CURRENT_BASE); //发送虚拟字节 SPI_writeDataBlockingNonFIFO (Current_BASE、0xFF<8); DEVICE_DELAY_US (0.5); Bear_final_value = SPI_readDataNonBlocking (CURRENT_BASE); DEVICE_DELAY_US (0.5); final_value = SPI_readDataNonBlocking (CURRENT_BASE); SPIA_HIGH; DEVICE_DELAY_US (10); }
另一个使用 CHANBW 寄存器的示例、该代码返回0xF7
while (final_value!= 0x03){ SPIA_LOW; SPIA_WAIT; DEVICE_DELAY_US (1); //写入地址 SPI_writeDataBlockingNonFIFO (Current_BASE、(CC120X_CHAN_BW | CC1200_WRITE_BIT)<< 8);// IOCFG3 DEVICE_DELAY_US (0.5);//延迟 SPI_writeDataBlockingNonFIFO (Current_BASE、0xA6<8); //从地址读取 DEVICE_DELAY_US (1); SPI_writeDataBlockingNonFIFO (Current_BASE、(CC120X_CHAN_BW | CC1200_READ_BIT)<<8); WRITE_RETURE_VALUE = SPI_READDataNonBlocking (CURRENT_BASE); DEVICE_DELAY_US (0.5); WRITE_RETURE_VALUE = SPI_READDataNonBlocking (CURRENT_BASE); //发送虚拟字节 SPI_writeDataBlockingNonFIFO (Current_BASE、0xFF<8); DEVICE_DELAY_US (0.5); Bear_final_value = SPI_readDataNonBlocking (CURRENT_BASE); DEVICE_DELAY_US (0.5); final_value = SPI_readDataNonBlocking (CURRENT_BASE); SPIA_HIGH; DEVICE_DELAY_US (10); }