bsp_saadc.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /********************** 头文件 *************************/
  2. #include "bsp_saadc.h"
  3. /********************** 变量区 *************************/
  4. static nrf_saadc_value_t saadc_val;
  5. //*****************************************************************//
  6. /********************** 函数声明区 *************************/
  7. /**
  8. @breif 函数功能:采集一次ADC
  9. @param none
  10. @return 采样值
  11. */
  12. int16_t GetOneSaadcSample(void)
  13. {
  14. nrf_gpio_cfg_output(PIN_ADC_EN);
  15. nrf_gpio_pin_write(PIN_ADC_EN,0);
  16. nrfx_saadc_sample_convert(0,&saadc_val); //采样当前ADC
  17. nrf_gpio_cfg_default(PIN_ADC_EN);
  18. return saadc_val;
  19. }
  20. /**
  21. @breif 函数功能:关闭芯片的ADC外设,降低功耗
  22. @param none
  23. @return none
  24. */
  25. void SaadcUnInit(void)
  26. {
  27. nrfx_saadc_channel_uninit(0);
  28. nrf_drv_saadc_uninit();
  29. }
  30. //阻塞模式不需要回调事件处理获取采样值
  31. void saadc_evt_callback(nrf_drv_saadc_evt_t const * p_event)
  32. {
  33. }
  34. uint32_t SAADC_Init(void)
  35. {
  36. ret_code_t err_code;
  37. //定义 ADC 通道配置结构体,并使用单端采样配置宏 初始化
  38. //NRF_SAADC_INPUT_AIN3 是使用的模拟输入通道
  39. nrf_saadc_channel_config_t channel_config =
  40. {
  41. .resistor_p = NRF_SAADC_RESISTOR_DISABLED, \
  42. .resistor_n = NRF_SAADC_RESISTOR_DISABLED, \
  43. .gain = NRF_SAADC_GAIN1_6, \
  44. .reference = NRF_SAADC_REFERENCE_INTERNAL, \
  45. .acq_time = NRF_SAADC_ACQTIME_10US, \
  46. .mode = NRF_SAADC_MODE_SINGLE_ENDED, \
  47. .burst = NRF_SAADC_BURST_DISABLED, \
  48. .pin_p = (nrf_saadc_input_t)(PIN_ADC_IN-1), \
  49. .pin_n = NRF_SAADC_INPUT_DISABLED \
  50. };
  51. // NRFX_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN3);
  52. //初始化 SAADC,注册事件回调函数
  53. err_code = nrf_drv_saadc_init(NULL,saadc_evt_callback);
  54. APP_ERROR_CHECK(err_code);
  55. //初始化 SAADC 通道
  56. err_code = nrfx_saadc_channel_init(PIN_ADC_CHANNEL,&channel_config);
  57. APP_ERROR_CHECK(err_code);
  58. return err_code;
  59. }