当前位置:   article > 正文

杰发科技AC7840——ADC简介(1)_双路ADC同时使用

杰发科技AC7840——ADC简介(1)_双路ADC同时使用

0. 简介

1. 特性

2. 双路ADC

Sample里面没有双路的,以为那个规则组只有一个通道,看了外设寄存器才发现,原来他的通道是双路的。

注意1: ADC硬件引脚的配置

注意2: 规则组长度设置和

RSEQ序列号和CH通道号组合应该就对应了转换顺序,如下图所示配置

  1.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_0, ADC_CH_9);
  2.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_1, ADC_CH_8);
  3.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_2, ADC_CH_12);
  4.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_3, ADC_CH_1);
  5.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_4, ADC_CH_5);
  6.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_5, ADC_CH_4);
  7.  ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_6, ADC_CH_7);
  8.  ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_0, ADC_CH_12);
  9.  ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_1, ADC_CH_7);
  10.  ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_2, ADC_CH_13);

代码如下:

  1. void ADC_Init(void)
  2. {
  3. adc_converter_config_t adcConfig;
  4. /*! ADC输入端口(电位器)配置*/
  5. GPIO_DRV_SetMuxModeSel(VR1_PORT, VR1_PIN, PORT_PIN_DISABLED); /*! 电位器VR1*/
  6. GPIO_DRV_SetMuxModeSel(VR2_PORT, VR2_PIN, PORT_PIN_DISABLED); /*! 电位器VR2*/
  7. GPIO_DRV_SetMuxModeSel(PORTD, 2, PORT_PIN_DISABLED); /*! 电位器VR2*/
  8. /*! ADC配置
  9. 配置ADC为12位分辨率,工作模式为MODE3规则组扫描+注入组扫描模式多通道单次转换,规则组长度为4。
  10. 每触发一次进行一次ADC转换,每次转换规则组中的4个通道。
  11. */
  12. ADC_DRV_Init(ADC_INDEX);
  13. ADC_DRV_InitConverterStruct(&adcConfig);
  14. adcConfig.clockDivide = ADC_CLK_DIVIDE_6; /*! ADC时钟分频。ADC时钟源选择在时钟初始化里配置,此例程选择为SPLLDIV2_CLK,频率为60MHz*/
  15. adcConfig.resolution = ADC_RESOLUTION_12BIT; /*! ADC分辨率设置*/
  16. adcConfig.regularTrigger = ADC_TRIGGER_INTERNAL; /*! 规则组触发源类型选择*/
  17. adcConfig.injectTrigger = ADC_TRIGGER_INTERNAL; /*! 注入组触发源类型选择*/
  18. adcConfig.dmaEnable = false; /*! DMA使能位*/
  19. adcConfig.voltageRef = ADC_VOLTAGEREF_VREF; /*! ADC参考电压源选择,VREF/VDDA*/
  20. adcConfig.scanModeEn = true; /*! 工作模式配置:扫描模式使能位,多通道时需要使能扫描模式,单个通道时不需要使能扫描*/
  21. adcConfig.continuousModeEn = false; /*! 工作模式配置:连续模式使能位,1:触发后可连续转换,0:触发一次只转换一次,转换完成后停止*/
  22. adcConfig.regularDiscontinuousModeEn = false; /*! 工作模式配置:规则组不连续模式使能位*/
  23. adcConfig.injectDiscontinuousModeEn = false; /*! 工作模式配置:注入组不连续模式使能位*/
  24. adcConfig.injectAutoModeEn = false; /*! 工作模式配置:自动注入模式使能位*/
  25. adcConfig.intervalModeEn = false; /*! 工作模式配置:间隔模式使能位*/
  26. adcConfig.regularDiscontinuousNum = 0; /*! 规则组子组长度 (用于mode7)*/
  27. adcConfig.regularSequenceLength = 4; /*! 规则组长度设置*/
  28. adcConfig.injectSequenceLength = 0; /*! 注入组长度设置*/
  29. adcConfig.powerEn = true; /*! ADC上电*/
  30. ADC_DRV_ConfigConverter(ADC_INDEX, &adcConfig); /*! 初始化ADC配置*/
  31. /*! ADC通道配置*/
  32. ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_0, VR1_ADC_CH); /*! 电位器VR1对应通道*/
  33. ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_1, VR2_ADC_CH); /*! 电位器VR2对应通道*/
  34. ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_2, ADC_CH_TSENSOR); /*! 内部温度传感器通道*/
  35. ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_3, ADC_CH_SUPPLY); /*! 内部供电电压通道*/
  36. ADC_DRV_Init(ADC1_INDEX);
  37. ADC_DRV_InitConverterStruct(&adcConfig);
  38. adcConfig.clockDivide = ADC_CLK_DIVIDE_6; /*! ADC时钟分频。ADC时钟源选择在时钟初始化里配置,此例程选择为SPLLDIV2_CLK,频率为60MHz*/
  39. adcConfig.resolution = ADC_RESOLUTION_12BIT; /*! ADC分辨率设置*/
  40. adcConfig.regularTrigger = ADC_TRIGGER_INTERNAL; /*! 规则组触发源类型选择*/
  41. adcConfig.injectTrigger = ADC_TRIGGER_INTERNAL; /*! 注入组触发源类型选择*/
  42. adcConfig.dmaEnable = false; /*! DMA使能位*/
  43. adcConfig.voltageRef = ADC_VOLTAGEREF_VREF; /*! ADC参考电压源选择,VREF/VDDA*/
  44. adcConfig.scanModeEn = true; /*! 工作模式配置:扫描模式使能位,多通道时需要使能扫描模式,单个通道时不需要使能扫描*/
  45. adcConfig.continuousModeEn = false; /*! 工作模式配置:连续模式使能位,1:触发后可连续转换,0:触发一次只转换一次,转换完成后停止*/
  46. adcConfig.regularDiscontinuousModeEn = false; /*! 工作模式配置:规则组不连续模式使能位*/
  47. adcConfig.injectDiscontinuousModeEn = false; /*! 工作模式配置:注入组不连续模式使能位*/
  48. adcConfig.injectAutoModeEn = false; /*! 工作模式配置:自动注入模式使能位*/
  49. adcConfig.intervalModeEn = false; /*! 工作模式配置:间隔模式使能位*/
  50. adcConfig.regularDiscontinuousNum = 0; /*! 规则组子组长度 (用于mode7)*/
  51. adcConfig.regularSequenceLength = 1; /*! 规则组长度设置*/
  52. adcConfig.injectSequenceLength = 0; /*! 注入组长度设置*/
  53. adcConfig.powerEn = true; /*! ADC上电*/
  54. ADC_DRV_ConfigConverter(ADC1_INDEX, &adcConfig); /*! 初始化ADC配置*/
  55. ADC_ConfigChannel(ADC1_INDEX, ADC_RSEQ_0, ADC_CH_2); /*! 内部供电电压通道*/
  56. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/523499
推荐阅读
相关标签
  

闽ICP备14008679号