打印
[无线通信]

SI4432调试问题

[复制链接]
10737|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aisiyuan|  楼主 | 2013-7-22 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近我一直在用stm32与si4432结合完成通信功能,用的是STM32的硬件SPI,调试了几天,终于发现能进行基本的收发功能,但很激动,但是总有一些数据在发送后,接收端的数据并不能完全一致,举例子来说明发送端发送0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 九个数据,但是在接收端收到的是 0x60 0x62 0x63 0x64 0x65 0x66 0x66 0x68 0x69 ,个别数据会减一,总是找不出原因来,哪位大侠可以指点一下,原因是spi通信问题还是SI4432初始化问题呢?一直找不出!我现在付出我的初始化代码:
void Si4432_init(void)
{  

   unsigned char a=0;
/*******************************************************
     新增加的软件复位  
*******************************************************/
        SPI_RW_Reg(WRITEREG + 0x07,0x80); //向0X07地址  写入0X80  软件复位
         while ( NIRQ == 1);      
  
   
        a=SPI_RW_Reg(READREG + 0x03, 0x00);         //清RF模块中断       
                //USART_SendData(USART1,a);
                //        delay_ms(10);
        a=SPI_RW_Reg(READREG + 0x04, 0x00);
         // USART_SendData(USART1,a);
                    //        delay_ms(10);
        SPI_RW_Reg(WRITEREG + 0x06, 0x80);  //使能同步字侦测
        SPI_RW_Reg(WRITEREG + 0x07, 0x01);  //进入 Ready 模式
       
        SPI_RW_Reg(WRITEREG + 0x09, 0x7f);  //负载电容= 12P
        SPI_RW_Reg(WRITEREG + 0x0a, 0x05);  //关闭低频输出
        SPI_RW_Reg(WRITEREG + 0x0b, 0xea);  //GPIO 0 当做普通输出口        配置成了直接数字输出
        SPI_RW_Reg(WRITEREG + 0x0c, 0xea);  //GPIO 1 当做普通输出口
        SPI_RW_Reg(WRITEREG + 0x0d, 0xf4);  //GPIO 2 输出收到的数据
        SPI_RW_Reg(WRITEREG + 0x70, 0x2c);  //会使能曼切斯特反演.
        SPI_RW_Reg(WRITEREG + 0x1d, 0x40);  //使能 afc
       
        // 1.2K bps setting
        SPI_RW_Reg(WRITEREG + 0x1c, 0x16);  //滤波器带宽  发射16个Nibble的Preamble  
        SPI_RW_Reg(WRITEREG + 0x20, 0x83);  //时钟恢复过抽样率
        SPI_RW_Reg(WRITEREG + 0x21, 0xc0);  //
        SPI_RW_Reg(WRITEREG + 0x22, 0x13);  //
        SPI_RW_Reg(WRITEREG + 0x23, 0xa9);  //
        SPI_RW_Reg(WRITEREG + 0x24, 0x00);  //
        SPI_RW_Reg(WRITEREG + 0x25, 0x04);  //
        SPI_RW_Reg(WRITEREG + 0x2a, 0x14);
  /***************发射波特率的选择*******************/
        SPI_RW_Reg(WRITEREG + 0x6e, 0x09);
        SPI_RW_Reg(WRITEREG + 0x6f, 0xd5);
        //1.2K bps setting end               
       
        SPI_RW_Reg(WRITEREG + 0x30, 0x8c);  //使能PH+ FIFO模式,高位在前面,使能CRC校验
        SPI_RW_Reg(WRITEREG + 0x32, 0xff);  //byte0, 1,2,3 作为头码
        SPI_RW_Reg(WRITEREG + 0x33, 0x42);  //byte 0,1,2,3 是头码,同步字3,2 是同步字
        SPI_RW_Reg(WRITEREG + 0x34, 16);    //发射16个Nibble的Preamble
        SPI_RW_Reg(WRITEREG + 0x35, 0x20);  //需要检测4个nibble的Preamble
        SPI_RW_Reg(WRITEREG + 0x36, 0x2d);  //同步字为 0x2dd4
        SPI_RW_Reg(WRITEREG + 0x37, 0xd4);
        SPI_RW_Reg(WRITEREG + 0x38, 0x00);
        SPI_RW_Reg(WRITEREG + 0x39, 0x00);
        SPI_RW_Reg(WRITEREG + 0x3a, 's');   //发射的头码为: “swwx"
        SPI_RW_Reg(WRITEREG + 0x3b, 'w');
        SPI_RW_Reg(WRITEREG + 0x3c, 'w');
        SPI_RW_Reg(WRITEREG + 0x3d, 'x');
        SPI_RW_Reg(WRITEREG + 0x3e, 10);    //总共发射10个字节的数据
        SPI_RW_Reg(WRITEREG + 0x3f, 's');   //需要校验的头码为:”swwx"
        SPI_RW_Reg(WRITEREG + 0x40, 'w');
        SPI_RW_Reg(WRITEREG + 0x41, 'w');
        SPI_RW_Reg(WRITEREG + 0x42, 'x');
        SPI_RW_Reg(WRITEREG + 0x43, 0xff);  //头码1,2,3,4 的所有位都需要校验
        SPI_RW_Reg(WRITEREG + 0x44, 0xff);  //
        SPI_RW_Reg(WRITEREG + 0x45, 0xff);  //
        SPI_RW_Reg(WRITEREG + 0x46, 0xff);  //
        SPI_RW_Reg(WRITEREG + 0x6d, 0x07);  //发射功率设置  0x00:+0dBM  0x01:+3dBM  0x02:+6dBM  0x03:+9dBM  0x04:+11dBM  0x05:+14dBM  0x06:+17dBM  0x07:20dBM
        SPI_RW_Reg(WRITEREG + 0x79, 0x0);   //不需要跳频
        SPI_RW_Reg(WRITEREG + 0x7a, 0x0);   //不需要跳频
        SPI_RW_Reg(WRITEREG + 0x71, 0x22);  //发射不需要CLK,FiFo,FSK模式   
        SPI_RW_Reg(WRITEREG + 0x72, 0x30);  //频偏为 30KHz
        SPI_RW_Reg(WRITEREG + 0x73, 0x0);   //没有频率偏差
        SPI_RW_Reg(WRITEREG + 0x74, 0x0);   //没有频率偏差
        SPI_RW_Reg(WRITEREG + 0x75, 0x53);  //频率设置 434
        SPI_RW_Reg(WRITEREG + 0x76, 0x64);  //
        SPI_RW_Reg(WRITEREG + 0x77, 0x00);
        TX0_RX0;        // 天线开关不在发射,接收状态
}

