器件型号:CC1120EM-420-470-RD
我已将代码移植到 Arduino UNO、可以成功运行 Tx/Rx 测试。
我想将固件移植到 STM32G071RB 板、并运行与 Arduino UNO 相同的初始寄存器设置值。
在发出无法正常运行的 STX 命令后、由于无法清除 TX FIFO、即使等待 GPIO2反馈或在 STM32 Tx 部件上等待500ms (至少)。
注意:我没有要评估的 TrxEB 板。 这就是我首先将 CC1120设置为 Arduino 的原因。
Arduino 寄存器设置如下所示:
CC112X_IOCFG3 b0
CC112X_IOCFG2 6.
CC112X_IOCFG1 b0
CC112X_IOCFG0 40.
CC112X_SYNC_CFG1 b.
CC112X_DCFILT_CFG 1c
CC112X_PREAMING_CFG1 18.
CC112X_IQIC C6
CC112X_CHAN_BW 8.
CC112X_MDMCFG0 5.
CC112X_AGC_REF 20
CC112X_AGC_CS_THR 19.
CC112X_AGC_CFG1 A9
CC112X_AGC_CFG0 CF
CC112X_FIFO_CFG 0
CC112X_Setting_CFG 3.
CC112X_FS_CFG 12.
CC112X_PKT_CFG0 20.
CC112X_PA_CFG2 77
CC112X_PKT_LEN 关断
CC112X_IF_Mix _CFG 0
CC112X_FREQOFF_CFG 22.
CC112X_FREQ2 72.
CC112X_FREQ1 60.
CC112X_FS_DIG1 0
CC112X_FS_DIG0 5F
CC112X_FS_CAL1 40.
CC112X_FS_CAL0 e
CC112X_FS_DIVTWO 3.
CC112X_FS_DSM0 33.
CC112X_FS_DVC0 17.
CC112X_FS_PFD 50.
CC112X_FS_PRE 6e
CC112X_FS_REG_DIV_CML 14.
CC112X_FS_SPARE AC
CC112X_FS_VCO0 b4
CC112X_XOSC5 e
CC112X_XOSC1 3.
CC112X_PARTNUMBER 48.
CC112X_SYNC3 93
CC112X_SYNC2 b.
CC112X_SYNC1 51.
CC112X_SYNC0 DE
------------------------------------------------------
以下代码是我的 STM32 Tx 过程:
while (1)
{
TrxSpiCmdStrobe (CC112X_SFTX);
set_didle();
cc112xSpiReadReg (CC112X_NUM_TXBYTES、&v、1);
reg ="NUM_TXBYTES (之前)";
print_register_value (reg、v);
cc112xSpiWriteTxFifo (sendData、strlen (sendData));
TrxSpiCmdStrobe (CC112X_STX);
while (!HAL_GPIO_ReadPin (GPIOB、GPIO_PIN_1));//GDO0引脚
while (HAL_GPIO_ReadPin (GPIOB、GPIO_PIN_1));//GDO0引脚
cc112xSpiReadReg (CC112X_NUM_TXBYTES、&v、1);
reg ="CC112X_NUM_TXBYTES (发送后)";
print_register_value (reg、v);
HAL_DELAY (500);
}
void set_didle()
{
uint8_t marcstate;
trxSpiCmdStrobe (CC112X_Sidle); //首先设置为空闲。 必须在中
执行{
cc112xSpiReadReg (CC112X_MARCSTATE、&marcstate、1);
} while (marcstate!= 0x41);
}
在初始寄存器之前、我先运行 trxSpiCmdStrobe (CC112X_SRES)。
我可以通过 STM32上的 SPI 访问/读取命令、只是想知道为什么相同的寄存器可以在 Arduino 上运行、但在 STM32上失败? 我是否错过了 CC1120上的任何设置?