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

stm32f103c8 ad2,3,4,8采出来的电压不正确

[复制链接]
痆古酊旳琲伤 提问时间:2013-10-13 19:08 /
 stm32f103c8 adin2,3,4,8采出来的电压不正确,只有0,1,5,7,9才出来的是正确的,现在要用6个ad采样,该怎么办?有知道为什么的吗?
收藏 评论5 发布时间:2013-10-13 19:08

举报

5个回答
Hiker 回答时间:2013-10-14 16:15:57

RE:stm32f103c8 ad2,3,4,8采出来的电压不正确

从楼主说所的情况,很有可能是 DMA使用了32位传递。 仔细查看配置AD使用16位传送模式。
Hiker 回答时间:2013-10-14 16:16:40

RE:stm32f103c8 ad2,3,4,8采出来的电压不正确

从楼主说所的情况,很有可能是 DMA使用了32位传递。 仔细查看配置AD使用16位传送模式。
回答时间:2013-10-14 17:11:35

RE:stm32f103c8 ad2,3,4,8采出来的电压不正确

请楼主把ADC初始化代码发出来看一下,楼上的一键也要参考一下。
dzc2001 回答时间:2013-10-14 17:58:50

RE:stm32f103c8 ad2,3,4,8采出来的电压不正确

你把所有的采样结果读出来就知道了,确实像是32位传递,占用了别的
痆古酊旳琲伤 回答时间:2013-10-23 13:06:10

RE:stm32f103c8 ad2,3,4,8采出来的电压不正确

不好意思   回复晚了   下面的是我的初始化代码   数据位是半字16位  
void ADC1_Mode_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;
        ADC_InitTypeDef ADC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
       
        /* Enable DMA clock */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1        , ENABLE );          //ʹÄÜADC1ͨµÀʱÖÓ
       
       
                //PA1 ×÷ΪģÄâͨµÀÊäÈëÒý½Å                        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1|GPIO_Pin_2;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                //Ä£ÄâÊäÈëÒý½Å
        GPIO_Init(GPIOA, &GPIO_InitStructure);       
       
        /* 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 = 3;
        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;
        DMA_Init(DMA1_Channel1, &DMA_InitStructure);
       
        /* Enable DMA channel1 */
        DMA_Cmd(DMA1_Channel1, ENABLE);
       
        /* ADC1 configuration */
       
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;        //¶ÀÁ¢ADCģʽ
        ADC_InitStructure.ADC_ScanConvMode = ENABLE ;          //½ûֹɨÃèģʽ£¬É¨ÃèģʽÓÃÓÚ¶àͨµÀ²É¼¯
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;        //¿ªÆôÁ¬Ðø×ª»»Ä£Ê½£¬¼´²»Í£µØ½øÐÐADCת»»
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;        //²»Ê¹ÓÃÍⲿ´¥·¢×ª»»
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;         //²É¼¯Êý¾ÝÓÒ¶ÔÆë
        ADC_InitStructure.ADC_NbrOfChannel = 3;                 //Ҫת»»µÄͨµÀÊýÄ¿1
        ADC_Init(ADC1, &ADC_InitStructure);
       
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //ÉèÖÃADC·ÖƵÒò×Ó6 72M/6=12,ADC×î´óʱ¼ä²»Äܳ¬¹ý14M
        /*ÅäÖÃADC1µÄͨµÀ11Ϊ55.        5¸ö²ÉÑùÖÜÆÚ£¬ÐòÁÐΪ1 */
//         ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);
       
                //ÉèÖÃÖ¸¶¨ADCµÄ¹æÔò×éͨµÀ£¬Ò»¸öÐòÁУ¬²ÉÑùʱ¼ä
        ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADCͨµÀ,²ÉÑùʱ¼äΪ239.5ÖÜÆÚ                         
        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_239Cycles5 );
        ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_239Cycles5 );
       
        /* Enable ADC1 DMA */
        ADC_DMACmd(ADC1, ENABLE);
       
        /* Enable ADC1 */
        ADC_Cmd(ADC1, ENABLE);
       
        /*¸´Î»Ð£×¼¼Ä´æÆ÷ */   
        ADC_ResetCalibration(ADC1);
        /*µÈ´ýУ׼¼Ä´æÆ÷¸´Î»Íê³É */
        while(ADC_GetResetCalibrationStatus(ADC1));
       
        /* ADCУ׼ */
        ADC_StartCalibration(ADC1);
        /* µÈ´ýУ׼Íê³É*/
        while(ADC_GetCalibrationStatus(ADC1));
       
        /* ÓÉÓÚûÓвÉÓÃÍⲿ´¥·¢£¬ËùÒÔʹÓÃÈí¼þ´¥·¢ADCת»» */
//         ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版