This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1201 发送问题

Other Parts Discussed in Thread: CC1201

hello,

   使用MCU spi 控制cc1201发送数据,1201使用40M晶振,上电之后mcu SPI_CS拉低,读取的cc1201 SO为啥输出为高?测量的晶振给的时钟40M, 1V。

   于是我通过IO控制RESET_N引脚复位1201, 然后读SO是低,这样有问题么?

   使用软件生成配置参数:

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,          0x00},
  {CC120X_FS_CFG,            0x12},
  {CC120X_PKT_CFG2,          0x00},
  {CC120X_PKT_CFG0,          0x20},
  {CC120X_PKT_LEN,           0xFF},
  {CC120X_FREQOFF_CFG,       0x23},
  {CC120X_MDMCFG2,           0x00},
  {CC120X_FREQ2,             0x56},
  {CC120X_FREQ1,             0xCC},
  {CC120X_FREQ0,             0xCC},
  {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},
};

 参考easyLink example:

进行参数配置的时候过程:

比如{CC120X_IOCFG2,            0x06},

sendData=0x43,

 HAL_SPI_Transmit(&hspi, &sendData, 1, 0xff);
  /* Storing chip status */
  HAL_SPI_Receive(&hspi,&readValue, 1, 0xfff)

发现readvalue=0x0f,这个是表示TX_FIFO_ERR?

我把所有的参数配置完成,然后开始发送数据,拿频谱仪抓cc1201 PA是774.5M,这个也和我配置的868M不一样啊,请问这个774.5M是怎么产生的?

  • 你使用预设的cc120x_easy_link正常吗?

    // Read MARCSTATE to check for RX FIFO error
    cc120xSpiReadReg(CC120X_MARCSTATE, &marcState, 1);

    // Mask out MARCSTATE bits and check if we have a RX FIFO error
    if((marcState & 0x1F) == RX_FIFO_ERROR)


    你只需把你从smartrf studio7里面导出来替换 cc120x_easy_link_reg_config.h里面preferredSettings就可以。
    static const registerSetting_t preferredSettings[]= {
    {CC120X_IOCFG2, 0x06},
    {CC120X_DEVIATION_M, 0xD1},
    {CC120X_MODCFG_DEV_E, 0x00},
    {CC120X_DCFILT_CFG, 0x5D},
    {CC120X_PREAMBLE_CFG0, 0x8A},
    {CC120X_IQIC, 0xCB},
    {CC120X_CHAN_BW, 0xA6},
    {CC120X_MDMCFG1, 0x40},
    {CC120X_MDMCFG0, 0x05},
    {CC120X_SYMBOL_RATE2, 0x3F},
    {CC120X_SYMBOL_RATE1, 0x75},
    {CC120X_SYMBOL_RATE0, 0x10},
    {CC120X_AGC_REF, 0x20},
    {CC120X_AGC_CS_THR, 0xEC},
    {CC120X_AGC_CFG1, 0x51},
    {CC120X_AGC_CFG0, 0xC7},
    {CC120X_FIFO_CFG, 0x00},
    {CC120X_FS_CFG, 0x12},
    {CC120X_PKT_CFG0, 0x20},
    {CC120X_PA_CFG1, 0x3F},
    {CC120X_PKT_LEN, 0xFF},
    {CC120X_IF_MIX_CFG, 0x1C},
    {CC120X_FREQOFF_CFG, 0x22},
    {CC120X_MDMCFG2, 0x0C},
    {CC120X_FREQ2, 0x56},
    {CC120X_FREQ1, 0xCC},
    {CC120X_FREQ0, 0xCC},
    {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, 0x14},
    {CC120X_FS_SPARE, 0xAC},
    {CC120X_FS_VCO0, 0xB5},
    {CC120X_XOSC5, 0x0E},
    {CC120X_XOSC1, 0x03},
    };
  • 我的MCU和cc120x_easy_link的MCU不一样,所以SPI操作这块不一样,但是使用example里的默认955M的参数也是一样的问题。
    1. 就是为啥上电cs拉低,1201 so输出为高?
    2. 我操作spi写参数地址,读出的status是0x0f?
  • 感觉是你SPI 没调通, 正常读写的status 应该是0x00。
    你去调试你的MCU的SPI吧
  • 同样的SPI 读写存储器正常,我再查查SPI配置。
    然后就是上面的问题,mcu spi_cs 拉低,1201 SO输出为高,这个有没有可能是问题?
  • cc1201 片选晶振稳定后应该是低电平。你RESET引脚拉高了吗?
  • SPI应该发送正常的,我使用RF expert mode工具无论生成868M,434M参数,cc1201 rf out频谱仪都是捕获到774M. 我如果使用配置错误的参数,cc1201 rf out频谱仪上面都捕获不到,这样也证明了SPI写数据肯定正常。

    我看手册上chip status 低4bit Reserved,所以显示0xf应该也不是错误吧?

    还有可能是什么造成的我怎么设置配置参数,RF out都是774M左右?
    谢谢。
  • 你现在发送和接收正常对吧,也就是说你预设的频率改变了。

    这个不太理解,就算是硬件不好差的也有点多。

    我没有什么想法,建议你发到英文那边看看我们其他同事有什么 建议。

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156

  • 我现在就是知道 给SPI输入数据了还没有测试接收,仅仅就是频谱仪抓信号,发现我无论怎么配置,频谱仪都是770M左右,所以不能确定是1201没有锁定么? 我用的就是Standard FIFO Access mode,直接向0x7f写31字节长度;我如果采用Direct FIFO Access mode,是不是直接向0x3e00写31字节长度数据么?
  • hello, {CC1201_FS_CFG=0x12,
    我读了(FSCAL_CTRL)0x2f8d =0, 是不是表示1201 out of lock,没有锁住?
  • 建议你还是参考我们的demo修改一下接口,这些配置初始化在demo里面都有。