无线通信模块说明

无线通信模块说明
一、433MHz无线通讯模块简介
1. 产品简介:
433MHz无线通讯模块,采用Chipcon公司的高性能CC1101无线通信芯片,最大传输数率达500kbps叠泉乡村俱乐部,并可软件修改波特率,开阔地传输距离达到300米,具有无线唤醒等功能,灵敏度达到-110dBm,可靠性高,可广泛应用于各种场合的短距离无线通信领域。
2.  性能特点
(1) 433MHz免费ISM频段免许可证使用;
(2) 最高工作速率500kbps,支持2-FSKGFSKMSK调制方式;
(3) 可软件修改波特率参数:
高波特率:更快的数据传输速率,
低波特率:更强的抗干扰性和穿透能力,
更好地满足客户在不同条件下的使用要求;
(4) 高灵敏度(1.2kbps-110dBm1%数据包误码率);
(5) 内置硬件CRC 检错和点对多点通信地址控制
(6) 较低的电流消耗(RX中,15.6mA2.4kbps433MHz);
(7) 可编程控制的输出功率,对所有的支持频率可达+10dBm
(8) 支持低功率电磁波激活功能;
(9) 支持传输前自动清理信道访问(CCA),即载波侦听系统
(10) 快速频率变动合成器带来的合适的频率跳跃系统;
科学技术与工程(11) 模块可软件设地址,软件编程非常方便;
(12) 标准DIP间距接口,便于嵌入式应用;
(13) 单独的64字节RXTX数据FIFO
3. 主要应用领域:
极低功率UHF无线收发器,315/433/868/915MHz  ISM/SRD波段系统,AMR-自动仪表读数,电子消费产品,远程遥控控制,低功率遥感勘测,住宅和建筑自动控制,无线警报和安全系统,工业监测和控制,无线传感器网络,无线唤醒功能,低功耗手持终端产品等。
二、 硬件设计
1. 模块接口说明
CC1101STM32引脚连接表如表1所示。
1  CC1101STM32引脚连接表
CC1101部分
STM32部分
seer2.61
功能
引脚位号
名称
引脚位号
名称
1
SCK
26
PB13/SPI2_SCK
SPI接口时钟线
2
SO
27
PB14/SPI2_MISO
SPI接口MISO
20
SI
28
PB15/SPI2_MOSI
SPI接口MOSI
3
GDO2
41
PB5
通用IO
6
GDO0
18
PB0
通用IO
7
CSN
25
PB12/NSS2
芯片片选使能
 
 1  CC1101 的外引脚图(俯视)
三、 软件设计
1.  SPI读写操作
u8 SPI_FLASH_SendByte(u8 byte)
{
  /* Loop while DR register in not emplty */
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
宁夏大学图书馆  /* Send byte through the SPI2 peripheral */
  SPI_I2S_SendData(SPI2, byte);
  /* Wait to receive a byte */
  while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
  /* Return the byte read from the SPI bus */
  return SPI_I2S_ReceiveData(SPI2);
}
2. SPI写寄存器操作
void halSpiWriteReg(INT8U addr, INT8U value)
{
    SPI_FLASH_CS_LOW();
    while (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_SO) );
dmtn    SPI_FLASH_SendByte(addr);        //写地址
    SPI_FLASH_SendByte(value);        //写入配置
    SPI_FLASH_CS_HIGH();
}
3. SPI读寄存器操作
INT8U halSpiReadReg(INT8U addr)
{
    INT8U temp, value;
    temp = addr|READ_SINGLE;//读寄存器命令
    SPI_FLASH_CS_LOW();
    while (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_SO) );//MISO
    SPI_FLASH_SendByte(temp);
    value = SPI_FLASH_SendByte(0);
    SPI_FLASH_CS_HIGH();
    return value;
}
4. 模块初始化设置
const RF_SETTINGS rfSettings
= {
奥运知识    0x06, // FSCTRL1 Frequency synthesizer control.
    0x00, // FSCTRL0 Frequency synthesizer control.
    0x10, // FREQ2 Frequency control word, high byte.
    0xA7, // FREQ1 Frequency control word, middle byte.
    0x62, // FREQ0 Frequency control word, low byte.
    0xf6,  // MDMCFG4 Modem configuration.
    0x83,  // MDMCFG3 Modem configuration.
    0x13,    // MDMCFG2 Modem configuration.
    0x22, // MDMCFG1 Modem configuration.
    0xF8, // MDMCFG0 Modem configuration.
    0x00, // CHANNR Channel number.
    0x15, // DEVIATN Modem deviation setting (when FSK modulation is enabled).
    0x56, // FREND1 Front end RX configuration.
    0x10, // FREND0 Front end RX configuration.
    0x18, // MCSM0 Main Radio Control State Machine configuration.
    0x16, // FOCCFG Frequency Offset Compensation Configuration.
    0x6C, // BSCFG Bit synchronization Configuration.
    0x03, // AGCCTRL2 AGC control.
    0x40, //0x00, // AGCCTRL1 AGC control.
    0x91, // AGCCTRL0 AGC control.
    0xE9, // FSCAL3 Frequency synthesizer calibration.
    0x2A, // FSCAL2 Frequency synthesizer calibration.
    0x00, // FSCAL1 Frequency synthesizer calibration.
    0x1F, // FSCAL0 Frequency synthesizer calibration.
    0x59, // FSTEST Frequency synthesizer calibration.
    0x81, // TEST2 Various test settings.
    0x35, // TEST1 Various test settings.
    0x09, // TEST0 Various test settings.
    0x29, // IOCFG2 GDO2 output pin configuration.
    0x06, // IOCFG0D GDO0 output pin configuration.
    0x04, // PKTCTRL1 Packet automation control.
    0x05, // PKTCTRL0 Packet automation control.
    0x00, // ADDR Device address.
    0xff // PKTLEN Packet length.
};
5. 数据发送流程操作
void halRfSendPacket(INT8U *txBuffer, INT8U size)
{
    halSpiWriteReg(CCxxx0_TXFIFO, size); //写入长度
   
    halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);    //写入要发送的数据
    halSpiStrobe(CCxxx0_STX);        //进入发送模式发送数据   
    // Wait for GDO0 to be set -> sync transmitted
    while (!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_GD0) );//while (!GDO0);
    // Wait for GDO0 to be cleared -> end of packet
    while (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_GD0) );// while (GDO0);
    halSpiStrobe(CCxxx0_SFTX);
}
6. 数据接收流程操作
INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
{
    INT8U status[2];
    INT8U packetLength;
    INT8U i=(*length)*4;  // 具体多少要根据dataratelength来决定
    halSpiStrobe(CCxxx0_SRX);        //进入接收状态
    Delay(5);
    while (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_GD0) )//while (GDO0)
    {
        Delay(2);
        --i;
        if(i<1)
          return 0;       
    }   
    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0

本文发布于:2024-09-23 01:38:28,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/273221.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:无线   功能   软件   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议