搜索
bottom↓
回复: 52

SI4432太郁闷了!!!

[复制链接]

出0入0汤圆

发表于 2009-9-7 15:48:08 | 显示全部楼层 |阅读模式
调了两星期了还是不能用,今天才发现原来就没发出有效引号,以前一直看RSSI位为一以为是收到信号了。今天把发射端断电结果还是1才发现原来是假的。这个东西用起来太郁闷了。官方给的例程都不想看。还没有写的精简一点的。我只需要一个最基本的能通信的就足够了。功能多的倒成麻烦了。

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出1070入962汤圆

发表于 2009-9-7 15:54:42 | 显示全部楼层
我也是这样郁闷痛苦着过来的,给你一段例程,最简单的收发,这也是论坛上的兄弟救我于水深火热之中时给我的。


void IA4432_Init(void)
{
        IA4432_Register((REG_WRITE | OperatingFunctionControl1), 0x80);
        IA4432_Register((REG_WRITE | TXRampControl), 0x7F);
        IA4432_Register((REG_WRITE | AFCLoopGearshiftOverride), 0x00);
        IA4432_Register((REG_WRITE | FrequencyBandSelect), 0x53);           //set frequency
        IA4432_Register((REG_WRITE | NominalCarrierFrequency1), 0x4b);  //433HZ
        IA4432_Register((REG_WRITE | NominalCarrierFrequency0), 0x00);
        IA4432_Register((REG_WRITE | ModulationModeControl1), 0x00);                       
        IA4432_Register((REG_WRITE | ModulationModeControl2), 0x22);        //asynchronous mode  FSK

        IA4432_Register((REG_WRITE | HeaderControl2), 0x02);                        //no head; sync word 3 and 2
        IA4432_Register((REG_WRITE | HeaderControl1), 0x00);
        IA4432_Register((REG_WRITE | PreambleLength), 0x04);                          //2byte
        IA4432_Register((REG_WRITE | PreambleDetectionControl), 0x10);        //8bit
        IA4432_Register((REG_WRITE | SyncWord3), 0x2d);
        IA4432_Register((REG_WRITE | SyncWord2), 0xd4);
        //IA4432_Register((REG_WRITE | TransmitPacketLength), 0x40);
        IA4432_Register((REG_WRITE | DataAccessControl), 0x88);                //enable TX handling

        IA4432_Register((REG_WRITE | IFFilterBandwidth), 0x03);                //BW=90kHZ
        IA4432_Register((REG_WRITE | ClockRecoveryOversamplingRatio), 0xa1);
        IA4432_Register((REG_WRITE | ClockRecoveryOffset2), 0x20);
        IA4432_Register((REG_WRITE | ClockRecoveryOffset1), 0x4e);
        IA4432_Register((REG_WRITE | ClockRecoveryOffset0), 0xa5);
        IA4432_Register((REG_WRITE | ClockRecoveryTimingLoopGain1), 0x00);
        IA4432_Register((REG_WRITE | ClockRecoveryTimingLoopGain0), 0x36);
        IA4432_Register((REG_WRITE | TXDataRate1), 0x02);                                //9600BPS
        IA4432_Register((REG_WRITE | TXDataRate0), 0x75);
        IA4432_Register((REG_WRITE | FrequencyDeviation), 0x48);
        IA4432_Register((REG_WRITE | ClockRecoveryGearshiftOverride), 0x13);
        IA4432_Register((REG_WRITE | GPIO0Configuration), 0x1f);
        IA4432_Register((REG_WRITE | GPIO1Configuration), 0x12);                        //GPIO_1 TX state
        IA4432_Register((REG_WRITE | GPIO2Configuration), 0x15);                        //GPIO_2 RX state
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x02);
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x00);
        IA4432_Register((REG_WRITE | InterruptEnable1), 0x02);
}

