Si4432无线芯片调试经验分享

发布者:神秘行者最新更新时间:2012-08-16 来源: 51hei关键字:Si4432  无线芯片  调试经验 手机看文章 扫描二维码
随时随地手机看文章

前段时间主要是搜集了一些si4432的资料,包括芯片手册,原理图,官方代码等。调试买到的模块,看能否接收到数据。对具体的配置以及工作模式的了解还不是很清楚。现总结如下:

Silicon Labs EZRadioPRO系列ISM频段无线芯片SI4432, 可工作在240-960MHZ频段范围内。最大输出功率可以达到+20DBm。外围可加入功率放大电路,以提高发送功率。

Si4432主要有关闭模式,挂机模式,发射模式和接收模式组成。关闭状态下可以降低功耗,各模式切换必须先进入挂起状态再切换。其中的挂机模式,给SPI寄存器地址07h赋予不同的值,又分为五种不同的子模式。待机模式,睡眠模式,传感器模式,预备模式,调谐模式。上电复位后,或者芯片由掉电状态退出后将默认进入预备模式。

Si4432数据传输方式主要有三种,FIFO模式,直接模式,和PN9模式。在 FIFO Mode 下,使用片内的先入先出堆栈区来发送和接收数据。对 FIFO 的操作是通过SPI 对 07H 寄存器的连续读或者写进行的。在FIFO Mode下,Si4432自动退出发送或者接收状态,当相关的中断信号产生,并且自动处理字头和CRC校验码。在接收数据时, 自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码。在直接收发模式下,Si4432如传统的射频收发器一样工作。PN9模式,在这种模式下的Tx数据是内部产生使用伪随机( PN9序列)位发生器。这种模式的目的是用作测试模式不断观察调制频谱,而不必负载/提供数据。

配置Si4432 模块是通过SPI 方式进行的,可配置为FIFO 方式和直接方式, 推荐Si4432 工作于 FIFO 收发模式,这种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高.不过网上评论说,这种模式没有直接模式传输的距离远。其中配置Si4432 主要包括载波频率、调制方式、数据发送速率、CRC 校验、前导码、 同步字、数据头、地址等,具体可参考 Si4432(IA4432) RegisterSettings_RevV-v16 寄存器配置工具进行。

至于si4432是否带远程无线唤醒,看了半天手册也没找到。不过,网上的一位网友说:“以前产品用的是CC1100,确实出现近距离通信不正常的问题,空旷地带<150M(FSK,9.6k/s,433M,WOR休眠侦听通信方式),距离不够;然后改用CC1101+PA,但是瞬间发射电流>300mA,由于我们是电池供电,功耗太大了。 后来通过商家介绍用SI4432,前几天简单测试了下通信距离>330M(433M,40K/S,GFSK),可能更远的距离还行,就没测试了,下个星期再做详细测试。 对于现在的使用情况,个人觉得他们各有优点。CC1101的特点具有自动无线侦听,可以实现电磁波唤醒功能,但是通信距离不够;而SI4432通信距离不错,且内部自带PA,可以达到+18dB,发射电流在60mA左右。但不具备无线唤醒这样的功能,只能依*自身的定时器,配合单片机来实现电磁波唤醒功能,这样一来对MCU的稳定性要求就相当高。”

Si4432的寄存器操作:

Si4432共有128个寄存器(O一127),它们控制芯片的工作和记录芯片的状态。可通过SPI对它们进行访问。SPI的it顺序是可配置的,其缺省配置(MSB在前)与MCU的顺序相同。命令格式为2字节结构:读/写标志(1 bit,0—读,l一写),寄存器地址(7 bit)+待写数据(对于读操作,该值也必须有,只是可为任意值)。每次可以读写1/多(burst)个字节,它们是由时钟信号决定的,在读写一个字节后,如果时钟继续有效,那么,地址将会自动加1,接下来的操作将是对下一个寄存器的读写。通过Silicon Labs提供的WDS(Wirelessevelopment Suit)可访问这些寄存器并可生成相应的初始化代码。只能在空闲状态下对寄存器进行初始化,否则,可能会出现意外的结果。为了提高传输信号的质量,增大发射距离,保证数据的可*传输,系统使能数据白化、曼彻斯特Manchester)编码、CRC校验和采用GFSK调制。

