ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
177515
jsslen (07.01.2010 15:42, просмотров: 1788) MBedder
Всех с рождеством! Помогите разобратьтся с 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); // Ожидание окончания передачи данных