Guest User

adc-dma

a guest
Oct 8th, 2013
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.91 KB | None | 0 0
  1. tDMAControlTable ui8ControlTable[64];
  2. uint32_t DMAdata[4];
  3.  
  4.  
  5. int main(void) {
  6. SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
  7.     GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
  8.     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
  9.  
  10.     GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
  11.     GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2);
  12.  
  13.     SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
  14.     SysCtlPeripheralReset(SYSCTL_PERIPH_ADC0);
  15.  
  16.     ADCSequenceDisable(ADC0_BASE, 2);
  17.  
  18.     ADCSequenceConfigure(ADC0_BASE, 2, ADC_TRIGGER_PWM1, 0x00);
  19.     HWREG(0x4003801C) |= 0x1000;
  20.  
  21.     ADCSequenceStepConfigure(ADC0_BASE, 2, 0, ADC_CTL_CH0);
  22.  
  23.     ADCSequenceStepConfigure(ADC0_BASE, 2, 1, ADC_CTL_CH1);
  24.  
  25.     ADCSequenceStepConfigure(ADC0_BASE, 2, 2, ADC_CTL_CH0);
  26.  
  27.     ADCSequenceStepConfigure(ADC0_BASE, 2, 3, ADC_CTL_CH1|ADC_CTL_IE);
  28.  
  29.     ADCSequenceEnable(ADC0_BASE, 2);
  30.     ADCIntEnable(ADC0_BASE, 2);
  31.     IntEnable(INT_ADC0SS2);
  32.     IntPrioritySet(INT_ADC0SS2, 0x00);
  33.  
  34. SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
  35.  
  36.     uDMAEnable();
  37.     uDMAControlBaseSet(ui8ControlTable);
  38.     uDMAChannelAttributeDisable(UDMA_CHANNEL_ADC2, UDMA_ATTR_USEBURST | UDMA_ATTR_ALTSELECT |(UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK));
  39.     uDMAChannelControlSet(UDMA_PRI_SELECT|UDMA_CHANNEL_ADC2, UDMA_SIZE_32|UDMA_SRC_INC_NONE|UDMA_DST_INC_32|UDMA_ARB_4);
  40.     uDMAChannelTransferSet(UDMA_PRI_SELECT|UDMA_CHANNEL_ADC2, UDMA_MODE_BASIC, (void *)(ADC0_BASE + ADC_O_SSFIFO2), DMAdata, 4);
  41.     uDMAChannelEnable(UDMA_CHANNEL_ADC1);
  42. while(1)
  43.     {
  44.  
  45.     }
  46. return 0;
  47. }
  48.  
  49. void PWM1IntHandler(void)
  50. {
  51.     PWMGenIntClear(PWM1_BASE, PWM_GEN_1, PWM_INT_CNT_LOAD|PWM_TR_CNT_LOAD);
  52.     IntPendClear(INT_PWM1_1);
  53. }
  54.  
  55. void ADC0SS2IntHandler(void)
  56. {
  57.     ADCIntClear(ADC0_BASE, 2);
  58.     GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_1)^0x02);
  59.     uDMAChannelEnable(UDMA_CHANNEL_ADC2);
  60.     IntPendClear(INT_ADC0SS2);
  61.     GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_1)^0x02);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment