你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8 ADC DMA采集多路数据问题

[复制链接]
muxi2007 提问时间:2012-12-21 23:50 /
论坛里有没有人用过stm8l ADC DMA方式采集多路数据的,最近在使用的时候碰到一个问题,使用ADC1采样6个通道数据,采用DMA方式,采样结果通过串口显示出来,DAM通过定时器控制,每秒启动一次,一次采集8组DMA数据,多数时候六个通道数据采样都正确,发现偶尔会有一组数据出错,六个通道的采样数据均不对, 尝试了各种办法一直没解决,特向大家求助。
/* Enable ADC1 clock */
    CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
    delay_10us(3);
    /* Enable DMA1 clock */
    CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);
    delay_10us(3);
    DMA_GlobalDeInit();
    DMA_DeInit(DMA1_Channel0);
    ADC_DeInit(ADC1);
    /* Initialize and configure ADC1 */
    ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_2);
    ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
    ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);
    /* Enable ADC1 */
    ADC_Cmd(ADC1, ENABLE);
    /* Enable ADC1 Channels 1 */
    ADC_ChannelCmd(ADC1, ADC_Channel_1, ENABLE); /* connected to Potentiometer RV */
    /* Enable ADC1 Channels 2 */
    ADC_ChannelCmd(ADC1, ADC_Channel_2, ENABLE); /* connected to Potentiometer RV */
    /* Enable ADC1 Channels 8 */
    ADC_ChannelCmd(ADC1, ADC_Channel_8, ENABLE); /* connected to Potentiometer RV */
    /* Enable ADC1 Channels 10 */
    ADC_ChannelCmd(ADC1, ADC_Channel_10, ENABLE); /* connected to Potentiometer RV */
    /* Enable ADC_Channel_TempSensor */
    ADC_ChannelCmd(ADC1, ADC_Channel_TempSensor, ENABLE); /* connected to Potentiometer RV */
    ADC_TempSensorCmd(ENABLE);
    ADC_SchmittTriggerConfig(ADC1, ADC_Channel_TempSensor, DISABLE);
    // Vref
    ADC_VrefintCmd(ENABLE);
    ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint, ENABLE);
    ADC_SchmittTriggerConfig(ADC1, ADC_Channel_Vrefint, DISABLE);
    /* Connect ADC to DMA channel 0 */
    SYSCFG_REMAPDMAChannelConfig(REMAP_DMA1Channel_ADC1ToChannel0);
    DMA_Init(DMA1_Channel0, (uint32_t)(&AdcBuffer),
            ADC1_DR_ADDRESS,
            //(uint16_t)(sizeof(AdcBuffer) / 2),
            6,
            DMA_DIR_PeripheralToMemory,
            DMA_Mode_Circular,
            DMA_MemoryIncMode_Inc,
            DMA_Priority_High,
            DMA_MemoryDataSize_HalfWord);
    /* DMA Channel0 enable */
    DMA_Cmd(DMA1_Channel0, ENABLE);
    /* Enable DMA1 channel0 Transfer complete interrupt */
    DMA_ITConfig(DMA1_Channel0, DMA_ITx_TC, ENABLE);
    /* DMA enable */
    DMA_GlobalCmd(ENABLE);
    /* Enable ADC1 DMA requests*/
    ADC_DMACmd(ADC1, ENABLE);
    delay_ms(5);
    /* start ADC convertion by software */
    ADC_SoftwareStartConv(ADC1);
}
 
收藏 评论0 发布时间:2012-12-21 23:50

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版