Part Number:CC2500Other Parts Discussed in Thread:MSP430G2433,
在对CC2500发送sleep命令之后,我们发现它有时候并没有进入sleep状态,这导致我们的产品耗电速度加快。查看芯片手册,发现CC2500没有提供sleep状态的某些反馈查询手段,所以目前无法确定CC2500是否进入sleep状态。以上情况概率性发生,我们将MCU睡眠,而刻意不发送sleep命令,能百分之百复现上述情况。低功耗电流为1.7mA,故此,我们认为芯片未进入sleep状态。想请问,CC2500的sleep命令,是否需要注意某些特定操作步骤或者时序问题。相关代码,我贴在下面。MCU用的MSP430G2433,系统关机之前,采用看门狗复位方式,从mian函数开头进入休眠。
void main(void) { WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer IFG1 = 0; CLK_init(); Port_init(); memset(id, 0xff, sizeof(id)); read_array((unsigned char *) FLASH_ADDRESS, id, sizeof(id)); // If the work mode in flash is empty, just use the default one. if (FALSE == CheckValidInFlash()) { restore_saving_data(); } adc_off(); PWM_Init(); Unit_Init();SPI_Init();CC2500_Init();CC2500_Write_RxADDR();CC2500_Command(CCxxx0_SPWD);//CC2500 Sleep if(((P2IN & PRECHARGE_STATE) ==PRECHARGE_STATE)) // no charge battery tonya { #if AUTO_TURN_ON_IN_ABNORMAL_SHUTDOWN if (id[DEVICE_AVOID_ESD] == KEEP_WORKING_AFTER_ABNORMAL_SHUTDOWN_FLAG_OFF) #endif { _BIS_SR(LPM4_bits + GIE);// Enter LPM4 w/interrupt } } else { #if DEVICE_LOCK_FUNCTION id[DEVICE_LOCK_STATE] = UINT_UNLOCK;// Release key lock #endif #if AUTO_TURN_ON_IN_ABNORMAL_SHUTDOWN id[DEVICE_AVOID_ESD] = KEEP_WORKING_AFTER_ABNORMAL_SHUTDOWN_FLAG_OFF; #endifid[LOW_POWER_INDICATOR_FLAG] = LOW_POWER_INDICATOR_FLAG_OFF; __disable_interrupt(); flash_erase( (unsigned int *) FLASH_ADDRESS); write_array((unsigned char *) FLASH_ADDRESS, id, sizeof(id)); Delay_ms(5); ChargeFlag=1; ChargeState = CHARGING_NOT_IN_STATUS; _BIS_SR(GIE);// Enter interrupt } } void CC2500_Init(void) {unsigned char temp; CSN_ON(); delay_ms(1); CSN_OFF(); delay_ms(1); CSN_ON(); delay_ms(1); CSN_OFF(); SPI_Write(CCxxx0_SRES); //write reset command CSN_ON();do{ CC2500_WriteReg(CCxxx0_FSCTRL1, CC2500_Config.FSCTRL1); CC2500_WriteReg(CCxxx0_FSCTRL0, CC2500_Config.FSCTRL0); CC2500_WriteReg(CCxxx0_FREQ2,CC2500_Config.FREQ2); CC2500_WriteReg(CCxxx0_FREQ1,CC2500_Config.FREQ1); CC2500_WriteReg(CCxxx0_FREQ0,CC2500_Config.FREQ0); CC2500_WriteReg(CCxxx0_MDMCFG4, CC2500_Config.MDMCFG4); CC2500_WriteReg(CCxxx0_MDMCFG3, CC2500_Config.MDMCFG3); CC2500_WriteReg(CCxxx0_MDMCFG2, CC2500_Config.MDMCFG2); CC2500_WriteReg(CCxxx0_MDMCFG1, CC2500_Config.MDMCFG1); CC2500_WriteReg(CCxxx0_MDMCFG0, CC2500_Config.MDMCFG0); CC2500_WriteReg(CCxxx0_CHANNR,CC2500_Config.CHANNR); CC2500_WriteReg(CCxxx0_DEVIATN, CC2500_Config.DEVIATN); CC2500_WriteReg(CCxxx0_FREND1,CC2500_Config.FREND1); CC2500_WriteReg(CCxxx0_FREND0,CC2500_Config.FREND0); CC2500_WriteReg(CCxxx0_MCSM0 ,CC2500_Config.MCSM0 ); CC2500_WriteReg(CCxxx0_FOCCFG,CC2500_Config.FOCCFG); CC2500_WriteReg(CCxxx0_BSCFG,CC2500_Config.BSCFG); CC2500_WriteReg(CCxxx0_AGCCTRL2, CC2500_Config.AGCCTRL2); CC2500_WriteReg(CCxxx0_AGCCTRL1, CC2500_Config.AGCCTRL1); CC2500_WriteReg(CCxxx0_AGCCTRL0, CC2500_Config.AGCCTRL0); CC2500_WriteReg(CCxxx0_FSCAL3,CC2500_Config.FSCAL3); CC2500_WriteReg(CCxxx0_FSCAL2,CC2500_Config.FSCAL2); CC2500_WriteReg(CCxxx0_FSCAL1,CC2500_Config.FSCAL1); CC2500_WriteReg(CCxxx0_FSCAL0,CC2500_Config.FSCAL0); CC2500_WriteReg(CCxxx0_FSTEST,CC2500_Config.FSTEST); CC2500_WriteReg(CCxxx0_TEST2,CC2500_Config.TEST2); CC2500_WriteReg(CCxxx0_TEST1,CC2500_Config.TEST1); CC2500_WriteReg(CCxxx0_TEST0,CC2500_Config.TEST0); CC2500_WriteReg(CCxxx0_IOCFG2,CC2500_Config.IOCFG2); CC2500_WriteReg(CCxxx0_IOCFG0,CC2500_Config.IOCFG0); CC2500_WriteReg(CCxxx0_PKTCTRL1, CC2500_Config.PKTCTRL1); CC2500_WriteReg(CCxxx0_PKTCTRL0, CC2500_Config.PKTCTRL0); CC2500_WriteReg(CCxxx0_ADDR,CC2500_Config.ADDR); CC2500_WriteReg(CCxxx0_PKTLEN,CC2500_Config.PKTLEN);CC2500_WritePaTable(CCxxx0_PATABLE,PaTabel); //to set output powertemp = CC2500_ReadReg(CCxxx0_FREQ0);}while(temp!=CC2500_Config.FREQ0); CC2500_Command(CCxxx0_SFRX); CC2500_Command(CCxxx0_SFTX); CC2500_Command(CCxxx0_SIDLE); } void CC2500_Command(uint8 cmd) { CSN_OFF(); while (MISO_IN); SPI_Write(cmd); CSN_ON(); }
Links:
您好,
关于确认是否进入sleep 模式,请查看下面的连接
https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/15933/cc2500-will-not-go-to-sleep
TRANSLATE with x
English
Arabic
Hebrew
PolishBulgarian
Hindi
PortugueseCatalan
Hmong Daw
RomanianChinese Simplified
Hungarian
RussianChinese Traditional
Indonesian
SlovakCzech
Italian
SlovenianDanish
Japanese
SpanishDutch
Klingon
SwedishEnglish
Korean
ThaiEstonian
Latvian
TurkishFinnish
Lithuanian
UkrainianFrench
Malay
UrduGerman
Maltese
VietnameseGreek
Norwegian
WelshHaitian Creole
PersianTRANSLATE with
COPY THE URL BELOW
BackEMBED THE SNIPPET BELOW IN YOUR SITE
Enable collaborative features and customize widget: Bing Webmaster Portal
Back