请教SI4432的功耗问题

[复制链接]
240|6
 楼主 | 2019-11-20 15:50 | 显示全部楼层 |阅读模式
我的板是上 块STM8L051 和一个SI4432模块  为了测试SI4432的功耗,单片机初始化完无线模块就进入待机模式
电源是锂电池+HT7533 出来的3.3V  , 测试结果是电流达到2.8mA , 如果初始化时不SI4432进入准备模式  (初始化代码最后改为si4432_write_reg(0x07, 0);        ),电流能降到1.38mA
望调试过这款芯片的指点一下,谢谢!

我的SI4432的初始化代码:

  1. void si4432_init(void)
  2. {
  3.         spi_init();

  4.         //CS引脚
  5.         GPIOB->DDR|=(1<<4);
  6.         GPIOB->ODR|=(1<<4); //高
  7.         GPIOB->CR1|=(1<<4);
  8.         GPIOB->CR2|=(1<<4);
  9.         
  10.         //IRQ引脚 PC0
  11.         GPIOC->DDR&=~(1<<0);
  12.         GPIOC->CR1|=(1<<0);//悬浮输入(上拉关)
  13.         GPIOC->CR2&=~(1<<0);//中断禁止
  14.         //GPIOC->CR2|=(1<<0);//中断使能
  15.         //EXTI->CR1|=(1<<1);//Px0引脚下降沿触发
  16.         
  17.         si4432_write_reg(0x07, 0x80);         //恢复所有寄存器为默认值
  18.         delay_ms(500);
  19.         
  20.         si4432_read_reg(0x03);         //清除所有中断标志
  21.         si4432_read_reg(0x04);   //清除所有中断标志
  22.         si4432_write_reg(0x05, 0x00);         //清除所有中断使能
  23.         si4432_write_reg(0x06, 0x00);  //清除所有中断使能

  24.         si4432_write_reg(0x06, 0x80);  //使能同步字侦测
  25.         si4432_write_reg(0x07, 0x01);  //进入 Ready 模式
  26.         
  27.         si4432_write_reg(0x09, 0x64);  //负载电容= 10P
  28.         si4432_write_reg(0x0a, 0x05);  //关闭低频输出
  29.         si4432_write_reg(0x0b, 0xea);  //GPIO 0 当做普通输出口
  30.         si4432_write_reg(0x0c, 0xea);  //GPIO 1 当做普通输出口
  31.         si4432_write_reg(0x0d, 0xf4);  //GPIO 2 输出收到的数据
  32.         si4432_write_reg(0x70, 0x24);  
  33.         si4432_write_reg(0x1d, 0x40);  //使能 afc
  34.         
  35.         // 1.2K bps setting
  36.         si4432_write_reg(0x1c, 0x16);  //IF滤波带宽
  37.         si4432_write_reg(0x20, 0x83);   
  38.         si4432_write_reg(0x21, 0xc0);  //
  39.         si4432_write_reg(0x22, 0x13);  //
  40.         si4432_write_reg(0x23, 0xa9);  //
  41.         si4432_write_reg(0x24, 0x00);  //
  42.         si4432_write_reg(0x25, 0x04);  //
  43.         si4432_write_reg(0x2a, 0x14);
  44.         si4432_write_reg(0x6e, 0x09);
  45.         si4432_write_reg(0x6f, 0xd5);
  46.         //1.2K bps setting end               
  47.         
  48.         si4432_write_reg(0x30, 0x8c);  //使能PH+ FIFO模式,高位在前面,使能CRC校验
  49.         si4432_write_reg(0x32, 0xff);  //byte 0,1,2,3 作为头码
  50.         si4432_write_reg(0x33, 0x42);  //byte 0,1,2,3 是头码,同步字3,2 是同步字
  51.         si4432_write_reg(0x34, 16);    //发射16个Nibble的Preamble
  52.         si4432_write_reg(0x35, 0x20);  //需要检测4个nibble的Preamble
  53.         si4432_write_reg(0x36, 0x2d);  //同步字为 0x2dd4
  54.         si4432_write_reg(0x37, 0xd4);
  55.         si4432_write_reg(0x38, 0x00);
  56.         si4432_write_reg(0x39, 0x00);
  57.         si4432_write_reg(0x3a, '7');   //发射的头码为:"7250"
  58.         si4432_write_reg(0x3b, '2');
  59.         si4432_write_reg(0x3c, '5');
  60.         si4432_write_reg(0x3d, '0');
  61.         si4432_write_reg(0x3e, 10);    //总共发射TxBuf_Len个字节的数据
  62.         si4432_write_reg(0x3f, '7');   //需要校验的头码为:"7250"
  63.         si4432_write_reg(0x40, '2');
  64.         si4432_write_reg(0x41, '5');
  65.         si4432_write_reg(0x42, '0');
  66.         si4432_write_reg(0x43, 0xff);  //头码1,2,3,4 的所有位都需要校验
  67.         si4432_write_reg(0x44, 0xff);  //
  68.         si4432_write_reg(0x45, 0xff);  //
  69.         si4432_write_reg(0x46, 0xff);  //
  70.         si4432_write_reg(0x6d, 0x07);  //发射功率设置  0x00:+1dBM  0x01:+2dBM  0x02:+5dBM  0x03:+8dBM  0x04:+11dBM  0x05:+14dBM  0x06:+17dBM  0x07:+20dBM
  71.         si4432_write_reg(0x79, 0x0);   //不需要跳频
  72.         si4432_write_reg(0x7a, 0x0);   //不需要跳频
  73.         si4432_write_reg(0x71, 0x22);  //发射不需要CLK,FiFo,FSK模式
  74.         si4432_write_reg(0x72, 0x30);  //频偏为 30KHz
  75.         si4432_write_reg(0x73, 0x0);   //没有频率偏差
  76.         si4432_write_reg(0x74, 0x0);   //没有频率偏差
  77.         si4432_write_reg(0x75, 0x53);  //频率设置 434
  78.         si4432_write_reg(0x76, 0x57);  //
  79.         si4432_write_reg(0x77, 0x80);
  80.         SI4432_ANT_RDY_SEL;        // 天线开关不在发射,接收状态
  81. si4432_write_reg(0x07, 1);        //IDLE模式
  82. }

复制代码

使用特权

评论回复
 楼主 | 2019-11-20 15:51 | 显示全部楼层
SDN引脚接地

使用特权

评论回复
| 2019-11-21 11:33 | 显示全部楼层
STM8 + Si4432,最低功耗调过80uA的

使用特权

评论回复
 楼主 | 2019-11-22 14:51 | 显示全部楼层
梦幻泡影 发表于 2019-11-21 11:33
STM8 + Si4432,最低功耗调过80uA的

可否指点一二???

使用特权

评论回复
| 2019-11-22 16:16 | 显示全部楼层
BitFu 发表于 2019-11-22 14:51
可否指点一二???

初始化完成以后,MCU进入低功耗模式,等待外部中断唤醒,射频芯片也进入睡眠,休眠时间越长,功耗越低。通俗讲就比如睡一会醒来看看有没有中断,没有就继续睡,有就唤醒MCU。睡眠时间越长,它的功耗就越低

使用特权

评论回复
| 2019-11-22 22:44 | 显示全部楼层
你的电路里有LDO,LDO本身也会有很大的静态电流的,要想低电流,不能用LDO,一般低功耗的电路,大多是电池供电,你有LDO,不可能做到很低的静态电流的。

使用特权

评论回复
 楼主 | 2019-12-1 20:24 | 显示全部楼层
已经做到4uA了,原来是ADC打开后单片机睡眠时ADC没有进入睡眠模式导致。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表