HELLO, 我们购买了TI 官方CC1200开发板,我们设计的的卡是1201,调试有俩个问题:
配置参数都是868M、4GFSK、500ksps, 发送间隔50ms,固定长度发送和接收数据;
一、我们自己设计的板卡1201发送数据:
0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x01、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x02、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x03、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x04、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
。。。。。
实际数据就是八个字节,但是配置参数PKT_LEN必须设置为9,不知道为啥??如果设置为8,接收端也设置为8,则接收端收到的数据就有问题。
使用开发板1200接收数据,接收的配置参数PKT_LEN也必须设置为9。接收收到的数据头部会多出来一个byte 0x00,发送10000个包,接收端也可以正常收取1000个包,不知道为什么接收头部多出一个00?
11:45:25.337 | 00 00 01 02 03 04 05 06 07 | 0
11:45:25.391 | 00 01 01 02 03 04 05 06 07 | 0
11:45:25.447 | 00 02 01 02 03 04 05 06 07 | 0
11:45:25.503 | 00 03 01 02 03 04 05 06 07 | 0
11:45:25.558 | 00 04 01 02 03 04 05 06 07 | 0
11:45:25.614 | 00 05 01 02 03 04 05 06 07 | 0
11:45:25.670 | 00 06 01 02 03 04 05 06 07 | 0
11:45:25.726 | 00 07 01 02 03 04 05 06 07 | 0
11:45:25.782 | 00 08 01 02 03 04 05 06 07 | 0
二、我们使用开发板1200发送数据
0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x01、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x02、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x03、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x04、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
。。。。。
我们自己卡1201接收数据,发现会出现丢包情况,大约发送100个包,接收会丢失10个左右,请问这种问题可能在哪里,我从哪里入手解决?
Viki Shi:
1、手册有解释:
Fixed packet length mode is selected by setting PKT_CFG0.LENGTH_CONFIG = 00. The desired packet length is set by the PKT_LEN register.To support non-byte oriented protocols, fixed packet length mode supports packet lengths of n bytes + m bits, where n is programmed through the PKT_LEN register and m is programmed through PKT_CFG0.PKT_BIT_LEN. If m ≠ 0, only m bits of the last byte written to the TX FIFO is transmitted
and RX mode is terminated when the last m bits of the packet is received. This is very useful in low power systems where it is important not to stay in TX/RX longer than necessary. CRC is not supported when PKT_CFG0.PKT_BIT_LEN ≠ 0. In RX, you will read zero’s from the (8 − m) LSBs in the last byte in the RX FIFO.2、开发板可正常接收,自制板出现丢包,硬件方面是否一致?比较推荐copy官方板的设计
user4766611:
回复 Viki Shi:
感谢回复,第一问题, 我就是按照手册以及这俩个寄存器PKT_CFG0=0,PKT_LEN=9;
现在就是测试固定长度模式,
我的疑惑就是开发板接收的头部第一个字节00是什么产生的?我发送端没有发送这个字节。
还有就是我写入TXFIFO- Burst accecss to Transmit FIFO的数据长度是不是应该和PKT_LEN保持一致,我现在就是TXFIFO- Burst accecss to Transmit FIFO的长度比PKT_LEN少1,如果相等,则接收端出现错序,丢数。二 、开发板是1200,没有买到1201的,我们的板卡是1201,硬件设计就是参考demo 官方版的。
请帮忙解答下,谢谢。
Viki Shi:
回复 user4766611:
1、To support non-byte oriented protocols, fixed packet length mode supports packet lengths of n bytes + m bits, where n is programmed through the PKT_LEN register and m is programmed through PKT_CFG0.PKT_BIT_LEN. If m ≠ 0, only m bits of the last byte written to the TX FIFO is transmittedand RX mode is terminated when the last m bits of the packet is received. This is very useful in low power systems where it is important not to stay in TX/RX longer than necessary. CRC is not supported when PKT_CFG0.PKT_BIT_LEN ≠ 0. In RX, you will read zero’s from the (8 − m) LSBs in the last byte in the RX FIFO.
2、CC1200/CC1201参考设计是通用的,可以对比一下,建议完全复制,包括元器件: http://www.ti.com/tool/CC120XEM-868-930-RD
user4766611:
回复 Viki Shi:
thansk, 我配置了PKT_LEN=9,PKT_CFG0=0,PKT_CFG1=0,PKT_CFG2=0; 也就是固定模式,PKT_BIT_LEN=0. 这种情况下,接收端就会每包数据接收一个8bit0么? 位于头部第一个字节。 但是我用俩个开发板直接发送9byte,接收端就是9byte没有接收到头部第一个字节一直为0的情况出现,配置了相同的PKT_LEN=9,PKT_CFG0=0,PKT_CFG1=0,PKT_CFG2=0;这个怎么解释?
user4766611:
回复 Viki Shi:
我配置了PKT_LEN=9, PKT_CFG0=0,PKT_CFG0=1,PKT_CFG2=0,这种情况下表示PKT_CFG0.PKT_BIT_LEN=0,然后接收端就会在头部收到一个8bit0么?
我用俩个开发板直接通讯,使用了相同的配置参数PKT_LEN=9, PKT_CFG0=0,PKT_CFG0=1,PKT_CFG2=0, 接收端就不会收到这8bit 0. 还是没有明白你上文提到的 CRC is not supported when PKT_CFG0.PKT_BIT_LEN ≠ 0. In RX, you will read zero’s from the (8 − m) LSBs in the last byte in the RX FIFO.
Viki Shi:
回复 user4766611:
你可以发下你的配置吗?相同配置下不同板子实验结果的差异能详细描述吗?上面描述不够清晰 【如果设置为8,接收端也设置为8,则接收端收到的数据就有问题。具体是什么问题?乱码?】
user4766611:
回复 Viki Shi:
thanks.
开发板1200配置如下:
static const registerSetting_t preferredSettings[]=
{{CC1200_IOCFG2,0x06},{CC1200_SYNC_CFG1,0xA8},{CC1200_DEVIATION_M,0x47},{CC1200_MODCFG_DEV_E,0x2F},{CC1200_DCFILT_CFG,0x1E},{CC1200_PREAMBLE_CFG0,0x8A},{CC1200_IQIC,0x00},{CC1200_CHAN_BW,0x01},{CC1200_MDMCFG1,0x42},{CC1200_MDMCFG0,0x05},{CC1200_SYMBOL_RATE2,0xC9},{CC1200_SYMBOL_RATE1,0x99},{CC1200_SYMBOL_RATE0,0x99},{CC1200_AGC_REF,0x2F},{CC1200_AGC_CS_THR,0xF8},{CC1200_AGC_CFG2,0x60},{CC1200_AGC_CFG1,0x12},{CC1200_AGC_CFG0,0x84},{CC1200_FIFO_CFG,0x00},{CC1200_FS_CFG,0x12},{CC1200_PKT_CFG2,0x00},{CC1200_PKT_CFG1,0x00},{CC1200_PKT_LEN,0x09},{CC1200_FREQOFF_CFG,0x23},{CC1200_MDMCFG2,0x00},{CC1200_FREQ2,0x54},{CC1200_IF_ADC1,0xEE},{CC1200_IF_ADC0,0x10},{CC1200_FS_DIG1,0x04},{CC1200_FS_DIG0,0xA3},{CC1200_FS_CAL1,0x40},{CC1200_FS_CAL0,0x0E},{CC1200_FS_DIVTWO,0x03},{CC1200_FS_DSM0,0x33},{CC1200_FS_DVC1,0xF7},{CC1200_FS_DVC0,0x0F},{CC1200_FS_PFD,0x00},{CC1200_FS_PRE,0x6E},{CC1200_FS_REG_DIV_CML,0x1C},{CC1200_FS_SPARE,0xAC},{CC1200_FS_VCO0,0xB5},{CC1200_IFAMP,0x0D},{CC1200_XOSC5,0x0E},{CC1200_XOSC1,0x03},{CC1200_PARTNUMBER,0x20},{CC1200_PARTVERSION,0x11},{CC1200_MODEM_STATUS1,0x10},
};我们卡1201配置如下:
static const registerSetting_t preferredSettings[]=
{{CC120X_IOCFG2,0x06}, {CC120X_SYNC_CFG1,0xA8},{CC120X_DEVIATION_M,0x47},{CC120X_MODCFG_DEV_E,0x2F},{CC120X_DCFILT_CFG,0x1E},{CC120X_PREAMBLE_CFG0,0x8A},{CC120X_IQIC,0x00},{CC120X_CHAN_BW,0x01},{CC120X_MDMCFG1,0x42},{CC120X_MDMCFG0,0x05},{CC120X_SYMBOL_RATE2,0xC9},{CC120X_SYMBOL_RATE1,0x99},{CC120X_SYMBOL_RATE0,0x99},{CC120X_AGC_REF,0x2F},{CC120X_AGC_CS_THR,0xF8},{CC120X_AGC_CFG2,0x60},{CC120X_AGC_CFG1,0x12},{CC120X_AGC_CFG0,0x84},{CC120X_FIFO_CFG,0x40},{CC120X_FS_CFG,0x12},{CC120X_PKT_CFG2,0x00},{CC120X_PKT_CFG1,0x00},{CC120X_PKT_CFG0,0x00},//FIX LENGHTH{CC120X_PKT_LEN,0x09}, //packet len{CC120X_FREQOFF_CFG,0x23},{CC120X_MDMCFG2,0x00},{CC120X_FREQ2,0x54},//840M{CC120X_IF_ADC1,0xEE},{CC120X_IF_ADC0,0x10},{CC120X_FS_DIG1,0x04},{CC120X_FS_DIG0,0xA3},{CC120X_FS_CAL1,0x40},{CC120X_FS_CAL0,0x0E},{CC120X_FS_DIVTWO,0x03},{CC120X_FS_DSM0,0x33},{CC120X_FS_DVC1,0xF7},{CC120X_FS_DVC0,0x0F},{CC120X_FS_PFD,0x00},{CC120X_FS_PRE,0x6E},{CC120X_FS_REG_DIV_CML,0x1C},{CC120X_FS_SPARE,0xAC},{CC120X_FS_VCO0,0xB5},{CC120X_IFAMP,0x0D},{CC120X_XOSC5,0x0E},{CC120X_XOSC1,0x03},
}请帮忙看看。
Viki Shi:
回复 user4766611:
实验结果的差异也麻烦一并提供,越详细越好,我看看能不能找实验室的同事测一下
user4766611:
回复 Viki Shi:
我们自己设计的板卡1201发送数据:
0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x01、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x02、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x03、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
0x04、0x01、0x02、0x03、0x04、0x05、0x06、0x07;
。。。。。
实际数据就是八个字节,但是配置参数PKT_LEN=9,不知道为啥??如果设置为8,接收端也设置为8,则接收端收到的数据就出现乱续丢数据问题。
使用开发板1200接收数据,接收的配置参数PKT_LEN也必须设置为9。接收收到的数据头部会多出来一个byte 0x00,发送10000个包,接收端也可以正常收取1000个包,不知道为什么接收头部多出一个00?
11:45:25.337 | 00 00 01 02 03 04 05 06 07|0
11:45:25.391 | 00 01 01 02 03 04 05 06 07|0
11:45:25.447 | 00 02 01 02 03 04 05 06 07|0
11:45:25.503 | 00 03 01 02 03 04 05 06 07|0
11:45:25.558 | 00 04 01 02 03 04 05 06 07|0
11:45:25.614 | 00 05 01 02 03 04 05 06 07|0
11:45:25.670 | 00 06 01 02 03 04 05 06 07|0
11:45:25.726 | 00 07 01 02 03 04 05 06 07|0
11:45:25.782 | 00 08 01 02 03 04 05 06 07|0
Viki Shi:
回复 user4766611:
CHAN_BW为什么设置为 0x01 ?为什么使用零中频?你的问题我发布到了这边:e2e.ti.com/…/3027038
你可以在英文那边直接更新,进度会快一点,或者等我后续搬过来