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

SPI TX DMA

требуется по SPI передать 32 байта с помощью DMA без прерывания

камень bf532

SPI режим один мастер =CPU bf532

слейв - куда передать данные

 

часть инициализации SPI:

 

 *pSPI_FLG=0xFF40; //Activate XDCS & DeAssert all
*pSPI_CTL=0x1003; //Master, CPOL=0, CPHA=0, MSB First, 8Bit, DMA TX

 

передача с помощью дма:

 

 *pDMA5_PERIPHERAL_MAP=0x5000;

*pDMA5_CONFIG=FLOW_STOP|RESTART|WDSIZE_8|DI_EN;
ssync();

*pDMA5_START_ADDR=(void*)BANK1; // BANK1 - адрес буфера для передачи (в SDRAM)
*pDMA5_X_COUNT=32;
*pDMA5_X_MODIFY=1;
    
*pDMA5_CONFIG|=DMAEN;
ssync();

*pSPI_CTL|=(1<<14); //Enable SPI
ssync();

while(*pSPI_STAT&TXS); //Ждём пока буфер передачи станет пустым

*pDMA5_IRQ_STATUS=0x0001; //подтверждаем

*pSPI_CTL&=(~(1<<14)); //disable SPI
ssync();

 

передачи из буфера в периферийный слейв по SPI нет

 

в чём ошибка?

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


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

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

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

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

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

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

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

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

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

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