我最近遇到了个很奇怪的问题,在使用NUC130RE3CN的时候,我ADC用了两个通道ADC3、ADC4,单端输入,循环扫描方式,使能了PDMA,设置PDMA是源地址是ADDR3的地址,目标地址是unsigned long型的数组adc_result[20],方向是由ADC到数组,一开始很正常,adc_result[0]、adc_result[2]、adc_result[4]……adc_result[18]存放的是ADDR3中的数据,adc_result[1]、adc_result[3]、adc_result[5]……adc_result[19]存放的是ADDR4中的数据,这样我可以根据数组成员序号分别得提取出我需要的通道3和通道4的结果。但我最近修改程序发现了一个问题,在增加一些与ADC和PDMA无关的应用程序时,会影响PDMA的传输结果,ADC的结果在向PDMA传输时错位了,变成了adc_result[0]、adc_result[2]、adc_result[4]……adc_result[18]存放的是ADDR4中的数据,adc_result[1]、adc_result[3]、adc_result[5]……adc_result[19]存放的是ADDR3中的数据,这样我在使用通道3和通道4转换结果的时候就正好反了。请问大家有没有遇到这种情况?NUC100系列的PDMA虽有8个通道,但最多只给ADC分配一个通道,但用户使用ADC往往可能不只使用一个通道。在使用多个ADC通道的情况下,还想使用PDMA的话大家都怎么处理呢?是像我那样处理吗?我感觉是有漏洞的,很危险,我看网上有其他人是在每次PDMA传输完成后变换一次源地址,我觉得这样虽然可以,但是太麻烦了吧?请指教。。 |