专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
有哪位大神做过CC1101的WOR功能?
2019-07-21 00:46
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
9168
12
1540
本人在做CC1101的项目,由于接收端要做低功耗处理。看到CC1101有WOR功能,所以就想用这个功能达到低功耗的目的。但是进入WOR模式后,很难接收,或者过很长一段时间才能接收,如果缩短睡眠时间,功耗增大很多。
本人也试过隔一段时间恢复CC1101,但是功耗并不理想,因为接收模式耗电太大了。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
ryanwong
2019-07-21 15:10
本帖最后由 ryanwong 于 2018-12-4 20:38 编辑
对不起,晚了点。
首先:由于篇幅的原因,我只把CC1101的某些配置发出来
把基本配置上传上来先
寄存器配置:
static const unsigned char CC1101InitData[30][2]=
{
{CC1101_IOCFG0, 0x06}, //这里是GDO0的收到数据就产生中断的配置
{CC1101_FIFOTHR, 0x47},
{CC1101_PKTCTRL0, 0x05},
{CC1101_CHANNR, 0x01},
{CC1101_FSCTRL1, 0x0B},
{CC1101_FSCTRL0, 0x00}, // Frequency synthesizer control.
{CC1101_FREQ2, 0x10},
{CC1101_FREQ1, 0xA7},
{CC1101_FREQ0, 0x62},
{CC1101_MDMCFG4, 0x7B}, //这里比较重要的是 MDMCFG4 - 0,这几个寄存器,其实我不知道这是什么意思,但是这样配置的话,发送端发送周期会下降至5ms
{CC1101_MDMCFG3, 0x83}, //按照其他文章配置的话,发送周期将会到达100ms,发送周期太长的话,接收端不好接收数据
{CC1101_MDMCFG2, 0x93}, //这里的“发送周期”不是指连续发送,而是每次只发几个字节,用来唤醒CC1101。(这里表述不清楚,真是不好意思)
{CC1101_MDMCFG1, 0x23}, // Modem configuration. //其余的和网上的配置差不多
{CC1101_MDMCFG0, 0xA4}, // Modem configuration.
{CC1101_DEVIATN, 0x15},
{CC1101_FREND1, 0x56}, // Front end RX configuration.
{CC1101_FREND0, 0x10}, // Front end RX configuration.
{CC1101_MCSM0, 0x18},
{CC1101_FOCCFG, 0x16},
{CC1101_BSCFG, 0x6C}, // Bit synchronization Configuration.
{CC1101_AGCCTRL2, 0x43}, // AGC control.
{CC1101_AGCCTRL1, 0x40}, // AGC control.
{CC1101_AGCCTRL0, 0x91}, // AGC control.
{CC1101_FSCAL3, 0xA9},
{CC1101_FSCAL2, 0x0A},
{CC1101_FSCAL1, 0x00},
{CC1101_FSCAL0, 0x11},
{CC1101_TEST2, 0x81},
{CC1101_TEST1, 0x35},
{CC1101_MCSM1, 0x3B},
初始化函数: //以下是初始化函数的操作,值得注意的是这里配置了地址。一般CC1101选择信道就可以了。我也是跟着别人配置的
void cc1101Init(void)
{
unsigned char i;
SPI_GPIO_Init();
Reset();
for(i=0;i<0xff;i++);
for(i=0;i<0xff;i++);
for( i = 0; i < 30; i++ ) //28
{
WriteReg(CC1101InitData
[0],CC1101InitData
[1]);
}
//cc1101_mode(RX_MODE);
CC1101SetAddress( 0x05, BROAD_0AND255 );
CC1101SetSYNC( 0x8799 );
WriteReg(CC1101_MDMCFG1, 0x72); //Modem Configuration
WriteMultiReg(CC1101_PATABLE, PaTabel, 8 );
i = ReadStatus( CC1101_PARTNUM );//for test, must be 0x80
i = ReadStatus( CC1101_VERSION );//for test, refer to the datasheet
CC1101SetTRMode(RX_MODE);
}
unsigned char PaTabel[8] = { 0xc0, 0xC8, 0x84, 0x60, 0x68, 0x34, 0x1D, 0x0E};
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
对不起,晚了点。
首先:由于篇幅的原因,我只把CC1101的某些配置发出来
把基本配置上传上来先
寄存器配置:
static const unsigned char CC1101InitData[30][2]=
{
{CC1101_IOCFG0, 0x06}, //这里是GDO0的收到数据就产生中断的配置
{CC1101_FIFOTHR, 0x47},
{CC1101_PKTCTRL0, 0x05},
{CC1101_CHANNR, 0x01},
{CC1101_FSCTRL1, 0x0B},
{CC1101_FSCTRL0, 0x00}, // Frequency synthesizer control.
{CC1101_FREQ2, 0x10},
{CC1101_FREQ1, 0xA7},
{CC1101_FREQ0, 0x62},
{CC1101_MDMCFG4, 0x7B}, //这里比较重要的是 MDMCFG4 - 0,这几个寄存器,其实我不知道这是什么意思,但是这样配置的话,发送端发送周期会下降至5ms
{CC1101_MDMCFG3, 0x83}, //按照其他文章配置的话,发送周期将会到达100ms,发送周期太长的话,接收端不好接收数据
{CC1101_MDMCFG2, 0x93}, //这里的“发送周期”不是指连续发送,而是每次只发几个字节,用来唤醒CC1101。(这里表述不清楚,真是不好意思)
{CC1101_MDMCFG1, 0x23}, // Modem configuration. //其余的和网上的配置差不多
{CC1101_MDMCFG0, 0xA4}, // Modem configuration.
{CC1101_DEVIATN, 0x15},
{CC1101_FREND1, 0x56}, // Front end RX configuration.
{CC1101_FREND0, 0x10}, // Front end RX configuration.
{CC1101_MCSM0, 0x18},
{CC1101_FOCCFG, 0x16},
{CC1101_BSCFG, 0x6C}, // Bit synchronization Configuration.
{CC1101_AGCCTRL2, 0x43}, // AGC control.
{CC1101_AGCCTRL1, 0x40}, // AGC control.
{CC1101_AGCCTRL0, 0x91}, // AGC control.
{CC1101_FSCAL3, 0xA9},
{CC1101_FSCAL2, 0x0A},
{CC1101_FSCAL1, 0x00},
{CC1101_FSCAL0, 0x11},
{CC1101_TEST2, 0x81},
{CC1101_TEST1, 0x35},
{CC1101_MCSM1, 0x3B},
初始化函数: //以下是初始化函数的操作,值得注意的是这里配置了地址。一般CC1101选择信道就可以了。我也是跟着别人配置的
void cc1101Init(void)
{
unsigned char i;
SPI_GPIO_Init();
Reset();
for(i=0;i<0xff;i++);
for(i=0;i<0xff;i++);
for( i = 0; i < 30; i++ ) //28
{
WriteReg(CC1101InitData[0],CC1101InitData[1]);
}
//cc1101_mode(RX_MODE);
CC1101SetAddress( 0x05, BROAD_0AND255 );
CC1101SetSYNC( 0x8799 );
WriteReg(CC1101_MDMCFG1, 0x72); //Modem Configuration
WriteMultiReg(CC1101_PATABLE, PaTabel, 8 );
i = ReadStatus( CC1101_PARTNUM );//for test, must be 0x80
i = ReadStatus( CC1101_VERSION );//for test, refer to the datasheet
CC1101SetTRMode(RX_MODE);
}
unsigned char PaTabel[8] = { 0xc0, 0xC8, 0x84, 0x60, 0x68, 0x34, 0x1D, 0x0E};
一周热门 更多>