Sunday 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба есть функция, которая принимает/передает данные по 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 еще и на передачу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vishay 0 9 августа, 2007 Опубликовано 9 августа, 2007 · Жалоба есть функция, которая принимает/передает данные по SPI решил переделать с использованием PDC написал примерно такой код: <skipped> в таком виде почемуто не примимает вообще ( надо ли в этом случае инициировать pdc еще и на передачу? Епстественно ;) ;) Кто-ж клок-то будет генерировать? Вот, как сделано у меня: // 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sunday 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Епстественно для меня это тоже логично, но по хорошему SPI в этом случае мог бы и сам догадаться его генерить :)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SpiritDance 0 10 августа, 2007 Опубликовано 10 августа, 2007 · Жалоба Вы еще это... того... эррату посмотрите,,. она для SPI через PDC немаленькая Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться