智能车制作
标题:
用gpio触发dma传输adc数据求大神帮忙看下哪里错了
[打印本页]
作者:
无形DE风.I3E
时间:
2013-5-27 22:02
标题:
用gpio触发dma传输adc数据求大神帮忙看下哪里错了
完全采集不到,PTB5有电平变化的,ADC0已经初始化为连续采集,使能dma
void Dma_init(void)
{
LPLD_eDMA_Cfg_t User_Def_DMA_Init_u; //声明DMA初始化结构体
User_Def_DMA_Init_u.Channelx =DMA_CH0; //设置为通道0,通道0采集
User_Def_DMA_Init_u.Peri_DmaReq =PORTB_DMAREQ; //IO B 产生DMA请求
User_Def_DMA_Init_u.Minor_loop_Length =128; //主循环次数
User_Def_DMA_Init_u.Source_Addr =(uint32_t)&ADC0_RA; //设置源地址,
User_Def_DMA_Init_u.Source_Size =DMA_SRC_8BIT;
User_Def_DMA_Init_u.Source_Addr_inc =0;
User_Def_DMA_Init_u.Dest_Addr =(uint32_t)Pixel; //目的地址为Pix_Data的首地址
User_Def_DMA_Init_u.Dest_Addr_inc =1; //目的地址不增加
User_Def_DMA_Init_u.Dest_Size =DMA_DST_8BIT;
User_Def_DMA_Init_u.Dma_irqc =1; //主循环次数为减少0,触发中断
User_Def_DMA_Init_u.isr_func =dman_isr; //自定义通道1中断服务子程序
//初始化DMA模块
DMA_Init(&User_Def_DMA_Init_u);
}
void GPIO_init()
{
LPLD_GPIO_Init(PTB, 5, DIR_INPUT, INPUT_PDOWN, IRQC_DMARI);
adc_init(ADC0, AD9) ;
}
void adc_continuous(ADCn adcn, ADC_Ch ch, ADC_nbit bit)
{
Master_Adc_Config.CONFIG1 = ADLPC_NORMAL | ADC_CFG1_ADIV(ADIV_1) | ADLSMP_LONG | ADC_CFG1_MODE(bit) | ADC_CFG1_ADICLK(ADICLK_BUS_2);
Master_Adc_Config.CONFIG2 = MUXSEL_ADCA | ADACKEN_DISABLED | ADHSC_HISPEED | ADC_CFG2_ADLSTS(ADLSTS_20);
Master_Adc_Config.COMPARE1 = 0x1234u;
Master_Adc_Config.COMPARE2 = 0x5678u;
Master_Adc_Config.STATUS2 = ADTRG_SW | ACFE_DISABLED | ACFGT_LESS | ACREN_DISABLED | DMAEN_ENABLED | ADC_SC2_REFSEL(REFSEL_EXT);
Master_Adc_Config.STATUS3 = CAL_OFF | ADCO_CONTINUOUS | AVGE_ENABLED | ADC_SC3_AVGS(AVGS_32);
Master_Adc_Config.PGA = PGAEN_DISABLED | PGACHP_NOCHOP | PGALP_NORMAL | ADC_PGA_PGAG(PGAG_64);
Master_Adc_Config.STATUS1A = AIEN_ON | DIFF_SINGLE | ADC_SC1_ADCH(ch);
// Master_Adc_Config.STATUS1B = AIEN_ON | DIFF_SINGLE | ADC_SC1_ADCH(ch);
adc_config_alt(ADCx[adcn], &Master_Adc_Config);
}
作者:
无形DE风.I3E
时间:
2013-5-27 22:05
发现LPLD库有个bug,下面代码会使Dest_Addr不管是填hold还是INCREASE,最后结果都是INCREASE
//如果用户没有设置 目的地址增加 默认为执行一次DMA请求后目的地址加一
if(DMA_Config->Dest_Addr_inc ==NULL)
{
DMA_Config->Dest_Addr_inc =ADDR_INCREASE; //针对目的地址的操作执行完毕后加1
}
应该把ADDR_INCREASE改成hold
作者:
无形DE风.I3E
时间:
2013-5-27 22:08
坐等老大和大神回答,我已经调了2天了都没调出来
作者:
zjght123
时间:
2013-5-27 22:13
我也在纠结adc+dma,坐等洋葱圈大神回答
作者:
oО開莳-
时间:
2013-5-27 22:14
顺便帮你说下是MK60芯片……
作者:
无形DE风.I3E
时间:
2013-5-28 01:46
请大神给点idea,今晚就守在电脑旁了
作者:
无形DE风.I3E
时间:
2013-5-29 15:57
真的没人来回答吗,伤心了
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2