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

 
 
> Не могу запустить канал 2 DMA1, SPIrx -> mem (Stm32 HD)
kan35
сообщение Aug 12 2011, 11:21
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



В PIO SPI1 работает отлично
кроме того, работают каналы DMA1_Ch1 и DMA1_Ch3 - нет проблем, а вот с SPI - ни в какую. Посмотрите незамыленным взглядом:
Код
....
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
....

#define SPI1_DR_Address    (SPI1_BASE+0x0C)
unsigned char DFSPI1_DMARecceiveBlock (unsigned char * buff, unsigned long count)
{
    DMA_InitTypeDef dma_spi1_rx = {
        (uint32_t)SPI1_DR_Address,
        (uint32_t)buff,
        DMA_DIR_PeripheralSRC,
        count,
        DMA_PeripheralInc_Disable,
        DMA_MemoryInc_Enable,
        DMA_PeripheralDataSize_Byte,
        DMA_MemoryDataSize_Byte,
        DMA_Mode_Normal,
        DMA_Priority_VeryHigh, //DMA_Priority_Low,
        DMA_M2M_Disable
    };
    DMA_Init(DMA1_Channel2, &dma_spi1_rx);
    
    DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE);            // Enable Interrupt on transmition compleet

    SPI_I2S_DMACmd(SPI1, SPI_I2S_DMAReq_Rx, ENABLE);        // Enable Rx DMA

    DMA_Cmd(DMA1_Channel2, ENABLE);                            // Start Rx DMA

    while(!DMA_GetFlagStatus(DMA1_FLAG_TC2));                // Wait while recceive compleet
    
    DMA_Cmd(DMA1_Channel2, DISABLE);
    return 1;
}

Передача по SPI даже не начинается (счетчик в DMA не уменьшается)

Сообщение отредактировал kan35 - Aug 12 2011, 12:27
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:41
Рейтинг@Mail.ru


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