void RF_R(unsigend char *d)
{
        unsigned char index,yyy,ttt;
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x02);
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x00);
        IA4432_Register((REG_WRITE | OperatingFunctionControl1), 0x05);
        while(1)
        {
                yyy = IA4432_Register((REG_READ | InterruptStatus1),0x00);
                if(yyy&0x02) break;
        }
        IA4432_Register((REG_WRITE | OperatingFunctionControl1), 0x01);
        ttt = IA4432_Register((REG_WRITE | ReceivedPacketLength), 0x00);
        for(index=0;index<tt;index++)
        {
                d[index]=IA4432_Register((REG_READ | FIFOAccess),0x00);
        }
}

void RF_T(unsigned char *d,unsigned char l)       
{
        unsigned char i;

        IA4432_Register((REG_WRITE | OperatingFunctionControl1), 0x01);
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x01);
        IA4432_Register((REG_WRITE | OperatingFunctionControl2), 0x00);

        IA4432_Register((REG_WRITE | InterruptEnable1), 0x00);                               
        IA4432_Register((REG_WRITE | InterruptEnable2), 0x00);                               

        IA4432_Register((REG_WRITE | TransmitPacketLength),l);
        for(i=0;i<l;i++)
        {
                IA4432_Register((REG_WRITE | FIFOAccess),*d);
                d++;
        }
       
        IA4432_Register((REG_WRITE | OperatingFunctionControl1), 0x09);
        IA4432_Register((REG_WRITE | InterruptEnable1), 0x04);                                //使能发送有效包中断
        while((IA4432_Register((REG_READ | InterruptStatus1), 0x00)&0x04)==0);
}

出0入0汤圆

 楼主| 发表于 2009-9-7 16:02:52 | 显示全部楼层
太感谢了。苹果猫救星啊!!!

出0入0汤圆

 楼主| 发表于 2009-9-7 16:48:28 | 显示全部楼层
哈哈。终于能收了。谢谢!

出0入0汤圆

发表于 2009-9-7 22:32:37 | 显示全部楼层
呵呵!Appcat 苹果猫要给版权费的哦!!!开玩笑了,哈哈。希望能帮到各位!!!

出1070入962汤圆

发表于 2009-9-7 22:54:36 | 显示全部楼层
楼主要请【4楼】 anna__xs 吃大餐哦,他才是这个代码的正主,我只是借花献佛。呵呵

出0入0汤圆

 楼主| 发表于 2009-9-8 08:16:30 | 显示全部楼层
哦。谢谢四楼的兄弟、真是帮大忙了。

出0入0汤圆

发表于 2009-9-8 09:12:20 | 显示全部楼层
呵呵,希望能帮到大家!!!努力把4432做好!

出0入0汤圆

发表于 2009-9-8 09:27:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-8 09:42:17 | 显示全部楼层
ppa8086xp你的项目进行的如何了?

出0入0汤圆

发表于 2009-11-13 15:53:30 | 显示全部楼层
上面几位做出来的大师们,帮帮我这个小弟吧,我的数据就是发布出去啊

出0入0汤圆

发表于 2009-12-21 19:03:19 | 显示全部楼层
看贴的大师请帮帮忙:我的邮箱:wfs08181@163.com
一、我的发射板频率设置是433点频,实际发射有很大误差约200K,而且波形顶端呈M型--带宽达200K;
二、Appcat苹果猫回帖内容很好,我想借用其中的收发程序段(RF-T/RF_R);发现IA4432_Register()函数无法找到:
在网上找到个很类似的SpiRfWriteAddressData,但是无返回值,对于RF-R执行不了;
void SpiRfWriteAddressData(uint8 address, uint8 d)
{
        RF_NSEL_PIN = 0;
        SpiWrite(address);
        SpiWrite(d);
        RF_NSEL_PIN = 1;
}
其中SpiWrite为:
void SpiWrite(uint8 spi_in)
{
        SPI1DAT = spi_in;                                        //write data into the SPI register
        while( SPIF1 == 0);                                        //wait for sending the data
        SPIF1 = 0;                                                        //clear interrupt flag
}

