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

 
 
 
Reply to this topicStart new topic
> прием данных по SPI через PDC
Alexey V.
сообщение Aug 9 2007, 06:21
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 10-05-06
Из: Russia, Tomsk
Пользователь №: 16 936



есть функция, которая принимает/передает данные по SPI
решил переделать с использованием PDC
написал примерно такой код:

Код
void Spi1Exec(INT8U *tx, INT8U *rx, INT16U rxtx, INT8U target)
{
   ....
        if(rxtx)
        {
            pSPI1->SPI_RPR = (INT32U)rx;
            pSPI1->SPI_RCR = rxtx;
            pSPI1->SPI_PTCR = AT91C_PDC_RXTEN | AT91C_PDC_TXTEN;
            while( !( pSPI1->SPI_SR & AT91C_SPI_ENDRX ) );
            pSPI1->SPI_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
        }
}

в таком виде почемуто не примимает вообще (
надо ли в этом случае инициировать pdc еще и на передачу?
Go to the top of the page
 
+Quote Post
Vishay
сообщение Aug 9 2007, 08:00
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 47
Регистрация: 7-12-06
Пользователь №: 23 243



Цитата(Alexey V. @ Aug 9 2007, 10:21) *
есть функция, которая принимает/передает данные по SPI
решил переделать с использованием PDC
написал примерно такой код:

<skipped>
в таком виде почемуто не примимает вообще (
надо ли в этом случае инициировать pdc еще и на передачу?

Епстественно wink.gif wink.gif Кто-ж клок-то будет генерировать?

Вот, как сделано у меня:
Код
    // Check if there is a "stuck" byte in receive register
    if (AT91C_BASE_SPI->SPI_SR & (AT91C_SPI_OVRES | AT91C_SPI_RDRF))
     i=AT91C_BASE_SPI->SPI_RDR;

    // Set up reception of input buffer
    AT91F_SPI_ReceiveFrame(AT91C_BASE_SPI,(char*) &SPIInput[0],sizeof(SPIInput),0,0);

    // Fire transmittion and reception
    AT91F_SPI_SendFrame(AT91C_BASE_SPI,(char*) &OutputBuf[0],sizeof(OutputBuf),0,0);
    // Wait until the reception is finished
    while(!((AT91C_BASE_SPI->SPI_SR) & AT91C_SPI_RXBUFF))
     vTaskDelay(portTICK_RATE_MS * 5);

    // Process input
    .....


При этом, прошу заметить, OutputBuf больше или равен по размеру SPIInput.
Go to the top of the page
 
+Quote Post
Alexey V.
сообщение Aug 10 2007, 02:28
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 10-05-06
Из: Russia, Tomsk
Пользователь №: 16 936



Цитата
Епстественно

для меня это тоже логично, но по хорошему SPI в этом случае мог бы и сам догадаться его генерить smile.gif)
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Aug 10 2007, 05:20
Сообщение #4


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Вы еще это... того... эррату посмотрите,,. она для SPI через PDC немаленькая


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:59
Рейтинг@Mail.ru


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