请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 模块没有消息、您是否有任何建议?
这是我传输数据的频谱。 我只是检查了图形、而不是特定的数据包。
感谢你的帮助! )