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

Добрый день, уважаемые!Помогите советом, пожалуйста! Хочу добиться чтобы данные из он-чип мемори через DMA поступали в spi. В Qsys подключаю read master DMA на control port on-chip memory, а write master на control port spi, также оба контрольных порта идут на NiosII. SPI - в режиме master. Функция передачи следующая

  

volatile alt_32 transmitdone=0;
void transmit_done()
{
    transmitdone=1;
}
/* ************************************************** *********************** */
/* The following routines is for memory-to-Peripheral processing. */
/* ************************************************** *********************** */
void copy_mem_to_p(const char* dma_name,
                    void* start_addr, //Here,start_addr is the "Memory"
                     void* desti_addr, //and desti_addr is the "Peripheral"
                     alt_32 transfer_count,
                     alt_32 transfer_mode)
{
alt_32 flag;
alt_dma_txchan txchan;

if((txchan=alt_dma_txchan_open(dma_name))==NULL)
{
    printf("\n Failed to open transmit channel(range-to-1)!\n");
    exit(1);
}
alt_dma_txchan_ioctl(txchan,transfer_mode,NULL);
alt_dma_txchan_ioctl(txchan,ALT_DMA_TX_ONLY_ON,desti_addr); 

if((flag=alt_dma_txchan_send(txchan,start_addr,transfer_count,transmit_done,NULL))<0)
{
    printf("\n Failed to post transmit request(range-to-1)!\n");
    exit(1);
}

while(!transmitdone);
transmitdone=0;
alt_dma_txchan_ioctl(txchan,ALT_DMA_TX_ONLY_OFF, NULL);
alt_dma_txchan_close(txchan);

}
//----------------
int main(void)
{
//в память записываю данные, которые хочу отправить по SPI
//....
//......

copy_mem_to_p(DMA_MEM2SPI_NAME,
                (void*)DMA_DSP_MEMORY_BASE, //Here,start_addr is the "Memory"
                (void*)SPI_FINISH_BASE, //and desti_addr is the "Peripheral"
                4,
                ALT_DMA_SET_MODE_32);



}

Проблема в том, что в transmit_done() захожу -флаг выставляю, а в окне памяти смотрю адрес SPI_FINISH_BASE - пусто.

Я правильно понимаю, что как только в tx_registr spi приходят данные он их сразу отправляет сам, не нужно больше никаких стимуляций? ))

Из spi в память через DMA у меня получилось передать - все хорошо, а тут не понимаю, что не так...

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


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

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

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

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

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

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

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

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

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

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