主题中讨论的其他器件:MSP430FR5994
尊敬的 Sirs:
接收标准数据包时遇到问题、接收编码标准数据包时遇到同样的问题。
IOCONFIG0被设定为06。 它的正边沿中断并运行接收器。 当接收到 SYNC 时会发生这种情况。
其负边沿也会中断并将 packetSemaphore 设置为01。 这应该是数据包全部被接收的时候。 上升和下降中断确实会发生,我已经用示波器查看了 GPIO0,它的脉冲持续21ms (高电平、低电平),包装长度大约为10个字符,因此波形看起来是
工作。 但是、下面的接收例程每次都显示为0的 rxBytes。 加密接收例程也存在同样的问题。 我可以输入延迟、它将能够读取字节、但这应该正常工作。
感谢你的帮助。
非编码数据包的接收例程:
//等待数据包接收中断
while (!packetSemaphore)
A=a+1;
//读取 RX FIFO 中的字节数
cc120xSpiReadReg (CC120X_NUM_RXBYTES、&rxBytes、1);
//检查 FIFO 中是否有字节
if (rxBytes!= 0)
{
//读取 MARCSTATE 以检查 RX FIFO 错误
cc120xSpiReadReg (CC120X_MARCSTATE、&marcState、1);
//屏蔽 MARCSTATE 位并检查是否具有 RX FIFO ERR
if ((marcState & 0x1F)== 0x11) //RX_FIFO_ERROR
{
//刷新 RX FIFO
TrxSpiCmdStrobe (CC120X_SFRX);
}否则
{
//从 RX FIFO 读取 n 个字节
cc120xSpiReadRxFifo (rxBuffer、rxBytes);
//检查 CRC OK (CRC_OK:第二个状态字节中的位7)
//假设状态字节附加在 RX_FIFO 中
//(PKT_CFG1.append_status = 1)
//如果禁用 CRC,CRC_OK 字段将读为1
if (rxBuffer[rxBytes-1]和0x80)
{
//更新数据包计数器
PacketCounter++;
}
}
//重置数据包信标
packetSemaphore = ISR_IDLE;
//将无线电设置回 RX
TrxSpiCmdStrobe (CC120X_SRX);
} //未加密接收的结束
配置:
{CC120X_IOCFG0、 0x06}、 //PKT_SYNC_RxTx
{CC120X_SYNC3、 0x55}、 //DualSync
{CC120X_SYNC2、 0x59}、 //这2个同步仅用于 接收。 发送同步在 TX 之前设置。
{CC120X_SYNC1、 0x56}、 //
{CC120X_SYNC0、 0xa6}、 //
{CC120X_SYNC_CFG0、 0x03}、 //**是88。 添加了 PQT_EN=80 & PQT_Gating_en=0x08、B00=最严格。 b10=strict_sync_check=3
{CC120X_SYNC_CFG1、 0x28}、 //** 28 = 11位和8阈值。 是48。 4x=16位、8x=24位、Ax=32位7-5 len 同步、4:0=SYNC 阈值
{CC120X_EXTERING_M、 0x8D}、
{CC120X_MODCFG_DEV_E、 0x08}、 //对于 GFSK、// 08对于4GFSK GFSK/4FSK、28
{CC120X_DCFILT_CFG、 0x5D}、
{CC120X_PREAMING_CFG1、 0x14}、 //14=3字节、18=4b。 20=6B 10=2字节 e AA。 是24。 0x31=24字节。 0x25=7字节
{CC120X_PREAMITY_CFG0、 b9}、 //**是8A PQT_EN=08
{CC120X_IQIC、 0xCB}、
{CC120X_CHAN_BW、 0xA6}、 //AC=9.46khz。 AA=10kHz
{CC120X_MDMCFG1、 0x40}、 //was E0。 80=载波侦听门、40= FIFO、手动模式=20、反转数据=10
{CC120X_MDMCFG0、 0x05}、
{CC120X_SYMBOL_Rate2、 0x5F}、 //4F、用于正常2400= 5F、4800= 6F 或9600 (不带曼彻斯特)
{CC120X_symbol_rate1、 0x75}、
{CC120X_symbol_RATE0、 0x10}、
{CC120X_AGC_REF、 0x31}、
{CC120X_AGC_CS_THR、 0x8B}、 //8B=-117、8C=-116、8d=-115 8A=-118、88=-120为8A、92=-110dBm。 8F=-113、A6=-90dBm
{CC120X_AGC_CFG1、 0x40}、
{CC120X_AGC_GAIN_ADJUST、 0x9C}、 //9C=-100、9D=-99。 当 AGC_GAIN_ADJUST.GAIN_ADJUST = 0x00时、这是 RSSI 偏移有效。
{CC120X_AGC_CFG0、 0x8C} 、//8c=5计数。 RSSI 的计数为80=1
{CC120X_FIFO_CFG、 0x00}、
{CC120X_Setting_CFG、 0x03}、
{CC120X_FS_CFG、 0x1B}、
{CC120X_WOR_CFG0、 0x08}、 //相同
{CC120X_WOR_CFG1、 0x08}、 //添加
{CC120X_WOR_EVENT0_MSB、 0x01}、 //0035=.6PRE、010A=1PRE、018f=2PRE、 0214=2.5PRE、 029a=3PRE
{CC120X_WOR_EVENT0_LSB、 0x8F}、 //
{CC120X_PKT_CFG2、 0x00}、 //0c=CCA 模式。 CRC 被禁用、无状态字节
//{CC120X_PKT_CFG1、 0x03}、 //def=3、0x01 =附加状态。 20、10=ADX 时钟 02 (init FFFF)和04 (init 0000)=CRC 被启用。
{CC120X_PKT_CFG0、 0x20}、 //在位6:5中固定长度=00、在位4:2中固定长度=00
//{CC120X_RFEND_CFG1、 0x30}、 // X30在复用后返回到 Rx
{CC120X_RFEND_CFG0、 0x04}、 //04:基于 PQT 的 RX 端接。 0x1:基于 CS 的 RX 项。 复用后、0x30返回到 Rx
{CC120X_PKT_LEN、 0x7d}、 //最大数据包长度
{CC120X_IF_MIX _CFG、 0x1C}、
{CC120X_FREQOFF_CFG、 0x22}、 //FOC_EN=x20、FOC_KI_Factor=02为20
{CC120X_MDMCFG2、 0x00}、
{CC120X_TOC_CFG、 0x4b}、 //**为40 TOC 限制2%
{CC120X_Settling_CFG、 0x08}、 //Cal FS 从 IDLE 变为 Rec 或 TX
{CC120X_FREQ2、 0x5A}、
{CC120X_FREQ1、 0x00}、
{CC120X_FREQ0、 0x00}、
{CC120X_IF_ADC1、 0xEE}、
{CC120X_IF_ADC0、 0x10}、
{CC120X_FS_DIG1、 0x07}、
{CC120X_FS_DIG0、 0xAF}、
{CC120X_FS_CAL1、 0x40}、
{CC120X_FS_CAL0、 0x0E}、
{CC120X_FS_DIVTWO、 0x03}、
{CC120X_FS_DSM0、 0x33}、
{CC120X_FS_DVC0、 0x17}、
{CC120X_FS_PFD、 0x00}、
{CC120X_FS_PRE、 0x6E}、
{CC120X_FS_REG_DIV_CML、 0x1C}、
{CC120X_FS_SPARE、 0xAC}、
{CC120X_FS_VCO0、 0xB5}、
//{CC120X_FS_CFG、 0x0B}、 //136-160MHz
{CC120X_XOSC5、 0x0E}、
{CC120X_XOSC1、 0x03}、
};