CH582 CH573 CH579 2.4G PHY通讯讲解

频段
BLE的PHY使用2.4G频段,2400MHz~2483.5MHz 83.5MHz 的频谱资源。
射频信道
一共 40 个通道, 37 个自适应自动调频数据通道用于两个连接两个设备通讯;3 个固定广播通道分别是 37、 38、 39。 通道的具体频带分布如图:

 

发射功率
2.4GHz ISM 频段对无需授权的设备有最大发射功率的限制,对于BLE,在 4.0 规范中有规定:

 

 芯片2.4G初始化(以CH582为例)

    rfConfig.accessAddress = 0x71764129; // 禁止使用0x55555555以及0xAAAAAAAA ( 建议不超过24次位反转,且不超过连续的6个0或1 )
    //接入地址,收发双方必须一致才可以正常收发
    rfConfig.CRCInit = 0x555555; //收发双方保持一致
    rfConfig.Channel = 8;  //通讯通达选择0-39
    rfConfig.Frequency = 2480000;  //通讯频点选择2400000-2483500
    rfConfig.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL|(2<<4); // 使能 LLE_MODE_EX_CHANNEL 表示 选择 rfConfig.Frequency 作为通信频点,频点步进1KHz
    //如果不使能LLE_MODE_EX_CHANNEL 就使用rfConfig.Channel 作为通信频点
    rfConfig.rfStatusCB = RF_2G4StatusCallBack;
    rfConfig.RxMaxlen = 251;
    state = RF_Config(&rfConfig);

 

重点:
#define  LLE_MODE_EX_CHANNEL          (1<<6)

// 使能 LLE_MODE_EX_CHANNEL 表示 选择 rfConfig.Frequency 作为通信频点,频点步进1KHz
//如果不使能LLE_MODE_EX_CHANNEL 就使用rfConfig.Channel 作为通信频点
typedef struct tag_rf_config
{
    uint8_t LLEMode;                  //!< BIT0   0=basic, 1=auto def@LLE_MODE_TYPE
                                      //!< BIT1   0=whitening on, 1=whitening off def@LLE_WHITENING_TYPE
                                      //!< BIT4-5 00-1M  01-2M  10-coded(S8) 11-coded(S2) def@LLE_PHY_TYPE   
                                      //!< BIT6   0=data channel(0-39)
                                      //!<        1=rf frequency (2400000kHz-2483500kHz)
                                      //!< BIT7   0=the first byte of the receive buffer is rssi
                                      //!<        1=the first byte of the receive buffer is package type
    uint8_t Channel;                  //!< rf channel(0-39)
    uint32_t Frequency;               //!< rf frequency (2400000kHz-2483500kHz)
    uint32_t accessAddress;           //!< access address,32bit PHY address
    uint32_t CRCInit;                 //!< crc initial value
    pfnRFStatusCB_t rfStatusCB;       //!< status call back
    uint32_t ChannelMap;              //!< indicating  Used and Unused data channels.Every channel is represented with a
                                      //!< bit positioned as per the data channel index,The LSB represents data channel index 0
    uint8_t Resv;
    uint8_t HeartPeriod;              //!< The heart package interval shall be an integer multiple of 100ms
    uint8_t HopPeriod;                //!< hop period( T=32n*RTC clock ),default is 8
    uint8_t HopIndex;                 //!< indicate the hopIncrement used in the data channel selection algorithm,default is 17
    uint8_t RxMaxlen;                 //!< Maximum data length received in rf-mode(default 251)
    uint8_t TxMaxlen;                 //!< Maximum data length transmit in rf-mode(default 251)
} rfConfig_t;
 uint8_t LLEMode; 的
//!< BIT4-5 00-1M  01-2M  10-coded(S8) 11-coded(S2) def@LLE_PHY_TYPE   配置选择125Kbps   1Mbps   2Mbps 500Kbps

比如

    rfConfig.accessAddress = 0x71764129; // 禁止使用0x55555555以及0xAAAAAAAA ( 建议不超过24次位反转,且不超过连续的6个0或1 )
    rfConfig.CRCInit = 0x555555;
    rfConfig.Channel = 8;
    rfConfig.Frequency = 2480000;
    rfConfig.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL|(2<<4); // 使能 LLE_MODE_EX_CHANNEL 表示 选择 rfConfig.Frequency 作为通信频点
    rfConfig.rfStatusCB = RF_2G4StatusCallBack;
    rfConfig.RxMaxlen = 251;

开启PHY的125Kbps模式

posted @ 2023-02-10 10:36  debugdabiaoge  阅读(1414)  评论(2编辑  收藏  举报