OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4656|回复: 8

求助!!!!!!!!!!!!!!急~~~~~~~~~~~~~~~~~~~~~~~~~ADC问题

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-9-7
在线时间
0 小时
发表于 2013-9-8 22:37:02 | 显示全部楼层 |阅读模式

用8位精度的ADC  参考电压为3v   采样周期为239.5     ADC的频率为2.25Mhz    左对齐的方式    采样 500hz,1v的正弦波


用串口显示的数据为标准值的5倍左右


大神们给看看哪里出问题了






int main(void)
{
 u16 VolValue=0;
 RCC_INIT_();
 GPIO_INIT_();
 NVIC_INIT_();
 ADC_INIT_();
 USART_INIT_();
 while(1)
 {
  VolValue=ADC_GetConversionValue(ADC1)&0xff00;
  printf("\r\n  %d \r\n",VolValue/16);
 // _delay_ms(2);
 }
}

void RCC_INIT_(void)
{
 ErrorStatus HSEStartUpStatus;
  RCC_DeInit();
  RCC_HSEConfig(RCC_HSE_ON);
  HSEStartUpStatus=RCC_WaitForHSEStartUp();
  if(HSEStartUpStatus==SUCCESS)
  {
     RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div4);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    FLASH_SetLatency(FLASH_Latency_2);
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    //选择PLL时钟源为HSE1分频,倍数频为9,则PLL=8MHZ*9=72MHZ
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
    RCC_PLLCmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
   while(RCC_GetSYSCLKSource()!=0x08);
  }
  //RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB| RCC_APB2Periph_USART1, ENABLE);
}

void GPIO_INIT_(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 //串口
 //PA9 USART1 Tx
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_Init(GPIOA , &GPIO_InitStructure);
 //PA10 USART1 Rx
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA , &GPIO_InitStructure);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AIN;
  GPIO_Init(GPIOB , &GPIO_InitStructure);
}

void NVIC_INIT_(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
 //USART1
 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

int fputc(int ch,FILE *f)
{
  USART_SendData(USART1,(u8)ch);
  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
  return ch;
}

void ADC_INIT_(void)
{
 ADC_InitTypeDef ADC_InitStructure;
 
 RCC_ADCCLKConfig(RCC_PCLK2_Div8);
 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
 ADC_InitStructure.ADC_ScanConvMode = DISABLE;
 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Left;
 ADC_InitStructure.ADC_NbrOfChannel = 1;
 ADC_Init(ADC1, &ADC_InitStructure);
 
 ADC_RegularChannelConfig(ADC1,ADC_Channel_8,1,ADC_SampleTime_239Cycles5);
 ADC_Cmd(ADC1, ENABLE);
 ADC_ResetCalibration(ADC1);
 while(ADC_GetResetCalibrationStatus(ADC1));
 ADC_StartCalibration(ADC1);
 while(ADC_GetCalibrationStatus(ADC1));
 ADC_SoftwareStartConvCmd(ADC1,ENABLE);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-8 23:12:31 | 显示全部楼层
串口值是多少?配置貌似无问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-9-7
在线时间
0 小时
 楼主| 发表于 2013-9-9 08:44:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥  下面是一部分的串口显示值


320 

  0 

  576 

  0 

  480 

  0 

  144 

  48 

  0 

  544 

  0 

  608 

  0 

  240 

  0 

  0 

  592 

  0 

  576 

  0 

  112 

  0 

  0 

  560 

  0 

  512 

  0 

  192 

  0 

  0 

  592 

  0 

  432
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-9-7
在线时间
0 小时
 楼主| 发表于 2013-9-9 15:58:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥 我的程序已经调出来了  不用麻烦了  谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-9 17:23:41 | 显示全部楼层
恭喜
是什么问题啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-9-7
在线时间
0 小时
 楼主| 发表于 2013-9-9 21:26:30 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
USART只能传输1个字节 并且是低位的  我移位以后把数据分别放到了两个字节  所以数据就出错啦~~~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-9 21:36:09 | 显示全部楼层
回复【6楼】Echo_Rabbit:
---------------------------------
呵呵,原来如此
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-9-7
在线时间
0 小时
 楼主| 发表于 2013-9-10 11:13:29 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
原子哥,ADC选择的软件触发启动   即ADC_ExternalTrigConv_None

这样算是随机取样么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-10 22:56:02 | 显示全部楼层
NO,是你设置了这个以后启动的,也就是程序控制。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 08:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表