[原创] 一个有关SI4432芯片实际发射时间的问题,请大家指点,谢...

zb213015   2012-5-31 15:33 楼主
一个多月前,开始使用STM8L151 +SI4432无线模块做一个温度采集的实验,使用3.3v电池供电。
基本功能完成后,待机电流3.8uA。所以开始下工夫优化程序,逐步降低发射时的电流消耗,于是就产生了以下问题。。。

按照SI4432的描述和一般的经验,无线发射一个数据报的时间,从启动芯片发射到SI4432芯片nIRQ返回给STM8L单片机下降沿中断, 应该和数据报的长短和发射速率(flying speed)有关,
理论上应该是:    TX_time = 所有数据位的数量 / TX_speed;  例如发射100bit时, 如果 TX_speed =10Kbps. 则需要耗时10ms;

我做了以下测试:
      电路板上有一个LED指示灯,我在程序中:
             点亮LED指示灯,此时控制脚(示波器通道1输入低电平0V);
             单片机控制无线模块发送数据报,等待发送完成(由SI4432的nIRQ引脚下降沿来触发CPU的外部中断);
             熄灭LED指示灯,此时控制脚(示波器通道1输入高电平3.3V)
      使用示波器查看LED控制引脚的低电平宽度, 就可以认为这个时间是数据报的发射时间!

到这里,我想大家可以理解,这些都没有问题吧?!
继续:
     为了省电,又为了兼顾接收灵敏度,我测试不同发射速率下,同一数据报的发射时间, 就是测量LED控制引脚的低电平时间。
     测试前提,使用同一个程序,不同次测试中,仅仅更改一个参数,就是发射速率,当然,涉及的寄存器还是比较多的,反正按照SI4432芯片的自动参数设置文档生成的寄存器参数来设置,相信这个大家都知道!
     
     测试结果:        【为了描述简洁,这里仅仅列出2种速率的测试结果,我时间测试了1.2K、2.4K, 4.8K. 9.6K. 19.2K, ... 250K所有的速率】
               
             我的应用数据报文的长度是 51字节;
              实际发射数据 5字节引导码 +2字节同步 +4字节帧头 +1字节长度 +51字节数据 +2字节CRC =65字节
             
        SI4432发射速率                实际测量发射需要时间                芯片发射时间理论值                              实际测量时间值 和 理论值的差值
        25 Kbps                        27.0ms                        65字节 *8bit /25Kbps        =20.8ms            27.0-20.8 =6.2ms
        125 Kbps                        5.88ms                        65字节 *8bit /125Kbps        =4.16ms            5.88 -4.16 =1.72ms
   
      这里问题开始显现! 为何25Kbps 和 125Kbps 下 实际发射测量时间 和 理论发射时间的 差值不一样呢?
      由于使用同一个程序,都是中断等待发射完成的,所以这个差值应该一样啊!? 这个差值是啥呢? 程序的延时, 测量的误差,芯片发射前的启动时间? ....  
         不管这个差值是如何由于我的测量的不完备性导致的,  但是有一点是肯定的, 这个时间不应该和发射速率有关, 在相同测试条件下,应该是一个常数! 对吗?

我在多次测量和分析的基础上,提出一个假设: SI4432芯片在发射数据报文时, 还附带发射了124bit左右的“冗余位”!
      
      验证我的假设:
          如果芯片存在124bit(具体多少位不定?这里假设124) "冗余位",则芯片发射时间计算值:
        25K发射                (65字节 *8bit +124bit) /25K =        (520+124)bit /25kbps  =25.76ms
        125K发射                        (65字节 *8bit +124bit) /125K =        (520+124)bit /125kbps =5.152ms
        这样,实际测量时间值 和 理论值的差值 :
                25Kbos      27.0 - 25.76 =1.24ms          ;测量误差 1.24-0.728 大约0.5ms
                125kbps    5.88 -  5.15w =0.728ms
       现在按照冗余位存在124bit的情况分析测量结果,测量误差 0.5ms , 考虑到两次测量时间时,示波器分度值设置不同,
        25Kbps下使用5ms, 125Kbps下使用1ms, 在5ms分度下0.5ms测量误差是合理的!

     反证:
          按照厂家说明,不存在"冗余位"发射时,测量发射时间的理论值应该是:
              25Kbps                20.8ms         +程序延时时间t, 测量值27.0ms =20.8ms + t(6.2ms)        【1】
              125bps                4.16ms  +程序延时时间t, 测量值5.88ms =4.16ms + t(6.2ms左右)【2】
              如果【1】式成立,可以明显看出【2】式不能成立,这样也反证厂家说明不成立!

以上问题已经和上海和新华龙的FAE交流过了,但是他们都认为是我的问题,理由很充分:
                “我们从没有接到该问题的报告”
                “SI4432芯片出货几百K了,有这个问题,咋可能。。。”
               。。。。

到此,有的朋友会说,这个不是大问题,即使如我所说的那样,反正不影响使用!

我不这样认为,理由如下:
          如果存在“冗余”发射时间的话,问题很严重!
          我们都知道,传输效率 = 有效数据长度 /无线传输总长度;
         SI4432芯片的FIFO最大64字节,则有效载荷最大64字节, 则:
              发射64字节时, 效率 =64 /(64 +5字节引导码 +2字节同步 +4字节帧头 +1字节长度  +2字节CRC +124bit/8bit) =64 / (64 +13  +15.5) =69.1%
              发射32字节时, 效率 =32/(32 +13 +15.5) = 52.8%
             发射16字节时, 效率 =16/(16 +13 +15.5) = 35.9%
         
        也许你反驳,你可以减少帧头长度,不使用CRC来减少发射时间, 降低功耗 !!
         
        那如果数据报文长度8~16字节(平均12字节),这个是一般温湿度采集常用的数据长度, 不使用帧头,报文长度和CRC,
        则效率   = 12 / (12 +  5字节引导码 +2字节同步 124bit/8bit) =12/(12 +7 +15.5) = 34.8%
        如果没有冗余位, 则效率   =12 /(12 +7) = 63.15%
      
这下你应该惊讶了吧! 如果有冗余位,我的电池耗电量要增加多少?!
       以12字节有效数据为例, 原来要发送 19字节,  现在要发送 34.5字节, 耗电量增加  15.5/19 = 81.6% ! 相当于几乎多耗费了一倍的电量!
最后说明:
             以上我的假设,希望大家拍砖和讨论! 更希望有SI4432芯片的朋友动手测试一下,来比较一下测试结果,谢谢!


  • 实验图片
  • 实验图片
  • 实验图片
  • 实验图片
  • 实验图片

回复评论 (3)

顶楼主,我最近也在做si4432的项目,不过刚入手,还没有深入。
lz的钻研精神值得尊敬。

你用的是长沙一家公司生产的无线模块吧,我用的也是。
几个月过去了,lz有什么新的进展吗?
点赞  2012-9-24 11:04
你试一下 电源串一个电流采样电阻 示波器测量这个采样电压的时间
这样测量发射电流到底持续了多少时间
这样测功耗最准确
看看是否还是有你说的多出的124bit的时间 如果有那可能就是了
点赞  2016-5-27 17:02
路过…………
点赞  2016-10-21 08:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复