出0入0汤圆

发表于 2009-12-24 12:09:53 | 显示全部楼层
正好要用,按个印子

出0入0汤圆

发表于 2010-1-5 23:18:22 | 显示全部楼层
收藏先,等到了这一步直接拿出来用,谢了哈!

出0入0汤圆

发表于 2010-1-10 10:44:53 | 显示全部楼层
苹果猫的RF_R函数有点问题:
ttt = IA4432_Register((REG_WRITE | ReceivedPacketLength), 0x00);
改为:
ttt = IA4432_Register((REG_READ | ReceivedPacketLength), 0x00);

出0入0汤圆

发表于 2010-2-3 00:34:52 | 显示全部楼层
remark

出0入0汤圆

发表于 2010-3-9 10:10:41 | 显示全部楼层
哎, 我也正在做呀, 没有程序。。。

出0入0汤圆

发表于 2010-3-9 10:12:48 | 显示全部楼层
mark备用

出0入25汤圆

发表于 2010-3-9 10:22:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-10 23:30:06 | 显示全部楼层
这样的程序只能出庸品,不可能是上品,更不会是极品。 呵呵

出0入0汤圆

发表于 2010-3-11 08:55:21 | 显示全部楼层
回复【19楼】taishan
这样的程序只能出庸品,不可能是上品,更不会是极品。 呵呵
-----------------------------------------------------------------------
    是的,这个程序最多只是用来参考一下初始化流程,如果什么都想用现成的,而不仔细去阅读数据手册,应用文档,不可能做出好的产品。

出0入0汤圆

发表于 2010-3-11 09:03:42 | 显示全部楼层
另外,觉得调试痛苦的,一般是太猴儿急的,数据手册都没完整看一遍,更不用说阅读相关应用文档,然后就随便找些参考程序来调,出问题了又不知道问题在那里,然后茫然的到处查资料,不痛苦才怪。

    相信一句话,磨刀不误砍柴工,只有踏踏实实一步一步的走,才是正道,SI4432的文档写得是不怎么样,但是反复多看几遍,保证调试非常顺利。

出0入0汤圆

发表于 2010-6-25 08:56:08 | 显示全部楼层
怎么都没有完整的例子呀

出0入0汤圆

发表于 2010-6-29 11:37:13 | 显示全部楼层
我用的是这种http://item.taobao.com/item.htm?id=3357644114 ,这家老板还是很敬业
他这个设计上加了电子开关,不是直接4432内部IO控制收发,使用起来简单很多,很爽
4432速度40k时距离不是很远,得低波特率下还好点

出0入0汤圆

发表于 2010-6-29 12:30:24 | 显示全部楼层
M

出0入0汤圆

发表于 2010-6-29 12:32:47 | 显示全部楼层
M

出0入0汤圆

发表于 2010-6-30 08:04:21 | 显示全部楼层
有没有人用过SI4421呢?

出0入0汤圆

发表于 2010-6-30 08:45:43 | 显示全部楼层
回复【24楼】AKlove
我用的是这种http://item.taobao.com/item.htm?id=3357644114 ,这家老板还是很敬业
他这个设计上加了电子开关,不是直接4432内部io控制收发,使用起来简单很多,很爽
4432速度40k时距离不是很远,得低波特率下还好点
-----------------------------------------------------------------------
   晕,真能扯,这个射频开关,SI4432参考设计都要求加的,并且不带MCU,也敢要70,怎么不去抢。如果带MCU,已经写好程序的,这个还可以说说程序质量的好坏,或者带什么协议。仅仅一个硬件模块,看不出有多大的增值。

回复【27楼】JnzGoto
有没有人用过si4421呢?
-----------------------------------------------------------------------
   是SI4431么?SI4431跟SI4432程序都可以一样的,SI4421没有用过。

出0入0汤圆

发表于 2010-6-30 09:37:56 | 显示全部楼层
做个记号,最近也在研究433MRF选型跟协议。有没有什么建议呢,共同交流。谢谢!

