你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
stm32f103c8 ad2,3,4,8采出来的电压不正确
[复制链接]
痆古酊旳琲伤
提问时间:2013-10-13 19:08 /
stm32f103c8 adin2,3,4,8采出来的电压不正确,只有0,1,5,7,9才出来的是正确的,现在要用6个ad采样,该怎么办?有知道为什么的吗?
赞
0
收藏
0
评论
5
分享
发布时间:2013-10-13 19:08
举报
请先
登录
后回复
5个回答
Hiker天下
回答时间:2013-10-14 16:15:57
a0a.1 0b0c
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
从楼主说所的情况,很有可能是 DMA使用了32位传递。 仔细查看配置AD使用16位传送模式。
赞
0
评论
回复
支持
反对
Hiker天下
回答时间:2013-10-14 16:16:40
a0a.1 0b0c
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
从楼主说所的情况,很有可能是 DMA使用了32位传递。 仔细查看配置AD使用16位传送模式。
赞
0
评论
回复
支持
反对
废鱼
回答时间:2013-10-14 17:11:35
a0a.1 0b0c
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
请楼主把ADC初始化代码发出来看一下,楼上的一键也要参考一下。
赞
0
评论
回复
支持
反对
dzc2001
回答时间:2013-10-14 17:58:50
a0a.1 0b0c
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
你把所有的采样结果读出来就知道了,确实像是32位传递,占用了别的
赞
0
评论
回复
支持
反对
痆古酊旳琲伤
回答时间:2013-10-23 13:06:10
a0a.1 0b0c
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);
}
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
RE:stm32f103c8 ad2,3,4,8采出来的电压不正确
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);
}