You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

56 rivejä
2.0 KiB

  1. /*****************头文件*************************/
  2. #include "fsl_common.h"
  3. #include "fsl_port.h"
  4. #include "fsl_gpio.h"
  5. #include "adc_Interrupt.h"
  6. #include "fsl_adc16.h"
  7. uint32_t g_Adc12ConversionValue = 0;
  8. uint32_t g_Adc12_Value = 0;
  9. uint32_t g_Adc12Count = 0;
  10. /*****************ADC初始化*************************
  11. * adc16ConfigStruct.referenceVoltageSource = kADC16_ReferenceVoltageSourceVref; //选择VREFL为参考电压
  12. * adc16ConfigStruct.clockSource = kADC16_ClockSourceAsynchronousClock;
  13. * adc16ConfigStruct.enableAsynchronousClock = true;
  14. * adc16ConfigStruct.clockDivider = kADC16_ClockDivider8;
  15. * adc16ConfigStruct.resolution = kADC16_ResolutionSE12Bit; //分辨率为12位,最大值4096
  16. * adc16ConfigStruct.longSampleMode = kADC16_LongSampleDisabled;
  17. * adc16ConfigStruct.enableHighSpeed = false;
  18. * adc16ConfigStruct.enableLowPower = false;
  19. * adc16ConfigStruct.enableContinuousConversion = false;
  20. *******************************************************/
  21. void ADC12_InterrputInit() //ADC初始化
  22. {
  23. /*ADC分辨率选择12位,最大值4096*/
  24. /*参考电压选择VREFL,连接VDDA(3.3V)*/
  25. adc16_config_t adc16ConfigStruct;
  26. adc16_channel_config_t adc16ChannelConfigStruct;
  27. EnableIRQ(ADC0_IRQn);
  28. ADC16_GetDefaultConfig(&adc16ConfigStruct);
  29. adc16ConfigStruct.enableContinuousConversion = true; //开启连续转换
  30. ADC16_Init(ADC0, &adc16ConfigStruct);
  31. ADC16_EnableHardwareTrigger(ADC0, false); //ADC软件触发
  32. adc16ChannelConfigStruct.channelNumber = 5u; //选择通道5
  33. adc16ChannelConfigStruct.enableInterruptOnConversionCompleted = true; //使能ADC中断触发标志
  34. ADC16_SetChannelConfig(ADC0, 0u, &adc16ChannelConfigStruct);
  35. }
  36. uint32_t adc_ReturnValue()
  37. {
  38. g_Adc12_Value = g_Adc12ConversionValue * 3040/ g_Adc12_12bitFullRange;
  39. return g_Adc12_Value; //放大1000倍
  40. }
  41. void ADC0_IRQHandler(void)
  42. {
  43. /* Read conversion result to clear the conversion completed flag. */
  44. g_Adc12ConversionValue = ADC16_GetChannelConversionValue(ADC0, 0u);
  45. g_Adc12Count++;
  46. g_Adc12Count %= 1000;
  47. SDK_ISR_EXIT_BARRIER;
  48. }