状态机:

关闭(shutdown)和空闲(idle)状态称为低功耗状态,而idle又可细分为5个不同的子状态,它们在低功耗下完成各种与无线数据收发无关的操作。发送(Tx)和接收(RX)状态称为激活状态,它们完成无线数据的收发。除了关闭状态外(只能通过MCU的I/O脚来设置),其余状态都可以通过SPI接El进行设置和读取。可通过寄存器07h实现状态的切换,这种切换表现在两个方面:1)当设置其中的某一位时,状态立即发生切换;2)在完成收发任务后,决定返回到idle状态的哪一个子状态(在本系统中为休眠状态,即设置enwt=1)。可通过02h寄存器获取当前的状态。芯片的常态为idle,为了保证不漏收数据,可利用唤醒定时器来定时唤醒芯片进入融状态(此时要设置08h寄存器中的enldm位为l,并设置定时常数寄存器14h和19h中的值),在确认没有数据/收完数据后再返回到原来的idle子状态。

用普通51单片机 IO 口模拟SPI:

SPI读操作函数:

unsigned char SPI_Read(void)

{

 

     unsigned char i,rxdata;

     rxdata = 0x00;

     for (i = 0;i < 8;i++)

     {

           rxdata = rxdata<<1;

           RF4432_SCLK=0;

           if (RF4432_SDO==1)  //读取最高位,保存至最末尾,通过左移位完成整个字节

           {

                rxdata |= 0x01;

           }

           delay_10us(2);  

           RF4432_SCLK=1;

           delay_10us(2);  

      }

      return rxdata;

 

}

SPI写操作函数:

void SPI_Write(unsigned char txdata)

{

     unsigned char i;

     for (i = 0;i < 8;i++)

     {

           RF4432_SCLK=0;

           if ((txdata&0x80)==0x80)    //总是发送最高位

           {

           RF4432_SDI=1;

           }

           else

           {

         RF4432_SDI=0;

           }

           txdata = txdata<<1;

           delay_10us(2);  

           RF4432_SCLK=1;

           delay_10us(2);  

     }

}

RF4432 寄存器读操作函数:

unsigned char  RF4432_ReadReg(unsigned char  addr)

{

     unsigned char value;

     RF4432_SEL=0;                 

     SPI_Write(addr|RR);     

     value = SPI_Read();         

     RF4432_SEL=1;        

     return value;

}

RF4432 寄存器写操作函数:

void  RF4432_WriteReg(unsigned char  addr, unsigned char value)

{

     RF4432_SEL=0;                 

     SPI_Write(addr|WR);     

     SPI_Write(value);         

     RF4432_SEL=1;                

}

SI4432寄存器定义:

#define DEVICE_TYPE                                     0x00

#define DEVICE_VERSION                             0x01   //版本号

……

参考附件。


RF4432
射频芯片初始化函数,RF4432 设置接收模式函数, RF4432 数据包接收函数, RF4432 数据包发送函数等。参考文档:si4432模块使用手册.pdf。这些附件我整理了一个压缩包http://www.51hei.com/f/452de.rar 大家可以去下载.

网上搜到的程序代码以及官方提供的代码大都是基于Silicon Labs的c8051f单片机的,虽然都是51核的,但编程环境以及运行速度都是不一样的,不能直接拿来在普通51上运行,得稍作修改。目前完成了基于普通51单片机的三份代码修改。一份是官方的,一份是买模块时送的,一份是网上找来的。网上还有一份基于pic单片机的源码,但看了后感觉跟官方的差不多,没去修改。修改后在51开发板上可以运行了。但是其中一个模块不能工作,没法看到效果。具体能否接收还不确定。因此,也就停留在了这个地方。可以通过串口观察到一些信息,比如初始化完成后产生低电平的NIRQ中断,以及发送完成后也产生低电平的NIRQ中断,程序片段

