Перейти к содержанию
    

TI CC1310 подсматривать за статусом передатчика

В линейке TI есть изделие CC1310 (СС13xx-CC26xx) на борту которого процессор Cortex-M3 и радиомодуль, управляемый Cortex-M0. Программирую это через CodeComposerStudio, пользуюсь TI-RTOS, пересылаю пакеты данных с одного модуля на другой. Все работает, кроме возможности анализировать статус передатчика. Это нужно чтобы запускать АЦП во время радиотишины.

Отправляются пакеты вот такой командой EasyLink_transmit(&txPacket); команда ставит пакет в очередь и всегда возвращает EasyLink_Status_Success. То есть, отловить факт передачи по возвращаемому коду не получается. 

В составе команды, которую исполняет RF модуль есть 2 байта статуса, которые отражают именно текущий статус команды. Вроде, то, что нужно!  

An integer telling the status of the command. This value is updated by the radio CPU during operation and may be read by the system CPU at any time.

Однако, все попытки анализировать это поле cmdStatus = ((volatile RF_Op*)RFCommand)->status; Не дают никакого результата, status всегда 0x2000 и до выполнения команды и во время и после.

Что я делаю не так ???

PS: RFCommand это вот такая структура:

struct __RFC_STRUCT rfc_radioOp_s {
   uint16_t commandNo;             //!<        The command ID number
   uint16_t status;                //!< \brief An integer telling the status of the command. This value is
                                   //!<        updated by the radio CPU during operation and may be read by the
                                   //!<        system CPU at any time.
   rfc_radioOp_t *pNextOp;         //!<        Pointer to the next operation to run after this operation is done
   ratmr_t startTime;              //!<        Absolute or relative start time (depending on the value of <code>startTrigger</code>)
   struct {
      uint8_t triggerType:4;        //!<        The type of trigger
      uint8_t bEnaCmd:1;            //!< \brief 0: No alternative trigger command<br>
                                    //!<        1: CMD_TRIGGER can be used as an alternative trigger
      uint8_t triggerNo:2;          //!<        The trigger number of the CMD_TRIGGER command that triggers this action
      uint8_t pastTrig:1;           //!< \brief 0: A trigger in the past is never triggered, or for start of commands, give an error<br>
                                    //!<        1: A trigger in the past is triggered as soon as possible
   } startTrigger;                  //!<        Identification of the trigger that starts the operation
   struct {
      uint8_t rule:4;               //!<        Condition for running next command: Rule for how to proceed
      uint8_t nSkip:4;              //!<        Number of skips + 1 if the rule involves skipping. 0: same, 1: next, 2: skip next, ...
   } condition;
} __RFC_STRUCT_ATTR;

Эта структура сидит в ОЗУ и поле статуса должен менять Cortex-M0 то-ли через прямой доступ к памяти, то-ли через прерывание. Я собираю это поле в массив и просматриваю в JTAG-отладчике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, AndreyVN сказал:

и поле статуса должен менять Cortex-M0 то-ли через прямой доступ к памяти, то-ли через прерывание.

Я не знаком с этим контроллером, но может ему надо периодически ставить в очередь команду вроде Get_status?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мысль здравая, но нет похожей команды, посмотрел на всякий случай. 

Похоже, что с кодом все нормально. Передача происходит настолько быстро, что пользовательская часть программы не успевает отловить изменение статуса передатчика, CPU крутится где-то в дебрях ОС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...