[学习笔记] 【AutoChips MCU评测报告】三、ADC

[复制链接]
1157|2
 楼主| lisingch 发表于 2020-6-12 14:37 | 显示全部楼层 |阅读模式
      本次进行模数转换器(ADC)实验,利用AC7811QBGE的ADC模块外部通道1采集LM35根据温度变化产生的数据,将采集到数据通过USB转串口工具发送至PC端并经串口助手软件显示。工程的建立同样使用了“AutoGen Studio”。

一、实验资源
1、AC7811-MINI开发板;
2、AutoGen Studio 1.2.0;
3、KEIL 5.28.0.0;
4、USB转串口工具;
5、LM35模块

二、资源简介
      AC7811QBGE微控制器的ADC模块共计有18个采样通道,其中外部16个;一个内部温度;一个内部带隙基准电压。转换序列包括一个规则组(可配置16个通道);一个注入组(可配置4个通道)。具有8种工作模式,支持中断、DMA、模拟看门狗。支持内部软件或外部硬件触发启动ADC。精度达12bit、最高转换速率为500K。是一个转换精度高、速度快、使用灵活的片上资源。
2020-06-09_114521.png
2020-06-09_114556.png
2020-06-09_114705.png
2020-06-09_114728.png
2020-06-09_114910.png

三、硬件连接
      选择了开发板JP1上的PA8端口与LM35模块的输出端连接,PA8对应ADC的通道1。
2020-06-12_141700.png
微信图片_20200612143313.jpg

四、代码实现
      使用“AutoGen Studio”创建ADC工程,过程也是非常简单、同时也非常省心。配置中基本上使用了默认参数,生成的工程再添加用户代码编译后没有得到想要的实验现象,检查了半天才发现少说了一句“ADC_Cmd(ADC, ENABLE);”。
由“AutoGen Studio”生成的ADC配置代码:
  1. void ATC_ADC_Init(void)
  2. {
  3.     ADC_InitType adcConfig;
  4.     ADC_TrigSourceType adcTrigSourceConfig;

  5.     MSP_ADC_Init(ADC);
  6.     adcConfig.dataAlign = ADC_DataAlign_Right;
  7.     adcConfig.scanMode = ADC_DISABLE;
  8.     adcConfig.continousMode = ADC_DISABLE;
  9.     adcConfig.disContinousModeOnRegularGroup = ADC_DISABLE;
  10.     adcConfig.disContinousModeOnInjectGroup = ADC_DISABLE;
  11.     adcConfig.injectAutoMode = ADC_DISABLE;
  12.     adcConfig.discNum = 0;
  13.     ADC_Init(ADC, &adcConfig);
  14.     ADC_SetClockPrescaler(ADC, 15);
  15.     adcTrigSourceConfig.regularTrigSource = ADC_TrigSource_Internal;
  16.     adcTrigSourceConfig.injectTrigSource = ADC_TrigSource_Internal;
  17.     ADC_TrigSourceInit(ADC, &adcTrigSourceConfig);
  18.     ADC_SetRegularGroupLength(ADC, 1);
  19.     ADC_DMACmd(ADC, ADC_DISABLE);
  20.     ADC_SetRegularGroupSequence(ADC, 1, ADC_CHANNEL_AD1);
  21.     ADC_SetInjectGroupLength(ADC, 1);
  22.     ADC_SetInjectGroupSequence(ADC, 1, ADC_CHANNEL_AD1);
  23.     ADC_AnalogWatchDogOnRegularChannelModeEnable(ADC);
  24.     ADC_AnalogWatchDogOnInjectChannelModeEnable(ADC);
  25.     ADC_AnalogWatchDogSingleChannelModeEnable(ADC);
  26.     ADC_AnalogWatchDogInterruptEnable(ADC);
  27.     ADC_ChannelSampleTimeSel(ADC, ADC_CHANNEL_AD1, ADC_SampleTime_6Cycle);

  28. }
  1. /* USER CODE BEGIN 1 */
  2. uint16_t GET_ADC_Value(void)
  3. {
  4.         static uint16_t ADC_Value;
  5.         ADC_SoftwareStartRegularConvCmd(ADC, ADC_ENABLE);
  6.         udelay(100);
  7.         while (!ADC_GetIntFlag(ADC, ADC_FLAG_EOC));
  8.         udelay(1);
  9.         ADC_Value = ADC_GetRegularConversionValue(ADC);
  10.        
  11.         return (uint16_t)ADC_Value;
  12. }
  13. /* USER CODE END 1 */

2020-06-12_143218.png

五、实验结果
2020-06-12_142132.png


marginer 发表于 2020-6-12 14:52 | 显示全部楼层
AutoGen Studio,很好
 楼主| lisingch 发表于 2020-6-12 16:28 | 显示全部楼层

容易上手,操作便捷
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

15005

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部