RF4432_Init()

{

        ……

while ( RF4432_IRQ== 1); //等待软复位完成,当软复位完成后有中断发生

…….

}

UART_Send_Str("RF芯片si4432初始化完毕....\n");//串口发送调试信息

正常初始化完毕后通过串口会看到语句“RF芯片si4432初始化完毕....”,否则停留在while ( RF4432_IRQ== 1); 看不到串口输出的信息。但只有一个模块发送,一个模块接收,观察到接收模块收到了数据才能证明调试是没问题的。

关键字:Si4432  无线芯片  调试经验 引用地址:Si4432无线芯片调试经验分享

上一篇:ICL7135(4位半双积分AD)驱动程序备份
下一篇:用户函数库之循环移动函数

推荐阅读最新更新时间:2024-03-16 13:05

传博通拟100亿美元出售无线芯片业务,意欲何在?
苹果公司长期芯片供应商博通正考虑出售其无线芯片业务,这笔交易的价值可能高达100亿美元,并可能对未来的iPhone和其他苹果产品产生影响…… 据外媒报道,博通(Broadcom)正考虑出售旗下射频部门,该部门是博通无线芯片业务的一部分,主要生产用于手机信号净化的过滤器。博通出售旗下射频部门的举动将加速该公司从一家半导体制造商转型。 报道称, 作为苹果长期芯片供应商的博通,正在与瑞士信贷集团(Credit Suisse Group)合作,为其射频(RF)部门寻找潜在买家。作为其更广泛无线芯片业务的一部分,RF部门生产薄膜体声谐振器(FBAR)滤波器来滤除无用信号和噪声干扰,是iPhone等智能手机中使用的常见组件。
[嵌入式]
传博通拟100亿美元出售<font color='red'>无线</font><font color='red'>芯片</font>业务,意欲何在?
基于无线通信芯片的多路消防栓无水监测系统设计
消防给水系统是火灾控制重要设备,它能否正常发挥作用关系着人们的生命财产安全。但在实际应用中,常出现消防栓被遮掩、水压低等情况,更严重的是阀门误操作或管道漏水造成消防栓无水。一旦发生火灾,打开消防栓龙头无水,消防人员和群众无法及时扑灭火灾,会使火灾严重程度升级,造成生命财产重大损失。为此,不但要建设一个完善的消防给水系统,更重要是要确保该系统的正常运行,有一个正常的给水压力。针对这种情况,本文设计介绍一种消防给水系统水压是否正常的检测系统,用于检测消防给水系统水压是否正常,并给出显示和报警。 1 系统组成 该系统由微机、通信处理模块、单片机消防栓信息采集模块等三大部分组成。系统的组成如图1所示。 上位机由PC机
[单片机]
基于<font color='red'>无线</font>通信<font color='red'>芯片</font>的多路消防栓无水监测系统设计
ARM ADS中的AXD 调试经验集锦
1,怎么设置AXD连接的Target。 在菜单的Configure Target…选项中能设置。一般选择MutiIce或ARMUL两种。 ARMUL是一种ARM的模拟器。一般的算法或一些无需和硬件中断等设备打交道的程式都能通过这个进行调试。使用上非常简单。 我们一般上板子进行调试都是通过MutiICE来进行。在刚刚安装了系统的时候,菜单中没有MutiICE,需要我们手动添加: 点击ADD按钮,然后在弹出的文件浏览中,选择“C:\Program Files\ARM\Multi-ICE\Muti-ICE.dll”(默认安装的话)。然后点击“确定”。这样就把MutiICE的调试接口安装上了。 2,怎么保存当前的调试现场。 我们在调试过程
[单片机]
IDT 推出业界唯一的预处理交换芯片,增强下一代无线基础设施效能
具备一系列创新预处理功能的 优化互连解决方案使数字信号处理器性能提升 20% IDT TM 公司( Integrated Device Technology, Inc. ;纳斯达克上市代号: IDTI )推出用于数字信号处理器( DSP )集群的、业界唯一现成的预处理交换( PPS )芯片,再次彰显其在为无线基础设施设计提供半导体解决方案方面的领先地位。 IDT 预处理交换芯片( PPS, pre-processing switch )专为无线基带处理应用设计,采用串行 RapidIO ( sRIO )互连,是一种先进的半导体解决方案,集成了一套创新字节级和信息包级处
[新品]
基于Si4432散射式大气低能见度仪电路设计
  本文针对能见度检测仪实际应用中功耗、实时性、扩展兼容性和成本等问题,提出了一款基于Si4432散射式大气低能见度仪的设计方案。设计方案中根据测量前向散射光强度为能见度检测原理,以Cortex-M3及RTOS 设计的嵌入式控制系统实现数据读取、处理及系统管理,预警数据采用三种输出模式。场外实验表明样机的功能和性能均达到了设计要求,误差控制在20%内,具有较强的实用性。    以Cortex-M3架构微处理器为核心的控制系统硬件实现   系统控制和数据处理部分采用基于ARM Cotex-M3内核架构的LPC17xx系列微处理器为核心的硬件平台。LPC17xx 系列具有较高的运行速度和丰富的外设接口,满足系统低成本、低功耗、高性能
