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.

CC1310: Queue的长度设置

Part Number: CC1310

RFQueue_defineQueue(dataQueue_t *dataQueue, uint8_t *buf, uint16_t buf_len, uint8_t numEntries, uint16_t length)
{

  if (buf_len < (numEntries * (length + RF_QUEUE_DATA_ENTRY_HEADER_SIZE + RF_QUEUE_QUEUE_ALIGN_PADDING(length))))
  {
    /* queue does not fit into buffer */
    return (1);
  }

  /* Padding needed for 4-byte alignment? */
  uint8_t pad = 4-((length + RF_QUEUE_DATA_ENTRY_HEADER_SIZE)%4);

  /* Set the Data Entries common configuration */
  uint8_t *first_entry = buf;
  int i;
  for (i = 0; i < numEntries; i++)
  {
    buf = first_entry + i * (RF_QUEUE_DATA_ENTRY_HEADER_SIZE + length + pad);
    ((rfc_dataEntry_t*)buf)->status        = DATA_ENTRY_PENDING;        // Pending - starting state
    ((rfc_dataEntry_t*)buf)->config.type   = DATA_ENTRY_TYPE_GEN;       // General Data Entry
    ((rfc_dataEntry_t*)buf)->config.lenSz  = 0;                         // No length indicator byte in data
    ((rfc_dataEntry_t*)buf)->length        = length;                    // Total length of data field

    ((rfc_dataEntryGeneral_t*)buf)->pNextEntry = &(((rfc_dataEntryGeneral_t*)buf)->data)+length+pad;
  }
  /* Make circular Last.Next -> First */
  ((rfc_dataEntry_t*)buf)->pNextEntry = first_entry;

  /* Create Data Entry Queue and configure for circular buffer Data Entries */
  dataQueue->pCurrEntry = first_entry;
  dataQueue->pLastEntry = NULL;

  /* Set read pointer to first entry */
  readEntry = (rfc_dataEntryGeneral_t*)first_entry;

  return (0);
}

想要实现高速模式,在rfpacketTx中修改了射频配置(RF_cmdRadioSetup_hsm_4mbps),4M模式可以跑通,想要修改传输队列长度,上面是用到的队列定义,定义中uint16_t length,但是实际传输发现最大长度只能达到256字节,下面是我用串口将其整个队列结构打印出来的内容。

查找手册,数据分别代表的是4字节的*pNextEntry、一个字节的status、一个字节的config和两个字节的length,理论上说队列长度可以达到0xFFFF,但是实际上最多只能0x255。

请问:如何实现队列长度大于0x255?