Всех с рождеством! Помогите разобратьтся с DMA в LPC23xx. нужно при помощи DMA отправить и принять 4 кБ в SSP1-порт. Не мог понять, где чего-то не хватает. Настроено вроде все правильно, а DMA молчит. Как я понимаю, после установки битов в SSP1DMACR нужно только дождаться окончания работы DMA.. однако никакой передачи не происходит.
Код:
/* Enable GPDMA clock */
PCONP_bit.PCGPDMA = 1;
/* Clear GPDMA int.. */
DMACINTTCCLEAR = 0x03;
DMACINTERRCLR = 0x03;
// Cannel 0..
/* Ch0 set for M2P transfer from memory to SSP1. */
DMACC0SRCADDR = DMA_SRC;
DMACC0DESTADDR = DMA_SSP1DR;
DMACC0LLI = 0;
/* The burst size is set to 8, the size is Halfword (16 bit) bit too. */
/* Terminal Count Int enable */
DMACC0CONTROL = _dma_size | (0x02 << 12) | (0x02 << 15) | (0x01 << 18) | (0x01 << 21) | (1 << 26) | 0x80000000;
// Cannel 1..
/* Ch1 set for P2M transfer from SSP1 to memory. */
DMACC1SRCADDR = DMA_SSP1DR;
DMACC1DESTADDR = DMA_DST;
DMACC1LLI = 0;
/* The burst size is set to 8, the size is Halfword (16 bit) bit too. */
/* Terminal Count Int enable */
DMACC1CONTROL = _dma_size | (0x02 << 12) | (0x02 << 15) | (0x01 << 18) | (0x01 << 21) | (1 << 27) | 0x80000000;
/* Enable DMA channels, little endian */
DMACSYNC = 0;
DMACCONFIGURATION = 0x01;
while(!(DMACCONFIGURATION & 0x01));
DMACC0CONFIGURATION |= 0x18001 | (0x02 << 1) | (0x05 << 11);
DMACC1CONFIGURATION |= 0x08001 | (0x03 << 1) | (0x06 << 11);
/* Enable DMA TX and RX on SSP1 */
SSP1DMACR = 0x03;
while(1); // Ожидание окончания передачи данных
-
- Спасибо, - разобрался. - jsslen(07.01.2010 21:45)
- Так поделитесь, пожалуиста, мож кому пригодится - mimoprobegal(08.01.2010 12:13, )
- Спасибо, - разобрался. - jsslen(07.01.2010 21:45)