完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
小弟最近在采用MSP430 与 CC1101做一个无线通讯的项目,项目进行到现在已经大概一个月了,基本功能都已经调通,目前遇到棘手的问题未能解决,忘各位高手指点!
项目描述: 项目有两个设备组成,一个为从机、一个为主机,主机与从机是一对多的通讯方式,从机(电池供电)平时处于低功耗休眠模式,每个10秒发送一个数据,主机负责接收,要求从机功耗控制在30uA一下,主机采用市电供电。 目前进展: 1、主机与从机已经能正常通讯,且通讯稳定性都正常; 2、从机在未接CC1101模块时,低功耗已经完成,且其他切换功能均正常,功耗在27uA左右,包括外设EEPORM、FLASH以及其他等等; 3、但是设备接上CC1101模块时,让模块进入低功耗只能做到250uA,暂且还是查找问题中,未找到问题所在; 4、从机在低功耗状态转入发送数据后,不能正常进入SLEEP模式,所以一旦有数据发送后,设备功耗就维持在1.9mA左右,等于模块的IDLE状态工作电流,并且这个时候继续写入SPWD,也不能进入SLEEP状态。 工作方式: 1、设备休眠时间到,执行以下指令,让模块进入SLEEP状态: ti_CC_ChangeStateToIDLE(); // SPWD切换在IDLE 状态下有效 TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG2, 0x2F); TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG0, 0x2F); TI_CC_SPIStrobe(TI_CCxxx0_SPWD); // 进入断电模式 TI_CCxxx0_CSn_DISABLE(); // CS 拉高 其他IO口置位,设备进入低功耗状态,整个设备进入低功耗模式,功耗为250uA,偏大!!! 2、设备数据发送时间到,执行以下指令,使模块退出低功耗模式 UCSCTL4 = (SELM__DCOCLK + SELA__XT1CLK + SELS__DCOCLK); // 切换SPI时钟为DCO UCA1Init(); // 初始化SPI端口配置 TI_CCxxx0_CSn_ENABLE(); // 拉高,使得模块退出低功耗模式 // 发数据代码如下,采用中断方式发送,并且为不定长度发送数据模式 TI_CC_ChangeStateToIDLE(); TI_CC_SPIWriteBurst(TI_CCxxx0_TXFIFO, &SendNum, 1); TI_CC_SPIWriteBurst(TI_CCxxx0_TXFIFO, SendBuf, SendNum); TI_CC_GDOx_INT_OPEN(EXTI_INT_GDO2_ON); TI_CC_SPIStrobe(TI_CCxxx0_STX); // Change state to TX, initiating // 等到检测到中断发送完成后,执行以下代码 TI_CC_ChangeStateToIDLE(); // SPWD切换在IDLE 状态下有效 TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG2, 0x2F); TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG0, 0x2F); TI_CC_SPIStrobe(TI_CCxxx0_SPWD); // 进入断电模式 TI_CCxxx0_CSn_DISABLE(); // CS 拉高 其他IO口置位,设备进入低功耗状态,整个设备进入低功耗模式,功耗为1.9mA,非常偏大!!! === 模块IDLE电流 3、附上寄存器配置状态 TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG2, 0x06); // TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG1, 0x2E); // 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_IOCFG0, 0x01); // 与 RX FIFO 相关:达到或超出 RX FIFO 阈值填充 RX FIFO 时置位,或到达数据包结尾时置位。RX FIFO 为空时取消置位。 TI_CC_SPIWriteByte(TI_CCxxx0_FIFOTHR, 0x07); // 默认值: TX_FIFO_THR:33, RX_FIFO_THR:32 TI_CC_SPIWriteByte(TI_CCxxx0_SYNC1, 0xD3); // 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_SYNC0, 0x91); // 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_PKTLEN, 0x40); // 可变数据包长度,最大允许数据包长度为64字节 TI_CC_SPIWriteByte(TI_CCxxx0_PKTCTRL1, 0x0C); // 开启CRC错误自动刷新功能,且FIFO后包含两个字节的状态State TI_CC_SPIWriteByte(TI_CCxxx0_PKTCTRL0, 0x45); // 开启数据白化,开启CRC检验,可变数据包长度 TI_CC_SPIWriteByte(TI_CCxxx0_ADDR, 0x00); // 默认值: 无地址 TI_CC_SPIWriteByte(TI_CCxxx0_CHANNR, 0x00); // 默认值: 00 TI_CC_SPIWriteByte(TI_CCxxx0_FSCTRL1, 0x08); // 中频计算 TI_CC_SPIWriteByte(TI_CCxxx0_FSCTRL0, 0x00); // 频率补偿 TI_CC_SPIWriteByte(TI_CCxxx0_FREQ2, 0x10); // 432.999878频率 TI_CC_SPIWriteByte(TI_CCxxx0_FREQ1, 0xA7); TI_CC_SPIWriteByte(TI_CCxxx0_FREQ0, 0x62); TI_CC_SPIWriteByte(TI_CCxxx0_MDMCFG4, 0x5B); // Baud : 100K,RX Filter BW : 325KHZ TI_CC_SPIWriteByte(TI_CCxxx0_MDMCFG3, 0xF8); TI_CC_SPIWriteByte(TI_CCxxx0_MDMCFG2, 0x03); // 2-FSK TI_CC_SPIWriteByte(TI_CCxxx0_MDMCFG1, 0x22); TI_CC_SPIWriteByte(TI_CCxxx0_MDMCFG0, 0xF8); TI_CC_SPIWriteByte(TI_CCxxx0_DEVIATN, 0x47); // 调制解调器偏差设置: 47.6K TI_CC_SPIWriteByte(TI_CCxxx0_MCSM2, 0x07); // 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_MCSM1, 0x30); // 接收到一个数据包后保持IDLE,择发送一个数据包后保持IDLE TI_CC_SPIWriteByte(TI_CCxxx0_MCSM0 , 0x08); // 手动校准频率 TI_CC_SPIWriteByte(TI_CCxxx0_FOCCFG, 0x1D); // 频率偏移补偿配置 TI_CC_SPIWriteByte(TI_CCxxx0_BSCFG, 0x1C); // 位同步配置 TI_CC_SPIWriteByte(TI_CCxxx0_AGCCTRL2, 0xC7); // 自动增益控制 TI_CC_SPIWriteByte(TI_CCxxx0_AGCCTRL1, 0x00); TI_CC_SPIWriteByte(TI_CCxxx0_AGCCTRL0, 0xB2); TI_CC_SPIWriteByte(TI_CCxxx0_WOREVT1, 0x87); // 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_WOREVT0, 0x6B); TI_CC_SPIWriteByte(TI_CCxxx0_WORCTRL, 0xF8); // 无线唤醒设置: 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_FREND1, 0xB6); // 前端 RX 配置 TI_CC_SPIWriteByte(TI_CCxxx0_FREND0, 0x10); // 前端 TX 配置 TI_CC_SPIWriteByte(TI_CCxxx0_FSCAL3, 0xEA); // 频率合成器校准 TI_CC_SPIWriteByte(TI_CCxxx0_FSCAL2, 0x2A); TI_CC_SPIWriteByte(TI_CCxxx0_FSCAL1, 0x00); TI_CC_SPIWriteByte(TI_CCxxx0_FSCAL0, 0x1F); TI_CC_SPIWriteByte(TI_CCxxx0_RCCTRL1, 0x41); // 振荡器配置: 默认值 TI_CC_SPIWriteByte(TI_CCxxx0_RCCTRL0, 0x00); TI_CC_SPIWriteByte(TI_CCxxx0_TEST2, 0x88); // Various test settings. TI_CC_SPIWriteByte(TI_CCxxx0_TEST1, 0x31); // Various test settings. TI_CC_SPIWriteByte(TI_CCxxx0_TEST0, 0x0B); // Various test settings. 4、请各位高手指点,CC1101进入SLEEP模式的逻辑顺序以及怎么样做低功耗发送数据,感谢不已
|
|
相关推荐
26 个讨论
|
|
只有小组成员才能发言,加入小组>>
3327个成员聚集在这个小组
加入小组9556 浏览 1 评论
10355 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
10677 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2657 浏览 1 评论
5114 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
10677浏览 2评论
10355浏览 1评论
9556浏览 1评论
8214浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:52 , Processed in 0.781510 second(s), Total 53, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5724