打印
[STM32L1]

stm32L15系列AD问题

[复制链接]
2546|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cl1018474554|  楼主 | 2012-12-13 17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我最近再学洗stm32L系列,想写一个单通道AD连续采样的例子。网上实在没找到什么例程,自己写的调试没成功,现在不知道问题出在哪,请各位帮帮忙!
这是我写的AD配置程序,应该配置完成就直接可以采样了吧!但没成功。
/**
*  AD转换器配置函数
*  @param  None
*  @return None
*/
void ADConfig(void)
{        
        GPIO_InitTypeDef GPIO_InitStructure;
        DMA_InitTypeDef  DMA_InitStructure;
        ADC_InitTypeDef  ADC_InitStructure;   
        
        /** 时钟配置:3V电源,AD,AD409 */
        RCC_AHBPeriphClockCmd(AD_RCC, ENABLE);        
        
        /** AD输入引脚配置 */
       GPIO_InitStructure.GPIO_Pin  = AD_PIN;
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;                  //模拟输入
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
       GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
       GPIO_Init(AD_PORT, &GPIO_InitStructure);                              
        
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);         
        DMA_DeInit(DMA1_Channel1);                                                                   /**< 配置通道 */
        DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;            /**< "桥梁"的一端,AD采样值 */
        DMA_InitStructure.DMA_MemoryBaseAddr     = (uint32_t)&ADC_Buffer;         /**< "桥梁"的另一端,内存存储基地址 */
        DMA_InitStructure.DMA_DIR                = DMA_DIR_PeripheralSRC;                 /**< 单向传输 */
        DMA_InitStructure.DMA_BufferSize         = AD_BUFFER_SIZE;                        /**< 缓存大小 */
        DMA_InitStructure.DMA_PeripheralInc      = DMA_PeripheralInc_Disable;          /**< 关闭外设指针的自动递增 */                                                                                                                                                                 
        DMA_InitStructure.DMA_MemoryInc          = DMA_MemoryInc_Enable;               /**< 开启内存指针的自动递增 */         
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; /**< 外设数据宽度 */
        DMA_InitStructure.DMA_MemoryDataSize     = DMA_MemoryDataSize_HalfWord;   /**< 内存数据宽度 */
        DMA_InitStructure.DMA_Mode               = DMA_Mode_Circular;                          /**< 循环缓存     */
        DMA_InitStructure.DMA_Priority           = DMA_Priority_High;                                /**< 优先级       */
        DMA_InitStructure.DMA_M2M                = DMA_M2M_Disable;                          /**< 禁用memory to memory */
        DMA_Init(DMA1_Channel1, &DMA_InitStructure);      
        DMA_Cmd(DMA1_Channel1, ENABLE);                                                                                                  
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);                 
        ADC_InitStructure.ADC_Resolution         = ADC_Resolution_12b;                            /**< 分辨率 12位 */
        ADC_InitStructure.ADC_ScanConvMode     = DISABLE;                      /**< 关闭扫描模式,只有1个通道时,一般关闭 */
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;                                      /**< 开启连续转换模式 */
        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;  /**< 关闭外部触发,使用软件触发(ADC_SoftwareStartConvCmd) */
        //ADC_InitStructure.ADC_ExternalTrigConv = ;
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                                     /**< 12位数据右对齐 */
        ADC_InitStructure.ADC_NbrOfConversion = 1;                                                       /**< 开启通道数,1个 */
        ADC_Init(ADC1, &ADC_InitStructure);        

        /**< 采样周期设为:采样时间:192cycles, 转化时间:12cycles, 总时间:(12+192)/16M = 13us; */
        ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_192Cycles);
        ADC_DMACmd(ADC1, ENABLE);
        ADC_Cmd(ADC1, ENABLE);

        while(ADC_GetFlagStatus(ADC1, ADC_FLAG_RCNR)!= SET);                /**< Regular channel not ready */
        while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS)!= RESET);                /**< ADC ON status */
        ADC_SoftwareStartConv(ADC1);                                                             /**< 软件触发 */        
}

这样配置行吗?
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