[电源管理]
基于<font color='red'>Si4432</font>散射式大气低能见度仪电路设计
基于SI4432的高性能无线收发应用平台设计
近些年来,随着集成电路技术的发展,ISM频段单芯片的无线数据通信IC的性能日益提高,短距离无线应用领域也在不断地扩大,其中包括消费电子、工业控制、安防、自动抄表等诸多领域。数据的无线收发在无线产品设计中占有很大的比重。为缩短产品设计周期以及提高产品的稳定性,使产品设计工程师在设计过程中只需关注系统应用的设计,而将数据收发交付一种成熟稳定的收发系统来完成。为此,本文设计了一种基于SI4432+STM32F103的高性能无线收发平台。 1 STM32F103和SI4432芯片简介  STM32系列是采用ARM CortexTM-M3 内核的闪存微控制器,所有功能都具有业界最优的功耗水平。在结合了高性能(最高72 MHz频率)、低功耗(
[嵌入式]
英特尔年内将批量生产新一代WiMAX芯片
据熟悉英特尔公司产品规划的市场知情人士透露,英特尔公司计划从今年年底开始批量生产第二代WiMAX芯片Rosedale 2以及WiFi/WiMAX双模芯片Ofer-R。 知情人士称,英特尔公司已经开始向客户们提供Rosedale 2芯片样品了。这种Rosedale 2芯片支持802.16e-2005移动WiMAX标准,首先它将被用于笔记本电脑和小型计算机,然后预计到2008年的时候才会被应用到其他的消费电子产品中,比如各种便携设备。 然而,一方面现有的WiMAX基础设施还相对不足,另一方面各种WiMAX设备的生产成本依然较高,所以英特尔公司仅仅把WiMAX功能作为其新一代Santa Rosa集成无线平台上的一个可选功能。市场知情人
[焦点新闻]
应用于手机的TD-SCDMA无线芯片集框图
  中国对3G蜂窝电话的选择是TD-SCDMA系统。本文列出了一个详细的手机收发信机框图,其中,MAX2361作为发射机集成电路,MAX2291作为功率放大器(PA),MAX2388和MAX2309构成接收器,一个VCO缓冲放大器提供良好隔离性能以保持一个无干扰的LO信号。    引言   TD-SCDMA是目前在中国发展起来的第三代(3G)蜂窝电话标准。1999年11月,TD-SCDMA标准被国际电信联盟采纳为3GPP移动通讯标准之一。   为了增加信道容量、改善带宽效率,TD-SCDMA通过利用上行链路(反向链路)同步、软件无线电和智能天线的技术将时分双工(TDD)与CDMA结合起来。   在手机的射频部分,TD-SC
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved