QQ2355892364的个人空间 https://www.eechina.com/space-uid-157723.html [收藏] [复制] [RSS]

博客

Si4432无线收发芯片介绍(远距离无线传输模块)资料

已有 663 次阅读2018-12-22 11:01

发现一篇非常不错的文章分享给各位小伙伴:
模块采用了Silicon Labs的Si4432作为无线收发芯片,是一块完整的、体积小巧的、低功耗无线收发模块。SI4432由Silicon公司09年推出的Silicon Labs EZRadioPRO系列ISM频段无线芯片之一,可工作在240-960 MHZ频段范围内,且最大输出功率可以达到+20DBm,这一定程度上满足了射频信号放大的开发难的问题。再最大功率设置条件下,开阔通信距离可达上千米。模块集成了所有射频相关功能和器件,用户不需要了解无线电的相关知识,就可以使用本模块轻易的开发出性能稳定可靠的无线相关产品。
SI4432本身通信距离在20dBm条件下,不超过1000米,在某些特殊应用中,需要更远距离,RFCSI4432A模块就是在原有SI4432模块外围电路的基础上设计入功率放大电路,以提高发射功率(发射功率高达33dBm(约2W),从而直接提升模块的通信距离(3000米以上),满足各种应用问题,让无线应用,距离不再是问题。
基本特点
频率范围: 240—960MHZ     
接收灵敏度:-115 dBm(波特率9.6Kbps) 
通讯波特率:1—128kbps   
最大发射功率:33dBm   
在关断模式下电流为:10nA   
在休眠模式下电流为: 300nA
FSK频偏可编程(15~240KHz)
接收带宽可编程(67~400KHz)
具有自动斜率控制功率放大器和频谱整形  
33dBm,发射能量强劲,空旷通讯距离3000米以上
SPI兼容的控制接口,低功耗任务周期模式,自带唤醒定时器 
片内集成电池低电量检测、温度传感器、电压调节器
典型主要应用
车辆监控、遥控、遥测、水文气象监控
无线标签、身份识别、非接触RF智能卡
小型无线网络、无线抄表、门禁系统、小区传呼
工业数据采集系统、无线232数据通信、无线485/422数据通信
小型无线数据终端、安全防火系统、遥控系统、生物信号采集
备注

VCC5引脚接电压范围为 4V到5V之间,推荐电压4.5V,不能在这个电压区间之  外。如果用普通干电池,推荐供电电压5.5V; 如果是锂电池供电,则供电电 压4.5V即可。注意:镍氢电池和干电池的特性不同,如果用镍氢电池的大于5V供电,会永久烧坏无线模块!而主要原因在于普通干电池内阻大,在模块工作在发射状态发射电磁波瞬间有150mA电流存在(实际由于我们内部电路放置有钽电容起到蓄水池的效果,所以瞬间电流变小),而干电池内阻分压高达到1V到2V不等,所以为保持正常工作,干电池需要供电电压5.5V,所以不推荐用干电池供电。推荐锂电池供电。一般说来,功率越大,对电源要求越高,如果是200W的大功率发射机,则对电源的要求更加严格,甚至对电源开关顺序都有严格要求,如果本身功率小,电流也比较小(<100mA)这个问题就表现得不明显。注意在布电源线的时候,要注意加钽电容,一般要>100uA,最好加470uF钽电容,以滤波和当存储电荷使用,尤其在使用了升压电路后,有些升压电路输出电流小于400mA,这个时候可以当着电量池使用,但也需要防止发射频率过高,池的电量入不敷出,可以通过适当延时(20ms)来避免。就可避免发生电量池透支现象。
2.VCC3.3 引脚的电压范围为1.9-3.6V 之间,不能在这个区间之外,如超过 3.6V 将会烧毁模块。推荐电压 3.3V 左右;
3.硬件没有集成SPI功能的单片机也可以控制本模块,用普通单片IO口模拟 SPI 时序进行读写操作即可;
4.模块接口采用标准2.54mmDIP插针,所有GND需要和系统电路的逻辑地连接起来;
5.与 51 系列单片机 P0 口连接时候,需要加 10K 的上拉电阻,与其余口连接不需要。其他系列的5V单片机,如AVR、PIC,请参考该系列单片机 IO 口输出电流大小,如果超过 10mA,需要串联2-5K电阻分压,否则容易烧毁模块! 如果是 3.3V 的MCU,可以直接和IO口连接。
模块电气参数
参数
数值
单位
芯片工作电压
1.8-3.6
V
运放工作电压
4.5-5
V
最大发射功率
33
dBm
最大数据传输率
128
kbps
温度范围
-40 to +85
典型灵敏度
-107(40kbps条件)
dBm
SI4432射频芯片初始化函数
void RF4432_Init(void)
{
    RF4432_SDN=0;     //允许RF4432工作
    delay_ms(20);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_1, 0x80);
//软件复位,详细请见P101页
    delay_ms(10);
    RF4432_ReadReg(INTERRUPT_STATUS_1);
    RF4432_ReadReg(INTERRUPT_STATUS_2);
    RF4432_WriteReg(INTERRUPT_ENABLE_1, 0x00);
    RF4432_WriteReg(INTERRUPT_ENABLE_2, 0x00);
    RF4432_WriteReg(IF_FILTER_BANDWIDTH, 0x8b);   
    RF4432_WriteReg( CLOCK_RECOVERY_OVERSAMPLING_RATIO, 0x2c);
    RF4432_WriteReg( CLOCK_RECOVERY_OFFSET_2, 0x20);
    RF4432_WriteReg( CLOCK_RECOVERY_OFFSET_1, 0x6d);
    RF4432_WriteReg( CLOCK_RECOVERY_OFFSET_0, 0x3a);
    RF4432_WriteReg( CLOCK_RECOVERY_TIMING_LOOP_GAIN_1, 0x00);
    RF4432_WriteReg( CLOCK_RECOVERY_TIMING_LOOP_GAIN_0, 0x18);
    RF4432_WriteReg(RSSI_THRESHOLD_FOR_CLEAR_CHANNEL_INDICATOR, 0xf0);
    RF4432_WriteReg( DATA_ACCESS_CONTROL, 0x88);  
    RF4432_WriteReg( HEADER_CONTROL_1, 0x8c);
    RF4432_WriteReg( HEADER_CONTROL_2, 0x0a);
    RF4432_WriteReg( PREAMBLE_LENGTH, 0x08);  
RF4432_WriteReg( TRANSMIT_PACKET_LENGTH, RF4432_TxRxBuf_Len );      //发送数据包长度设置
    RF4432_WriteReg( RECEIVED_PACKET_LENGTH, RF4432_TxRxBuf_Len );     //接收数据包长度设置
    RF4432_WriteReg( HEADER_ENABLE_3, 0x00);
    RF4432_WriteReg (HEADER_ENABLE_2, 0x00);
    RF4432_WriteReg( HEADER_ENABLE_1, 0x00);
    RF4432_WriteReg( HEADER_ENABLE_0 ,0x00);
    RF4432_WriteReg(AGC_OVERRIDE_2, 0x0b);
    RF4432_WriteReg(TX_POWER,0x03);
    RF4432_WriteReg(TX_DATA_RATE_1, 0x0A);    //通信速率40kbps
    RF4432_WriteReg(TX_DATA_RATE_0, 0x3D);
    RF4432_WriteReg(MODULATION_MODE_CONTROL_1, 0x02);              
    RF4432_WriteReg(MODULATION_MODE_CONTROL_2, 0x26);              
//设置为FIFO模式  FSK  reg71H
    RF4432_WriteReg(FREQUENCY_DEVIATION, 0x40);   //
    RF4432_WriteReg(FREQUENCY_BAND_SELECT, 0x53); //设置频率  reg75H       RF4432_WriteReg(NOMINAL_CARRIER_FREQUENCY_1, 0x4b);            
//通信频率433MHZ     reg76H
    RF4432_WriteReg(NOMINAL_CARRIER_FREQUENCY_0, 0x00);//reg77H
    RF4432_WriteReg(TX_FIFO_CONTROL_1,0x3F);
    RF4432_WriteReg(TX_FIFO_CONTROL_2,0x00);
    RF4432_WriteReg(RX_FIFO_CONTROL,0x3F);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)|0x01);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)&0xFE);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)|0x02);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)&0xFD);   
}
SI4432设置接收模式函数
void RF4432_SetRxMode(void)
{
    RF4432_PAC=0;
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)|0x02);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)&0xFD);
    RF4432_ReadReg(INTERRUPT_STATUS_1);
    RF4432_ReadReg(INTERRUPT_STATUS_2);
    RF4432_WriteReg(INTERRUPT_ENABLE_1, 0x02);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_1,0x05);//接收  
}
SI4432数据包接收函数
unsigned char RF4432_RxPacket(void)
{
    RF4432_IRQ=1;
    if(!RF4432_IRQ)
    {
        if(RF4432_ReadReg(INTERRUPT_STATUS_1)&0x02)
       {
           return 1;     
       }
    }
        return 0;
}
SI4432数据包发送函数
void RF4432_TxPacket(void)
{
    RF4432_PAC=1;
RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)|0x01);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_2,RF4432_ReadReg(OPERATING_FUNCTION_CONTROL_2)&0xFE);
RF4432_WriteBurestReg(FIFO_ACCESS,RF4432_TxRxBuf,RF4432_TxRxBuf_Len);
    RF4432_ReadReg(INTERRUPT_STATUS_1);
    RF4432_ReadReg(INTERRUPT_STATUS_2);
    RF4432_WriteReg(INTERRUPT_ENABLE_1, 0x04);
    RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_1,0x09);//发射
    while(1)
    {
       RF4432_IRQ=1;
       if(!RF4432_IRQ)
       {
        if(RF4432_ReadReg(INTERRUPT_STATUS_1)&0x04) //详细请看P95页
           {
              break;
           }
       }
    }
}
无线应用注意事项
(1) 无线模块的VCC电压范围为 1.8V-3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。推荐电压3.3V左右。
(2) 除电源VCC和接地端,其余脚都可以直接和普通的51单片机IO口直接相连,无需电平转换。当然对3V左右的单片机更加适用了。
(3) 硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了。模块按照接口提示和母板的逻辑地连接起来
(4) 标准DIP插针,如需要其他封装接口,或其他形式的接口,可联系我们定做。
(5) 任何单片机都可实现对无线模块的数据收发控制,并可根据我们提供的程序,然后结合自己擅长的单片机型号进行移植;
(6) 频道的间隔的说明:实际要想2个模块同时发射不相互干扰,两者频道间隔应该至少相差1MHZ,这在组网时必须注意,否则同频比干扰。
(7) 实际用户可能会应用其他自己熟悉的单片机做为主控芯片,所以,建议大家在移植时注意以下4点:
A:确保IO是输入输出方式,且必须设置成数字IO;
B:注意与使用的IO相关的寄存器设置,尤其是带外部中断、带AD功能的IO,相关寄存器一定要设置好;
C:调试时先写配置字,然后控制数据收发
D:注意工作模式切换时间

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部