发现HALCoGen中没有给出DMA和ADC的联合工作例子,所以自己写了一个,请大家参考。
这个例子的工作过程如下:
1. ADC使用ADC1的Event Group,24个通道全采集,非连续模式。
2. ADC转换的触发由N2HET1的HET1[8](pwm0)来触发,当前设置为1ms周期的触发信号。
3. ADC的24通道转换完成后,不产生中断而是触发DMA。
4. DMA将24通道的转换结果全搬移到adcData[24]这个数组里面,搬移完成后,产生DMA中断。
5. 调试时,用户可以在notification.c的dmaNotificationFTCA()这个函数中放断点,然后观察adcData[24]的内容。
6. 工程使用了最新的CCS v5.3.0,编译器也是最新的TI ARM compiler V5.0.1,所以打不开的同学可以升级CCS或者新建工程导入源文件。
Axel Gao:
dmaConfigCtrlPacket((uint32_t)(&(adcREG1->GxBUF[0])),(uint32_t)(&adcData),D_SIZE); 这句话中(&adcData),&取地址符是否多余?因为adcData 本身就是个数组,他已经是一个指针变量了。而且,我把程序烧进片内调试时,似乎试验的结果不太正确,每个channel ID的值都不是其本身的值。