相关帖子

沙发
aisiyuan|  楼主 | 2013-7-22 14:39 | 只看该作者
好伤心啊!!!第一次发帖竟然没有人理我!!!

使用特权

评论回复
板凳
wushizhch22| | 2013-7-22 14:58 | 只看该作者
我来理你,但是请原谅,我不会~

使用特权

评论回复
地板
Byron_njit| | 2013-7-26 14:08 | 只看该作者
请问下,楼主解决了没有啊??我先出现了这个问题。最后一位貌似有时会丢失了!!

使用特权

评论回复
5
aisiyuan|  楼主 | 2013-7-28 00:27 | 只看该作者
Byron_njit 发表于 2013-7-26 14:08
请问下,楼主解决了没有啊??我先出现了这个问题。最后一位貌似有时会丢失了!! ...

我现在是这种情况:当发送的是 ‘1’ ‘5’ ‘9’‘a‘ ’e‘ ’i‘ ’m‘ ’q‘ ’u‘ ’y‘,接收到的数据会变成'0'4'8''d''h'l'p't'x'这是什么原因啊!我也是找不到!

使用特权

评论回复
6
aisiyuan|  楼主 | 2013-7-28 22:03 | 只看该作者
wushizhch22 发表于 2013-7-22 14:58
我来理你,但是请原谅,我不会~

呵呵 还是谢谢支持!

使用特权

评论回复
7
aisiyuan|  楼主 | 2013-7-28 22:04 | 只看该作者
Byron_njit 发表于 2013-7-26 14:08
请问下,楼主解决了没有啊??我先出现了这个问题。最后一位貌似有时会丢失了!! ...

我找到原因了,原来是SPI通信的问题,SPI初始化有问题,

使用特权

评论回复
8
Byron_njit| | 2013-7-29 10:12 | 只看该作者
aisiyuan 发表于 2013-7-28 22:04
我找到原因了,原来是SPI通信的问题,SPI初始化有问题,

SPI初始化?还是芯片初始化有问题?谢谢!!

使用特权

评论回复
9
RF-7| | 2013-8-9 22:02 | 只看该作者
用了一年多了这个IC很好用的。楼主的初始化不够简洁。

使用特权

评论回复
10
aisiyuan|  楼主 | 2013-8-19 22:04 | 只看该作者
Byron_njit 发表于 2013-7-29 10:12
SPI初始化?还是芯片初始化有问题?谢谢!!

SPI初始化问题!STM32有四种SPI通信,我选错了!

使用特权

评论回复
11
aisiyuan|  楼主 | 2013-8-19 22:07 | 只看该作者
RF-7 发表于 2013-8-9 22:02
用了一年多了这个IC很好用的。楼主的初始化不够简洁。

请问我现在初始化芯片用的是1.2Kbps的通信速率,我改用9.6的速率总是不通过,产生乱码,请问我改用9.6KD的速率我要改哪几个寄存器,我只改了 SPI_RW_Reg(WRITEREG + 0x6e, 0x09); SPI_RW_Reg(WRITEREG + 0x6f, 0xd5);这两个寄存器的值,这样改后不成功,请问我要改几个寄存器的值!

使用特权

评论回复
12
RF-7| | 2013-9-4 20:01 | 只看该作者
aisiyuan 发表于 2013-8-19 22:07
请问我现在初始化芯片用的是1.2Kbps的通信速率,我改用9.6的速率总是不通过,产生乱码,请问我改用9.6KD ...

9600BPS的话应该改成TDR1, TDR0,对应该0x4e, 0xa5,的吧,最好还要修改IFBW寄存器为0x1E。你说的产生乱码就不太可能了,如果你启用了CRC功能的话。

使用特权

评论回复
13
lbc___| | 2013-9-9 21:29 | 只看该作者
楼主si4432通信距离能到多远?

使用特权

评论回复
14
TCL| | 2013-9-11 23:20 | 只看该作者
1w的SI4432在25K的空中速率直视下可以稳定的穿1000M(实测的)

使用特权

评论回复
15
TCL| | 2013-9-11 23:21 | 只看该作者
现在调SI4432的人多吗?我刚搞好.有问题可以问我


使用特权

评论回复
16
TCL| | 2013-9-11 23:23 | 只看该作者
SI4432的SPI读写速率可以在4M下稳定工作(实验3天了)

使用特权

评论回复
17
TCL| | 2013-9-11 23:26 | 只看该作者
楼主的问题应该判断SI4432的CRC是否错误?正确的话应该误读数据,不是发射的问题

使用特权

评论回复
18
RF-7| | 2013-9-15 21:38 | 只看该作者
TCL 发表于 2013-9-11 23:20
1w的SI4432在25K的空中速率直视下可以稳定的穿1000M(实测的)

SI4432用什么方案可以做到1W的,在433M时。

使用特权

评论回复
19
goodmasher| | 2013-9-29 23:29 | 只看该作者
lbc___ 发表于 2013-9-9 21:29
楼主si4432通信距离能到多远?

Si4432 功率开到17dBm, 用2dBi天线,通迅距离空旷处可达1600多米,这是我实测的。

使用特权

评论回复
20
lessonwill| | 2014-2-9 01:54 | 只看该作者
我也遇到这个问题,改这里就好了:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