TI中文支持网
TI专业的中文技术问题咨询交流网站

cc2500驱动返回信号有问题

你好,CC2500的SO脚返回的数据,单片机读出来是0xFF,这个数据是错误的,应该是0x80,SO脚信号见下图:

调试程序见附件CC2500_test.rar

Viki Shi:

能否提供更详细的问题描述?是否测试过TI例程【】?

TI 诚邀您参加全新设计的产品页面测试,参加测试即可享有 TI 购物 9 折优惠码,点击加入 EP产品页面测试报名,名额有限。感谢您的参与!

user6351137:

回复 Viki Shi:

上电后,串口,CC2500初始化,CC2500 reset,读CC2500 ID,如果不是0x80,读出的是0xFF,所以一直读ID。
调试程序是基于TI例swrc021f

user6351137:

回复 Viki Shi:

这个是主函数,读出的read_id不对,后面的程序就没有执行
int main(void)
{uint8_t read_id;uint8_t txBuffer[4]; /* 配置系统时钟为 72M */SystemInit();
USART1_Config();NVIC_Configuration();
printf("USART1_Config \r\n");CC2500_Init(); TI_CC_PowerupResetCCxxxx();// Reset CCxxxxDelay(0xEF);read_id = TI_CC_SPIReadReg(0x30);printf("ID:%x\n\r",read_id);while(read_id!= 0x80){TI_CC_PowerupResetCCxxxx();// Reset CCxxxxDelay(0xEF);read_id = TI_CC_SPIReadReg(0x30);printf("ID:%x\n\r",read_id);}
writeRFSettings();// Write RF settings to config regTI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//Write PATABLETI_CC_SPIStrobe(TI_CCxxx0_SRX); txBuffer[0] = 2;// Packet lengthtxBuffer[1] = 0x26;// Packet addresstxBuffer[2] = 0xe7; // Load switch inputswhile (1){TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);RFSendPacket(txBuffer, 3);// Send value over RFprintf("send over\n\r");Delay(0xFFF);}
}

把下面这段屏蔽while(read_id!= 0x80){TI_CC_PowerupResetCCxxxx();// Reset CCxxxxDelay(0xEF);read_id = TI_CC_SPIReadReg(0x30);printf("ID:%x\n\r",read_id);}
CC2500发送数据时,GPO0没有出现高电平

Viki Shi:

回复 user6351137:

你是keil生成的吗?目前电脑上只有IAR/CCS,打不开你的文件

user6351137:

回复 Viki Shi:

rar里面的是keil工程,打开c和h文件,可以不用keil

user6351137:

把read_id = TI_CC_SPIReadReg(0x30);
改为read_id = TI_CC_SPIReadStatus(0x30);
读出来的数据是0xff

user6351137:

回复 user6351137:

数据一致不对
TI_CCxxx0_IOCFG2,TI_CCxxx0_IOCFG1,TI_CCxxx0_IOCFG0,TI_CCxxx0_FIFOTHR,TI_CCxxx0_SYNC1,TI_CCxxx0_CHANNR,这些寄存器读出来的值都是0xf,也不对

user6351137:

回复 user6351137:

请Ti的工程师分析一下

Viki Shi:

回复 user6351137:

我手边暂时没这个芯片的板子,我去咨询下同事,有消息再来更新

Viki Shi:

回复 Viki Shi:

你提供的那个图看不出来什么,建议用逻辑分析仪追踪一下4条SPI线,看通过SPI发送的时候是什么情况

读出0xff说明芯片运行不正常,SPI总线(MISO)上状态字节返回的MSB位是CHIP_RDYn。 如果该位不是0 ,不要启动SPI时钟。CHIP_RDYn必须在SCLK的第一个上升沿之前变低,这才表明晶振正在运行。 如果晶体未正常运行(CHIP_RDYn = 1),那当然通信不成功。

赞(0)
未经允许不得转载:TI中文支持网 » cc2500驱动返回信号有问题
分享到: 更多 (0)