本帖最后由 qq752494297 于 2015-3-21 16:45 编辑
void c25_TX_Init(void)
{
c25_SPI_W_Reg_Single(c25_RA_IOCFG0, c25_CR_IOCFGx_SYNC_WORD);
// GDO0:发送/接收到同步字时置位,并在数据包的末尾取消置位
c25_SPI_W_Reg_Single(c25_RA_FIFOTHR, c25_CR_FIFOTHR_TX_1_RX_64); // 设置TX_FIFO和RX_FIFO阀值(TX:1,RX:64)
c25_SPI_W_Reg_Single(c25_RA_SYNC1, c25_CR_SYNC1); // 同步字高位(默认0xD3=11010011)
c25_SPI_W_Reg_Single(c25_RA_SYNC0, c25_CR_SYNC0); // 同步字低位
c25_SPI_W_Reg_Single(c25_RA_PKTLEN, c25_DATA_WIDTH); // 固定长度数据包时为数据包长度;可变长度数据包时为允许的最大数据包长度
c25_SPI_W_Reg_Single(c25_RA_PKTCTRL1, c25_CR_PKTCTRL1_PQT // 前导质量评估门限(默认值0)(等于0时同步字总能被接收)
| c25_CR_PKTCTRL1_CRC_AUTOFLUSH_EN // 当接收数据CRC校验失败时,自动清空RX_FIFO
| c25_CR_PKTCTRL1_APPEND_STATUS_DI // 不在有效负载上添加状态字
| c25_CR_PKTCTRL1_ADR_CHK_DI); // 不检查地址
c25_SPI_W_Reg_Single(c25_RA_PKTCTRL0, c25_CR_PKTCTRL0_WHITE_DATA_EN // 开启数据白化
| c25_CR_PKTCTRL0_NORMAL_MODE // 普通模式,使用FIFO
| c25_CR_PKTCTRL0_CRC_EN // 开启CRC校验
| c25_CR_PKTCTRL0_PTKLEN_FIXED); // 固定数据包长度模式,在PKTLEN寄存器中配置长度数据
c25_SPI_W_Reg_Single(c25_RA_ADDR, c25_CR_ADDR); // 数据包过滤时使用的地址.可选广播地址为0x00和0xFF
c25_SPI_W_Reg_Single(c25_RA_FSCTRL1, c25_CR_FSCTRL1_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FSCTRL0, c25_CR_FSCTRL0); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FREQ2, c25_CR_FREQ2_2400MHz); // 基频为2400MHz时的FREQ2寄存器值
c25_SPI_W_Reg_Single(c25_RA_FREQ1, c25_CR_FREQ1_2400MHz); // 基频为2400MHz时的FREQ1寄存器值
c25_SPI_W_Reg_Single(c25_RA_FREQ0, c25_CR_FREQ0_2400MHz); // 基频为2400MHz时的FREQ0寄存器值
c25_SPI_W_Reg_Single(c25_RA_MDMCFG4, c25_CR_MDMCFG4_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_MDMCFG3, c25_CR_MDMCFG3_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_MDMCFG2, c25_CR_MDMCFG2_DEM_DCFILT_OFF_EN // 在解调前禁用数字DC阻断滤波器,使能(更佳的灵敏度)
| c25_CR_MDMCFG2_MOD_FORMAT_2FSK // 2FSK
| c25_CR_MDMCFG2_MANCHESTER_DI // 禁用曼切斯特编码/解码
| c25_CR_MDMCFG2_30_32_B_SYNC); // 检测30/32同步字bit
c25_SPI_W_Reg_Single(c25_RA_MDMCFG1, c25_CR_MDMCFG1_FEC_DI // 禁用交错向前纠错
| c25_CR_MDMCFG1_NUM_PREAMBLE_4BYTE // 最小前导4Byte
| c25_CR_MDMCFG1_CHANSPC_E); // 通道间隔的2bit指数
c25_SPI_W_Reg_Single(c25_RA_MDMCFG0, c25_CR_MDMCFG0_CHANSPC_M); // 通道间隔的8bit尾数
c25_SPI_W_Reg_Single(c25_RA_DEVIANT, c25_CR_DEVIANT_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_MCSM2, c25_CR_MCSM2_RX_TIME_RSSI_DI // 不使用RSSI测量执行RX终止
| c25_CR_MCSM2_RX_TIME_QUAL_SYNC // 在RX_TIME定时器超时时,芯片检查是否找到同步字
| c25_CR_MCSM2_RX_TIME); // 在WOR模式和标准RX运行时,RX中的同步字搜索时限
c25_SPI_W_Reg_Single(c25_RA_MCSM1, c25_CR_MCSM1_CCA_MODE_RB_UCRPKT // 如果RSSI在阀值之下且除当前接收数据包外,清空通道指示
| c25_CR_MCSM1_RXOFF_MODE_RX // 数据包接收完成后保持RX状态
| c25_CR_MCSM1_TXOFF_MODE_RX); // 数据包发送完成后进入RX状态
c25_SPI_W_Reg_Single(c25_RA_MCSM0, c25_CR_MCSM0_FS_AUTOCAL_IDLE_RTX // 从IDLE转到RX,TX,FSTXON时进行自动校准
| c25_CR_MCSM0_PO_TIMEOUT_EC_64 // 终止计数次数64
| c25_CR_MCSM0_PIN_CTRL_DI // 禁用由引脚直接进行的无线状态控制
| c25_CR_MCSM0_XOSC_FORCE_ON_DI); // XOSC在SLEEP状态下关闭
c25_SPI_W_Reg_Single(c25_RA_FOCCFG, c25_CR_FOCCFG_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_BSCFG, c25_CR_BSCFG_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_AGCCTRL2, c25_CR_AGCCTRL2_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_AGCCTRL1, c25_CR_AGCCTRL1_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_AGCCTRL0, c25_CR_AGCCTRL0_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_WOREVT1, c25_CR_WOREVT1_EVENT0_HBYTE); // 事件0超时时间高位
c25_SPI_W_Reg_Single(c25_RA_WOREVT0, c25_CR_WOREVT0_EVENT0_LBYTE); // 事件0超时时间低位
c25_SPI_W_Reg_Single(c25_RA_WORCTRL, c25_CR_WORCTRL_RC_PD_EN // 向RC振荡器发送掉电信号
| c25_CR_WORCTRL_EVENT1_48 // 约1.333~1.385ms
| c25_CR_WORCTRL_RC_CAL_EN // 开启RC振荡器校准
| c25_CR_WORCTRL_WOR_RES_1P); // 精度1周期,最大时限1.8~1.9秒
c25_SPI_W_Reg_Single(c25_RA_FREND1, c25_CR_FREND1_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FREND0, c25_CR_FREND0_LODIV_BUF_CURRENT_TX // 调节当前TX LO缓冲器(PA的输入)
| c25_CR_FREND0_PA_POWER_0); // 选择PA功率设置
c25_SPI_W_Reg_Single(c25_RA_FSCAL3, c25_CR_FSCAL3_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FSCAL2, c25_CR_FSCAL2); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FSCAL1, c25_CR_FSCAL1_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_FSCAL0, c25_CR_FSCAL0_2K4BPS); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_RCCTRL1, c25_CR_RCCTRL1); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_RCCTRL0, c25_CR_RCCTRL0); // 建议使用SmartRF Studio进行计算
c25_SPI_W_Reg_Single(c25_RA_PATABLE, c25_PS_PATABLE_1dBm); // 写入PATABLE(+1.5dBm,21.4mA)
} |