BitFu 发表于 2019-11-20 15:50

请教SI4432的功耗问题

我的板是上 块STM8L051 和一个SI4432模块为了测试SI4432的功耗,单片机初始化完无线模块就进入待机模式
电源是锂电池+HT7533 出来的3.3V, 测试结果是电流达到2.8mA , 如果初始化时不SI4432进入准备模式(初始化代码最后改为si4432_write_reg(0x07, 0);      ),电流能降到1.38mA
望调试过这款芯片的指点一下,谢谢!

我的SI4432的初始化代码:

void si4432_init(void)
{
      spi_init();

      //CS引脚
      GPIOB->DDR|=(1<<4);
      GPIOB->ODR|=(1<<4); //高
      GPIOB->CR1|=(1<<4);
      GPIOB->CR2|=(1<<4);
      
      //IRQ引脚 PC0
      GPIOC->DDR&=~(1<<0);
      GPIOC->CR1|=(1<<0);//悬浮输入(上拉关)
      GPIOC->CR2&=~(1<<0);//中断禁止
      //GPIOC->CR2|=(1<<0);//中断使能
      //EXTI->CR1|=(1<<1);//Px0引脚下降沿触发
      
      si4432_write_reg(0x07, 0x80);         //恢复所有寄存器为默认值
      delay_ms(500);
      
      si4432_read_reg(0x03);         //清除所有中断标志
      si4432_read_reg(0x04);   //清除所有中断标志
      si4432_write_reg(0x05, 0x00);         //清除所有中断使能
      si4432_write_reg(0x06, 0x00);//清除所有中断使能

      si4432_write_reg(0x06, 0x80);//使能同步字侦测
      si4432_write_reg(0x07, 0x01);//进入 Ready 模式
      
      si4432_write_reg(0x09, 0x64);//负载电容= 10P
      si4432_write_reg(0x0a, 0x05);//关闭低频输出
      si4432_write_reg(0x0b, 0xea);//GPIO 0 当做普通输出口
      si4432_write_reg(0x0c, 0xea);//GPIO 1 当做普通输出口
      si4432_write_reg(0x0d, 0xf4);//GPIO 2 输出收到的数据
      si4432_write_reg(0x70, 0x24);
      si4432_write_reg(0x1d, 0x40);//使能 afc
      
      // 1.2K bps setting
      si4432_write_reg(0x1c, 0x16);//IF滤波带宽
      si4432_write_reg(0x20, 0x83);   
      si4432_write_reg(0x21, 0xc0);//
      si4432_write_reg(0x22, 0x13);//
      si4432_write_reg(0x23, 0xa9);//
      si4432_write_reg(0x24, 0x00);//
      si4432_write_reg(0x25, 0x04);//
      si4432_write_reg(0x2a, 0x14);
      si4432_write_reg(0x6e, 0x09);
      si4432_write_reg(0x6f, 0xd5);
      //1.2K bps setting end               
      
      si4432_write_reg(0x30, 0x8c);//使能PH+ FIFO模式,高位在前面,使能CRC校验
      si4432_write_reg(0x32, 0xff);//byte 0,1,2,3 作为头码
      si4432_write_reg(0x33, 0x42);//byte 0,1,2,3 是头码,同步字3,2 是同步字
      si4432_write_reg(0x34, 16);    //发射16个Nibble的Preamble
      si4432_write_reg(0x35, 0x20);//需要检测4个nibble的Preamble
      si4432_write_reg(0x36, 0x2d);//同步字为 0x2dd4
      si4432_write_reg(0x37, 0xd4);
      si4432_write_reg(0x38, 0x00);
      si4432_write_reg(0x39, 0x00);
      si4432_write_reg(0x3a, '7');   //发射的头码为:"7250"
      si4432_write_reg(0x3b, '2');
      si4432_write_reg(0x3c, '5');
      si4432_write_reg(0x3d, '0');
      si4432_write_reg(0x3e, 10);    //总共发射TxBuf_Len个字节的数据
      si4432_write_reg(0x3f, '7');   //需要校验的头码为:"7250"
      si4432_write_reg(0x40, '2');
      si4432_write_reg(0x41, '5');
      si4432_write_reg(0x42, '0');
      si4432_write_reg(0x43, 0xff);//头码1,2,3,4 的所有位都需要校验
      si4432_write_reg(0x44, 0xff);//
      si4432_write_reg(0x45, 0xff);//
      si4432_write_reg(0x46, 0xff);//
      si4432_write_reg(0x6d, 0x07);//发射功率设置0x00:+1dBM0x01:+2dBM0x02:+5dBM0x03:+8dBM0x04:+11dBM0x05:+14dBM0x06:+17dBM0x07:+20dBM
      si4432_write_reg(0x79, 0x0);   //不需要跳频
      si4432_write_reg(0x7a, 0x0);   //不需要跳频
      si4432_write_reg(0x71, 0x22);//发射不需要CLK,FiFo,FSK模式
      si4432_write_reg(0x72, 0x30);//频偏为 30KHz
      si4432_write_reg(0x73, 0x0);   //没有频率偏差
      si4432_write_reg(0x74, 0x0);   //没有频率偏差
      si4432_write_reg(0x75, 0x53);//频率设置 434
      si4432_write_reg(0x76, 0x57);//
      si4432_write_reg(0x77, 0x80);
      SI4432_ANT_RDY_SEL;      // 天线开关不在发射,接收状态
si4432_write_reg(0x07, 1);      //IDLE模式
}


