搜索
bottom↓
回复: 7

求助一个SI4432的丢失数据问题,大概丢失20%左右。

[复制链接]

出0入0汤圆

发表于 2012-8-5 16:22:39 | 显示全部楼层 |阅读模式
从淘宝上买了两个模块,使用STM32,一个发送一个接收。初始化程序是按照厂家给的例程写的。
每两秒发一次数据,接收端采用中断接收,将接收到得数据显示到屏幕上。
附初始化程序,看看各位大侠有没有遇到这样的问题,或者有好办法。
void Si4432_init(void)
{
        GPIO_SetBits(GPIO_Si4432,Si4432_nSEL);
        delay_ms(500);

        SPI_RW_Reg(Si4432_READ_REG + 0x03, 0x00);         //清RF模块中断       
        SPI_RW_Reg(Si4432_READ_REG + 0x04, 0x00);
       
        SPI_RW_Reg(Si4432_WRITE_REG + 0x06, 0x80);  //使能同步字侦测
        SPI_RW_Reg(Si4432_WRITE_REG + 0x07, 0x01);  //进入 Ready 模式
       
        SPI_RW_Reg(Si4432_WRITE_REG + 0x09, 0x7f);  //负载电容= 12P
//        SPI_RW_Reg(Si4432_WRITE_REG + 0x09, 0x64);         //根据云宝电子建议修改


        SPI_RW_Reg(Si4432_WRITE_REG + 0x0a, 0x05);  //关闭低频输出
        SPI_RW_Reg(Si4432_WRITE_REG + 0x0b, 0xea);  //GPIO 0 当做普通输出口
        SPI_RW_Reg(Si4432_WRITE_REG + 0x0c, 0xea);  //GPIO 1 当做普通输出口
        SPI_RW_Reg(Si4432_WRITE_REG + 0x0d, 0xf4);  //GPIO 2 输出收到的数据
        SPI_RW_Reg(Si4432_WRITE_REG + 0x70, 0x2c);                    
        SPI_RW_Reg(Si4432_WRITE_REG + 0x1d, 0x40);  //使能 afc         
       
        // 1.2K bps setting
        SPI_RW_Reg(Si4432_WRITE_REG + 0x1c, 0x16);  //滤波带宽设置
        SPI_RW_Reg(Si4432_WRITE_REG + 0x20, 0x83);   
        SPI_RW_Reg(Si4432_WRITE_REG + 0x21, 0xc0);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x22, 0x13);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x23, 0xa9);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x24, 0x00);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x25, 0x04);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x2a, 0x14);
        SPI_RW_Reg(Si4432_WRITE_REG + 0x6e, 0x09);
        SPI_RW_Reg(Si4432_WRITE_REG + 0x6f, 0xd5);                        
        //1.2K bps setting end               
       
        SPI_RW_Reg(Si4432_WRITE_REG + 0x30, 0x8c);  //使能PH+ FIFO模式,高位在前面,使能CRC校验
        SPI_RW_Reg(Si4432_WRITE_REG + 0x32, 0xff);  //byte0, 1,2,3 作为头码
        SPI_RW_Reg(Si4432_WRITE_REG + 0x33, 0x42);  //byte 0,1,2,3 是头码,同步字3,2 是同步字
        SPI_RW_Reg(Si4432_WRITE_REG + 0x34, 64);    //发射64个Nibble的Preamble
//        SPI_RW_Reg(Si4432_WRITE_REG + 0x35, 0x20);  //需要检测4个nibble的Preamble
        SPI_RW_Reg(Si4432_WRITE_REG + 0x35, 0x80);    //需要检测16个nibble的Preamble
        SPI_RW_Reg(Si4432_WRITE_REG + 0x36, 0x2d);  //同步字为 0x2dd4
        SPI_RW_Reg(Si4432_WRITE_REG + 0x37, 0xd4);
        SPI_RW_Reg(Si4432_WRITE_REG + 0x38, 0x00);
        SPI_RW_Reg(Si4432_WRITE_REG + 0x39, 0x00);         
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3a, 's');   //发射的头码为: “swwx"
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3b, 'w');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3c, 'w');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3d, 'x');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3e, 10);    //总共发射10个字节的数据
        SPI_RW_Reg(Si4432_WRITE_REG + 0x3f, 's');   //需要校验的头码为:”swwx"
        SPI_RW_Reg(Si4432_WRITE_REG + 0x40, 'w');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x41, 'w');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x42, 'x');
        SPI_RW_Reg(Si4432_WRITE_REG + 0x43, 0xff);  //头码1,2,3,4 的所有位都需要校验
        SPI_RW_Reg(Si4432_WRITE_REG + 0x44, 0xff);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x45, 0xff);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x46, 0xff);  //
        SPI_RW_Reg(Si4432_WRITE_REG + 0x6d, 0x07);  //发射功率设置  0x00:+0dBM  0x01:+3dBM  0x02:+6dBM  0x03:+9dBM  0x04:+11dBM  0x05:+14dBM  0x06:+17dBM  0x07:20dBM
        SPI_RW_Reg(Si4432_WRITE_REG + 0x79, 0x0);   //不需要跳频
        SPI_RW_Reg(Si4432_WRITE_REG + 0x7a, 0x0);   //不需要跳频
        SPI_RW_Reg(Si4432_WRITE_REG + 0x71, 0x22);  //发射不需要CLK,FiFo,FSK模式
        SPI_RW_Reg(Si4432_WRITE_REG + 0x72, 0x30);  //频偏为 30KHz
        SPI_RW_Reg(Si4432_WRITE_REG + 0x73, 0x0);   //没有频率偏差
        SPI_RW_Reg(Si4432_WRITE_REG + 0x74, 0x0);   //没有频率偏差
        SPI_RW_Reg(Si4432_WRITE_REG + 0x75, 0x53);  //频率设置 434
//        SPI_RW_Reg(Si4432_WRITE_REG + 0x76, 0x64);  //

//        SPI_RW_Reg(Si4432_WRITE_REG + 0x77, 0x00);
       
                 SPI_RW_Reg(Si4432_WRITE_REG + 0x76, 0x57);  //按照云宝电子例程修改

        SPI_RW_Reg(Si4432_WRITE_REG + 0x77, 0x80);
       
       
       
                       
        TX0_RX0;        // 天线开关不在发射,接收状态

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2012-8-5 16:30:31 | 显示全部楼层
补充一点。
丢失20%指的是,发送10次,能够正确接收8次左右。

出0入0汤圆

发表于 2012-8-8 14:58:20 | 显示全部楼层
engineer_hu 发表于 2012-8-5 16:30
补充一点。
丢失20%指的是,发送10次,能够正确接收8次左右。

这个丢应该是正常的吧,处理好丢,有重传的机制最好!

出0入0汤圆

发表于 2012-8-8 15:01:38 | 显示全部楼层
学习学习,我也刚好在淘宝买了SI4432模块,准备来弄。

出0入0汤圆

发表于 2012-8-11 20:32:39 | 显示全部楼层
,求总的源程序?

出0入0汤圆

发表于 2012-8-14 00:16:33 | 显示全部楼层
在吗、
QQ:1532460434  和你交流一下432吧!和你一样遇到了一些问题!!!!!!有兴趣的!!!!

出0入0汤圆

发表于 2012-8-14 00:33:21 | 显示全部楼层
求一下程序,分享一下吧!!!!

出0入0汤圆

发表于 2012-8-14 00:40:05 | 显示全部楼层
灵敏度太差,把灵敏度调好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 08:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表