您好!
我在尝试实现 CC1200与 SI4463的兼容性时遇到问题。
一些背景:我的公司有数以千计的单位在现场,所有通信通过 SI4463与
或者说自定义协议。 在我们的研发工作中、我们得出结论:我们将在我们的
多种原因实现全新产品系列、现在可以与我们以前的器件兼容了。
以下是我尝试实现的配置(SI4463的电流配置):
64k 位
2个 GFSK
869.52MHz
偏差- 90kHz
RBW - 150kHz
前导码长度:4字节
前导码模式:1010...
同步字长度:3字节
同步字顺序:SW3 SW2 SW1
(每个字节 LSB 在前)
SW3:0xB4
SW2:0x2B
SW1:0xC3
有效载荷:
每个字节 MSB 优先
所有位反转
CRC:IBM
x16 + x15 + x2 + 1
最高字节到最低字节(MSBYTE 在前)
非反转位
仅限有效载荷的 CRC (数据)
首先、我通过 SmartRF Studio 生成了配置:
{CC120X_IOCFG2、0x06}、
{CC120X_SYNC_CFG1、0xA8}、
{CC120X_SYNC_CFG0、0x23}、
{CC120X_DERATION_M、0x27}、
{CC120X_MODCFG_DEV_E、0x0D}、
{CC120X_DCFILT_CFG、0x4B}、
{CC120X_PREAMP_CFG0、0x8A}、
{CC120X_IQIC、0xD8}、
{CC120X_CHAN_BW、0x0B}、
{CC120X_MDMCFG1、0x42}、
{CC120X_MDMCFG0、0x05}、
{CC120X_symbol_Rate2、0x9A}、
{CC120X_symbol_rate1、0x36}、
{CC120X_SYMBOL_RATE0、0xE3}、
{CC120X_AGC_REF、0x2D}、
{CC120X_AGC_CS_THR、0xF6}、
{CC120X_AGC_CFG1、0x12}、
{CC120X_AGC_CFG0、0x80}、
{CC120X_FIFO_CFG、0x00}、
{CC120X_FS_CFG、0x12}、
{CC120X_PKT_CFG2、0x00}、
{CC120X_PKT_CFG0、0x20}、
{CC120X_PA_CFG1、0x77}、
{CC120X_PA_CFG0、0x53}、
{CC120X_PKT_LEN、0xFF}、
{CC120X_IF_MIX_CFG、0x1C}、
{CC120X_TOC_CFG、0x03}、
{CC120X_MDMCFG2、0x02}、
{CC120X_FREQ2、0x56}、
{CC120X_FREQ1、0xF3}、
{CC120X_FREQ0、0xB6}、
{CC120X_IF_ADC1、0xEE}、
{CC120X_IF_ADC0、0x10}、
{CC120X_FS_DIG1、0x07}、
{CC120X_FS_DIG0、0x50}、
{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_IFAMP、0x09}、
{CC120X_XOSC5、0x0E}、
{CC120X_XOSC1、0x03}、
然后添加了一些修改:
/*启用碰撞检测器*/
uint8_t mdmcfg1_collision = 0x4A;
/*对于 SI446x:反转数据*/
mdmcfg1_collision |=(1 << 4);
ok &= write_reg (RF_IC、CC120X_MDMCFG1、&mdmcfg1_collision、1);
/*对于 SI446x:4字节前导码*/
uint8_t preamber_cfg1 = 0x18;
ok &= write_reg (RF_IC、CC120X_PREAME_CFG1、&PREAME_cfg1、1);
uint8_t SYNC_cfg1 = 0x88;
ok &= write_reg (RF_IC、CC120X_SYNC_CFG1、&SYNC_cfg1、1);
uint8_t sync0 = swap_lsb_msb (0xC3);
ok &= write_reg (RF_IC、CC120X_SYNC0、&sync0、1);
uint8_t sync1 = swap_lsb_msb (0x2B);
ok &= write_reg (RF_IC、CC120X_SYNC1、&sync1、1);
uint8_t sync2 = swap_lsb_msb (0xB4);
ok &= write_reg (RF_IC、CC120X_SYNC2、&sync2、1);
现在发生的是:SI4463成功检测前导码、而不是其他任何情况。
我仍然不清楚这些内容、我似乎在文档中找不到它们。
发送的有效载荷是以 LSB 优先还是以 MSB 优先? CRC 也有同样的问题。
如果不符合我当前的协议、我能否更改它的传输方式?
您能帮我查询一下吗?