出0入0汤圆

发表于 2010-6-30 10:26:16 | 显示全部楼层
回复【28楼】windy__xp 龙笑
-----------------------------------------------------------------------

是Si4421.
以后估计会大量用到这块芯片,来看看有没有人有同样的经验,做做功课。

出0入168汤圆

发表于 2010-6-30 10:45:59 | 显示全部楼层
回复【28楼】windy__xp  龙笑
-----------------------------------------------------------------------

你好,你的4432批量了么,效果怎么样?

出0入0汤圆

发表于 2010-7-14 23:18:39 | 显示全部楼层
回复【21楼】windy__xp 龙笑
    另外,觉得调试痛苦的,一般是太猴儿急的,数据手册都没完整看一遍,更不用说阅读相关应用文档,然后就随便找些参考程序来调,出问题了又不知道问题在那里,然后茫然的到处查资料,不痛苦才怪。
    相信一句话,磨刀不误砍柴工,只有踏踏实实一步一步的走,才是正道,si4432的文档写得是不怎么样,但是反复多看几遍,保证调试非常顺利。
-----------------------------------------------------------------------

这手册不错了,看看也是亚迅翻译的9E5,那一个乱

还有RDA的,中英文的同一个寄存器,都能给你翻译出2样来

出0入0汤圆

发表于 2010-11-29 15:49:33 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-1-5 15:59:45 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-1-5 20:17:05 | 显示全部楼层
不错

出0入0汤圆

发表于 2011-1-7 18:37:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-3 14:40:25 | 显示全部楼层
已经将手册看了两遍,感觉芯片还行

出0入0汤圆

发表于 2011-4-3 19:23:36 | 显示全部楼层
不是吧 楼上的兄弟 我也在看 交流下吧

出0入0汤圆

发表于 2011-8-5 20:09:30 | 显示全部楼层
数据手册我都读了好及遍了

出0入0汤圆

发表于 2011-8-5 20:20:34 | 显示全部楼层
IA4432_Register((REG_WRITE | ModulationModeControl2), 0x22); //asynchronous mode  FSK
有问题的呀看来还是在忽悠人的

出0入0汤圆

发表于 2011-12-25 15:12:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-25 15:28:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-27 00:07:23 | 显示全部楼层
mark~

出0入0汤圆

发表于 2011-12-27 00:21:53 | 显示全部楼层
今晚SI4432在STM32上使用硬件SPI测试通过,通讯一切正常,不过没有使用协议。。。。只是简单的写了个协议,测试通过。。。

出0入0汤圆

发表于 2011-12-27 16:21:20 | 显示全部楼层
关注

出0入0汤圆

发表于 2012-1-3 09:33:43 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2012-2-1 16:58:13 | 显示全部楼层
学习了

出0入0汤圆

发表于 2012-2-9 21:28:08 | 显示全部楼层
回复【46楼】_yuming
-----------------------------------------------------------------------

你好,我最近也在用STM32驱动SI4432,但程序一直调试不过,郁闷中啊,不知能否一睹你的代码?供小弟我学习下,感谢为先

出0入0汤圆

发表于 2012-2-9 21:29:52 | 显示全部楼层
回复【46楼】_yuming
-----------------------------------------------------------------------

我的邮箱是286518224@qq.com,希望得到您的帮助,谢谢!

出0入0汤圆

发表于 2012-2-16 11:05:18 | 显示全部楼层
回复【46楼】_yuming  
-----------------------------------------------------------------------

你好,不知能否借鉴你的基于STM32的SI4432无线模块收发调试程序?我最近刚接手这个,之前了解较少,比较郁闷啊,我的邮箱的是286518224@qq.com,希望得到你的帮助,谢谢哦

出0入0汤圆

发表于 2012-2-21 17:40:08 | 显示全部楼层
回复【31楼】eiglxl
-----------------------------------------------------------------------

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

本版积分规则

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

GMT+8, 2024-4-24 23:50

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

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