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.

[参考译文] CC2500:TX 和 RX 模式之间的通信有问题。

Guru**** 2393725 points
Other Parts Discussed in Thread: CC2500

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/618702/cc2500-i-have-a-trouble-with-communication-between-tx-and-rx-mode

器件型号:CC2500

朋友好!

我有两个 CC2500模块、一个作为 TX 模式、另一个作为 RX 模式。

我使用 ATSAMD21G 开发了 MCU、但基于"MSP-CC"示例。

我在下面将 TX 和 Rx 配置为。  

RF_WRITE_ONE (TI_CCxxx0_IOCFG0、0x06);// GDO0输出引脚配置。
rf_write_one (TI_CCxxx0_PKTCTRL0、0x05);//数据包自动化控制。
RF_WRITE_ONE (TI_CCxxx0_CHANNR、0x03);//通道编号。
RF_WRITE_ONE (TI_CCxxx0_FSCTRL1、0x0A);//频率合成器控制。
rf_write_one (TI_CCxxx0_FREQ2、0x5C);//频率控制字、高字节
rf_write_one (TI_CCxxx0_FREQ1、0x4E);//频率控制字、MID 字节。
rf_write_one (TI_CCxxx0_FREQ0、0xC4);//频率控制字、MID 字节。
RF_WRITE_ONE (TI_CCxxx0_MDMCFG4、0x86);//调制解调器配置。
RF_WRITE_ONE (TI_CCxxx0_MDMCFG3、0x83);//调制解调器配置。
RF_WRITE_ONE (TI_CCxxx0_MDMCFG2、0x03);//调制解调器配置。
RF_WRITE_ONE (TI_CCxxx0_MDMCFG1、0x23);//调制解调器配置。
RF_WRITE_ONE (TI_CCxxx0_MDMCFG0、0x3B);//调制解调器配置。
rf_write_one (TI_CCxxx0_DEVIATN、0x44);//调制解调器开发(当 FSK 模式为 en 时)
rf_write_one (TI_CCxxx0_MCSM0、0x18);//主无线电控制状态机
rf_write_one (TI_CCxxx0_FOCCFG、0x16);//兼容频率。 CONFIG
RF_WRITE_ONE (TI_CCxxx0_FSCAL1、0x00);//频率合成器校准。
rf_write_one (TI_CCxxx0_FSCAL0、0x11);//频率合成器校准。 

选通信号为 TI_CCxxx0_SRX (具有 RX 模块)和 TI_CCxxx0_STX (具有 TX 模块、仅用于 RX 模式和 TX 模式)。

并像在低负载下一样传输数据。

txBuffer[0]= 0x7F;//猝发地址
txBuffer[1]= 2;//数据包长度
txBuffer[2]= 0x01;//数据包地址
txBuffer[3]= 0x05;// prearm_code
RFSendPacket (txBuffer、4);


void RFtxPacket (char * txBuffer、char size)
{ rf_write_texcf
;texcapt_tex_tex_texCxtex_tex_tid_tid_tex0_tex_tid_tex_tex_tid_texxsize
;void (tid_tid_tid_tex_tex //将状态更改为 TX,启动//生成

while (!(port_pin_get_input_level (TI_CC_GDO0_PIN));
//等待 GDO0变为高电平->同步 TX'ed
while (port_pin_get_input_level (TI_CC_GDO0_PIN)));
//等待 GDOKt

->结束

和接收到的数据、如在低至低的温度下。

RXRFePacket (char * rxReg Buffer、char *长度)
{
char status[2];
char pktLen;

//TI_CC_SPIStrobe (TI_CCxxx0_SRX);

while (!!(port_PIN_GET_INPUT_LEVEL (TI_CC_GDO0_PIN)));//GCCxxx0 (TI_IN_TX_IN_INL


(TI_IN_IN_INTR_IN_IN_INL)



;// TXCC0_IN_IN_IN_IN_IN_INTR_CL0)= TX_IN_INST_IN_CL0 (TI_TX_IN_IN_IN_IN_IN_IN_INL (TX_IN_IN_IN_IN_IN_IN_IN_INST_IN_Rx0) //如果 pktLen size <= rxBuffer
{
TI_CC_SPIReadBurstReg (TI_CCxxx0_RXFIFO、rxBuffer、pktLen);//拉取数据//
*长度= pktLen; //返回实际大小
TI_CC_SPIReadBurstReg (TI_CCxxx0_RXFIFO、状态、2);
返回(char)(STATUS[TI_CCxxx0_LQI_RX]&TI_CCxxx0_CRC_OK);
} //返回 crc_OK 位
否则
{
*长度= pktLen; //返回大尺寸
TI_CC_SPIStrobe (TI_CCxxx0_sidle); //退出 RX/TX
TI_CC_SPIStrobe (TI_CCxxx0_SFRX); //刷新 RXFIFO
返回0; //错误
}

否则
返回0; //错误
} 

这是 RX 模块处的 SPI 波形。(黄色:GDO0、蓝色:SCLK、绿色:MISO)

因此、RX 的状态寄存器值仅为0x00和0xC6。

似乎 RX 模块没有消息、您是否有任何建议?

这是我传输数据的频谱。 我只是检查了图形、而不是特定的数据包。

感谢你的帮助!  )

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

    我无法调试您的代码、但您是否运行了"eZ430-RF2500传感器监控器演示(修订版 G)"来确认您的设置与 TI 参考平台相匹配?

    祝你一切顺利