BitFu 发表于 2019-11-20 15:51

SDN引脚接地

梦幻泡影 发表于 2019-11-21 11:33

STM8 + Si4432,最低功耗调过80uA的

BitFu 发表于 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。睡眠时间越长,它的功耗就越低

linxi6414 发表于 2019-11-22 22:44

你的电路里有LDO,LDO本身也会有很大的静态电流的,要想低电流,不能用LDO,一般低功耗的电路,大多是电池供电,你有LDO,不可能做到很低的静态电流的。

BitFu 发表于 2019-12-1 20:24

已经做到4uA了,原来是ADC打开后单片机睡眠时ADC没有进入睡眠模式导致。

GemEMD 发表于 2020-4-9 12:02

BitFu 发表于 2019-12-1 20:24
已经做到4uA了,原来是ADC打开后单片机睡眠时ADC没有进入睡眠模式导致。 ...

整体功耗做到4uA,这么强?也就是4uA的平均功耗,还能接收数据吗?

kingsleych 发表于 2020-4-14 14:58

芯片是被动控制的,关闭接收,进sleep ,高频停震,4432 功耗1uA都大了,,基本都是mcu 没调好,或者4432 工作状态不对,要吗spi睡眠后状态不对

BitFu 发表于 2020-4-17 08:21

GemEMD 发表于 2020-4-9 12:02
整体功耗做到4uA,这么强?也就是4uA的平均功耗,还能接收数据吗?

当然不能,这个是定时唤醒后发数据的传感器电路,不需要接收数据。4uA是待机状态下的功耗。

GemEMD 发表于 2020-4-17 10:01

BitFu 发表于 2020-4-17 08:21
当然不能,这个是定时唤醒后发数据的传感器电路,不需要接收数据。4uA是待机状态下的功耗。 ...

那能接受数据的模式有没有试过?比如几秒钟醒来一次,看有没有数据发过来。没数据继续睡。这样能做到多少uA功耗呢

elecbugkage 发表于 2020-5-16 23:39

STM8L051 和一个SI4432模块,单独测试一下

ALISWANG 发表于 2020-5-19 21:29

梦幻泡影 发表于 2019-11-22 16:16
初始化完成以后,MCU进入低功耗模式,等待外部中断唤醒,射频芯片也进入睡眠,休眠时间越长,功耗越低。 ...

射频芯片进入休眠不怕丢信号吗,怎么处理的啊,求教,MCU外部中断唤醒响应时间来的及啊。

lisn3188 发表于 2020-5-19 21:48

定时醒来,会不会错过数据

梦幻泡影 发表于 2020-5-20 13:50

ALISWANG 发表于 2020-5-19 21:29
射频芯片进入休眠不怕丢信号吗,怎么处理的啊,求教,MCU外部中断唤醒响应时间来的及啊。 ...

这就要求发射机多发几次了,直到接收机有响应为止,一般发射机的能量是足够的,可以随便造

迈尔斯通 发表于 2022-5-6 13:16

LDO输出过冲导致的。建议采用迈尔斯通MST5433替代,最高耐压可达55V,高PSRR,低纹波,快响应,立创商城有售样。18362385793
页: [1]
查看完整版本: 请教SI4432的功耗问题