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

AD9361 NO-OS. Потоковая передача IQ в режиме DMA.

Пытаюсь организовать потоковую передачу IQ в ЦАП в режиме DMA трансивера AD9361. В коде который предоставляет AD по умолчанию стоит циклический режим: dac_dma_write(AXI_DMAC_REG_FLAGS, DMAC_FLAGS_CYCLIC), меняю этот на непрерывный dac_dma_write(AXI_DMAC_REG_FLAGS, DMAC_FLAGS_TLAST), жду конца передачи, анализирую dac_dma_read(AXI_DMAC_REG_START_TRANSFER, &reg_val), если 0, читаю dac_dma_read(AXI_DMAC_REG_IRQ_PENDING, &reg_val), жду, когда 0 и 1 бит этого регистра в 1. Та вот 0 бит START_OF_TRANSFER в единице, а 1 бит END_OF_TRANSFER в нуле. Если пропускать проверку этого регистра, то при следующей передаче AXI_DMAC_REG_START_TRANSFER остаётся в единице. Уже голову сломал, читал поддержку AD, вроде всё делаю правильно. Помогите решить проблему. Код прилагаю:

dac_dma_write(AXI_DMAC_REG_CTRL, 0);
dac_dma_write(AXI_DMAC_REG_CTRL, AXI_DMAC_CTRL_ENABLE);
dac_dma_write(AXI_DMAC_REG_IRQ_MASK, 0x0);
dac_dma_write(AXI_DMAC_REG_IRQ_PENDING, &reg_val);// здесь считываю 1
dac_dma_write(AXI_DMAC_REG_IRQ_PENDING, reg_val);
dac_dma_write(AXI_DMAC_REG_FLAGS, DMAC_FLAGS_TLAST);// устанавливаю непрерывный режим
dac_dma_write(AXI_DMAC_REG_SRC_ADDRESS, DAC_DDR_BASEADDR);//устанавливаю адрес
dac_dma_write(AXI_DMAC_REG_SRC_STRIDE, 0x0);
dac_dma_write(AXI_DMAC_REG_X_LENGTH, 4096 - 1);//задаю длину
dac_dma_write(AXI_DMAC_REG_Y_LENGTH, 0x0);
dac_dma_write(AXI_DMAC_REG_START_TRANSFER, 0x1);//старт первой передачи
dac_dma_read(AXI_DMAC_REG_START_TRANSFER, &reg_val);
do {
	dac_dma_read(AXI_DMAC_REG_START_TRANSFER, &reg_val); //считываю 0, передача поставлена в очередь
}
while(reg_val == 1);


do {
  dac_dma_read(AXI_DMAC_REG_IRQ_PENDING, &reg_val); //читаю биты START_OF_TRANSFER( '1' ) b END_OF_TRANSFER( '0' ) 
	}
while(reg_val != (AXI_DMAC_IRQ_EOT | AXI_DMAC_IRQ_SOT));// не выполняется т.к. END_OF_TRANSFER всегда в нуле
//// пробовал убирать эту проверку, но тогда при следующей передачи, когда читаю dac_dma_read(AXI_DMAC_REG_START_TRANSFER, &reg_val), он всегда в единице

 

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


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

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

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

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

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

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

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

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

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

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