char data[64]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2}; #include <cr_section_macros.h> #include <NXP/crp.h> void SSP0Init(); /******************************************************************************* ** Main Function main() *******************************************************************************/ int main (void){ SSP0Init();// Inicializo el bus SPI LPC_SC->PCONP |= 1 << 29; // Power up DMA LPC_GPDMACH0->DMACCConfig = 0; // stop ch0 dma //LPC_SC->DMAREQSEL |= 1 << 2; // Timer1 Match Compare 0 as DMA request LPC_GPDMACH0->DMACCSrcAddr = (uint32_t) &data[0]; // data[] is the array where I have stored alternating 1's and 0's. LPC_GPDMACH0->DMACCDestAddr = (uint32_t) &(LPC_SSP0->DR); // SSP0 LPC_GPDMACH0->DMACCLLI = 0; LPC_GPDMACH0->DMACCControl = 32 // Transferencia de 32 bytes, 1 burst | (1 << 12) // Burst de 1 bytes | (1 << 15) // Burst de 1 bytes | ( 1 << 26 ); // Source increment. LPC_GPDMACH0->DMACCConfig = ( 0 << 6 ) | ( 1 << 11); // Set SPI as destination request peripheral and the type pf transfer as Memory to Peripheral. LPC_GPDMA->DMACIntErrClr |= 0xff;//Clear all DMA interrupts LPC_GPDMA->DMACIntTCClear |= 0xff; LPC_GPDMA->DMACConfig |= 1 << 0; // enable DMA LPC_GPDMACH0->DMACCConfig |= 1; //enable ch0 while ( 1 ){ } } |
/******************************************************************************* ** Main Function main() *******************************************************************************/ int main (void){ SSP0Init();// Inicializo el bus SPI // setup timer1 LPC_SC->PCONP |= 1 << 2; // Power up LPC_SC->PCLKSEL0 |= 0x01 << 4; // CCLK -> 10nseg ticks LPC_TIM1->MR0 = 2000;// Match a los 10 segundos LPC_TIM1->MCR = 1 << 1; // reset on Match Compare 0 LPC_TIM1->IR |= 0xff; // Clear all timer interrupts if there are any LPC_TIM1->TCR = 2;// Pongo a 0 el Contador del Timer y queda desabilitado LPC_SC->PCONP |= 1 << 29; // Power up DMA LPC_GPDMACH0->DMACCConfig = 0; // stop ch0 dma LPC_SC->DMAREQSEL |= 1 << 2; // Timer1 Match Compare 0 as DMA request LPC_GPDMA->DMACIntErrClr |= 0xff; LPC_GPDMA->DMACIntTCClear |= 0xff; LPC_GPDMACH0->DMACCSrcAddr = (uint32_t) &data[0]; // hora[] is the array where I have stored alternating 1's and 0's. LPC_GPDMACH0->DMACCDestAddr = (uint32_t) &(LPC_SSP0->DR); // SSP0 LPC_GPDMACH0->DMACCLLI = 0; LPC_GPDMACH0->DMACCControl = 16 // Transferencia de 16 bytes | (1 << 12) // Burst de 8 bytes | (1 << 15) // Burst de 8 bytes | (1 << 26 ); // Source increment. LPC_GPDMACH0->DMACCConfig = ( 10 << 6 ) | ( 1 << 11); // Set MAT1.0 as destination request peripheral and the type pf transfer as Memory to Peripheral. LPC_GPDMA->DMACConfig |= 1 << 0; // enable DMA LPC_GPDMACH0->DMACCConfig |= 1; //enable ch0 LPC_TIM1->TCR = 0x01; // start timer. while ( 1 ){ } } |
LPC_GPDMACH0->DMACCConfig = ( 0 << 6 ) | ( 1 << 11); // Set SPI as destination request peripheral and the type pf transfer as Memory to Peripheral. |