реклама на сайте
подробности

 
 
> Использование SPI_DMA в AT91SAM9
PuHaT
сообщение May 14 2009, 05:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 4-05-06
Пользователь №: 16 758



Всем привет!
Написал работающий код (без использования DMA) для передачи блока данных из SDRAM в SPI - все работает исправно.
Решил использовать DMA - возникли проблемы. Использую следующий код (в котором вызываются функции из spi.c):

/******************* Инициализация модуля SPI *************************/
void InitSPI1 (void)
{
// Конфигурирование MISO, MOSI, SPCK, NPCS0
AT91C_BASE_PIOB->PIO_ASR =\
AT91C_BASE_PIOB->PIO_PDR =\
AT91C_BASE_PIOB->PIO_MDDR = 0x0000000F;


SPI_Configure(AT91C_BASE_SPI1, AT91C_ID_SPI1, AT91C_SPI_MSTR | AT91C_SPI_PS | AT91C_SPI_MODFDIS | (0x19UL << 24));
SPI_ConfigureNPCS(AT91C_BASE_SPI1, 0, (1 << 24)|(1 << 16)|(6UL << 8)|AT91C_SPI_BITS_16|AT91C_SPI_CSAAT|AT91C_SPI_NCPHA);

SPI_Enable(AT91C_BASE_SPI1);
}

unsigned int INIT1[] = {0x00112233, 0x44556677, 0x8899AABB, 0xCCDDEEFF, 0x00112233, 0x44556677, 0x8899AABB, 0xCCDDEEFF};

/******************* Передача данных в SPI *****************************/
void SendData (void)
{
SPI_WriteBuffer(AT91C_BASE_SPI1, (void *)INIT1, 8);
mswait(10); // Задержка 10 мс
while(!SPI_IsFinished(AT91C_BASE_SPI1)); // Проверка окончания передачи данных
}

При вызове SendData () в регистр SPI1_TPR записывается адрес INIT1 (адрес SDRAM), в SPI1_TCR - длина блока. Проверил - все правильно. Но передается всего 4 байта вместо 48. Адрес увеличивается на 4 (SPI1_TPR), а SPI1_TCR уменьшается на единицу. И полный затык.
Ищу в гугле и на сайте атмела более подробную информацию, описывающую работу с SPI_DMA, но что-то ни наглядных примеров, ни каких-либо четких рекомендаций пока не нашел. Буду благодарен за любую информацию.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.06915 секунд с 7
ELECTRONIX ©2004-2016