32G12K128 DMA ADC 问题请教
问题是这样的,用的dma adc 功能可以采集,但只能采集到一路,它并没有切换采集下一通道,我本来是想采集完一路,
切换下一路,然后再采集,
最后发现我这样写dma根本没切换
要把需要采集的通道一一写出来,然后再动用DMA
我是这样写的,看看为什么它没切换
,
问题是,只采集到了ma.
下面两路没切换采集,我这样理解不对吗
#define ADC_CH 3 // 1~16, ADC转换通道数, 需同步修改 DMA_ADC_CHSW 转换通道
#define ADC_NUM 256 // 每个通道ADC转换次数, 需同步修改DMA_ADC_CFG2 转换次数
unsigned char xdata DMA_Buffer _at_ DMA_ADDR;
DMA_ADC_RXAH=(unsigned char)(DMA_ADDR>>8); //ADC转换数据存储地址
DMA_ADC_RXAL=(unsigned char)DMA_ADDR;
DMA_ADC_CFG2=0x0F; //每个通道ADC转换次数:256
DMA_ADC_CHSW0=0x07; //ADC通道使能寄存器 ADC7~ADC0
DMA_ADC_CHSW1=0x00; //ADC通道使能寄存器 ADC15~ADC8
void DMA_ADC_Isr(void) interrupt 13 //重映射中断向量
{
DMA_ADC_STA=0;
Dma_Flag=1;
}
DebugLab 发表于 2024-8-30 09:08
#define ADC_CH 3 // 1~16, ADC转换通道数, 需同步修改 DMA_ADC_CHSW 转换通道
#define ADC_NUM 256 ...
你这也就是DMA的初始化和中断嘛,我没贴出来,我的问题是,采集没问题,如果采集多路,就要把多通道一起写出来,而不像其他写一个采集函数,然后想采集哪路,就调用采集函数 c20160526 发表于 2024-8-30 11:04
你这也就是DMA的初始化和中断嘛,我没贴出来,我的问题是,采集没问题,如果采集多路,就要把多通道一起 ...
是的,主要是配置DMA_ADC_CHSW0和DMA_ADC_CHSW1,然后DMA会按顺序存指定地址 DebugLab 发表于 2024-8-30 11:11
是的,主要是配置DMA_ADC_CHSW0和DMA_ADC_CHSW1,然后DMA会按顺序存指定地址
嗯嗯,难道DMA采集不能采集一路完后,再切换采集下一路,如果想采集那些路就必须全部写上,然后启动Dma c20160526 发表于 2024-8-30 15:39
嗯嗯,难道DMA采集不能采集一路完后,再切换采集下一路,如果想采集那些路就必须全部写上,然后启动Dma ...
不用手动切换,自动的 初始化时指定那些通道要参与DMA,启动后会自动切换通道直至按要求转换完成后,将标志置1.
页:
[1]