新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2014-3-18
- 在线时间
- 0 小时
|
5金钱
我现在做了一个双ADC同步规则模式,扫描模式,多次模式,CPU主频56M,ADC频率14M,采用DMA传输到数组ADC_ConvertedValue[6]中,因为有12个数据。
ADC1和ADC2的通道不一样,每个通道都采用ADC_SampleTime_7Cycles5
DMA配置情况是
/* DMA channel1 configuration */
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; //ADC???·
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;//???????·
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 6;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//???è???·???¨
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //???????·?????¨
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //×?
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //???·????
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
手册上说用32位的DMA传输,高16为数据位ADC2的数据,低16位的数据是ADC1的数据,这个是已经实测验证了
但是还有一个问题,由于ADC1—2是同步的,所以DMA传输到ADC_ConvertedValue[0]中应该是ADC1-2序列1的数据,但是我实测,却不是这样,
我实测的结果是:
复位之后 ADC1中序列1的数据在ADC_ConvertedValue[0]中,但是以后的ADC1中序列1的数据在ADC_ConvertedValue[2]中
不知道有没有人遇到同样的情况,最后是如何解决的呢
|
|