Код
void Init_PPI(void)
{
int Number_of_Samples = 16;
int Number_of_Frames = 1;
int DMA_RX_first = 1;
// configure PPI
*pPPI_CONTROL = DMA32 | XFR_TYPE | 0x70 | 0x3800;
*pPPI_DELAY = 0x0000;
*pPPI_COUNT = Number_of_Samples - 1;
*pPPI_FRAME = Number_of_Frames;
// configure PPI DMA ( channel 0)
// *pPERIPHERAL_MAP = 0x00;
*pDMA0_CONFIG = 0x00C0 | WDSIZE_16 | WNR;
*pDMA0_NEXT_DESC_PTR = (&DMA_RX_first);
*pDMA0_X_MODIFY = 8;
*pDMA0_X_COUNT = Number_of_Samples;
*pDMA0_CONFIG = *pDMA0_CONFIG | DMAEN;
ssync();
*pPPI_CONTROL |= PORT_EN;
ssync();
}
{
int Number_of_Samples = 16;
int Number_of_Frames = 1;
int DMA_RX_first = 1;
// configure PPI
*pPPI_CONTROL = DMA32 | XFR_TYPE | 0x70 | 0x3800;
*pPPI_DELAY = 0x0000;
*pPPI_COUNT = Number_of_Samples - 1;
*pPPI_FRAME = Number_of_Frames;
// configure PPI DMA ( channel 0)
// *pPERIPHERAL_MAP = 0x00;
*pDMA0_CONFIG = 0x00C0 | WDSIZE_16 | WNR;
*pDMA0_NEXT_DESC_PTR = (&DMA_RX_first);
*pDMA0_X_MODIFY = 8;
*pDMA0_X_COUNT = Number_of_Samples;
*pDMA0_CONFIG = *pDMA0_CONFIG | DMAEN;
ssync();
*pPPI_CONTROL |= PORT_EN;
ssync();
}
Запускаю симулятор и вижу, что DMAx_IRQ_STATUS = 0x80 - тесть DMA работает, но передача данных остановлена. А почему она остановлена? А если поставить FLOW=0x7 то в статусе выходит 0xA - ошибка DMA.
Как настроить DMA на передачу в SDRAM и где нужно искать записанные данные?