GD32e231的ADC采集

[复制链接]
853|4
手机看帖
扫描二维码
随时随地手机跟帖
flycamelaaa|  楼主 | 2021-5-7 09:34 | 显示全部楼层 |阅读模式
  • void adc_config(void)
  • {
  •     /* ADC contineous function enable */
  •     adc_special_function_config(ADC_CONTINUOUS_MODE, ENABLE);
  •     /* ADC trigger config */
  •     adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);
  •     /* ADC data alignment config */
  •     adc_data_alignment_config(ADC_DATAALIGN_RIGHT);
  •     /* ADC channel length config */
  •     adc_channel_length_config(ADC_REGULAR_CHANNEL, 1U);
  •     /* ADC regular channel config */
  •     adc_regular_channel_config(0U, BOARD_ADC_CHANNEL, ADC_SAMPLETIME_55POINT5);
  •     adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);
  •     /* enable ADC interface */
  •     adc_enable();
  •     delay_1ms(1U);
  •     /* ADC calibration and reset calibration */
  •     adc_calibration_enable();
  •     /* ADC DMA function enable */
  •     adc_dma_mode_enable();
  •     /* ADC software trigger enable */
  •     adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
  • }

GD的ADC配置

  • void dma_config(void)
  • {
  •     /* ADC_DMA_channel configuration */
  •     dma_parameter_struct dma_data_parameter;
  •     /* ADC DMA_channel configuration */
  •     dma_deinit(DMA_CH0);
  •     /* initialize DMA single data mode */
  •     dma_data_parameter.periph_addr  = (uint32_t)(&ADC_RDATA);
  •     dma_data_parameter.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;
  •     dma_data_parameter.memory_addr  = (uint32_t)(&adc_value);
  •     dma_data_parameter.memory_inc   = DMA_MEMORY_INCREASE_DISABLE;
  •     dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;
  •     dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT;
  •     dma_data_parameter.direction    = DMA_PERIPHERAL_TO_MEMORY;
  •     dma_data_parameter.number       = 1U;
  •     dma_data_parameter.priority     = DMA_PRIORITY_HIGH;
  •     dma_init(DMA_CH0, &dma_data_parameter);
  •     dma_circulation_enable(DMA_CH0);
  •     /* enable DMA channel */
  •     dma_channel_enable(DMA_CH0);
  • }

ADC采集走DMA通道0

注意uint16_t adc_value;需要定义。

if(adc_value>10)
            {
                gpio_bit_set(GPIOA,GPIO_PIN_8);
            }
            else {
                gpio_bit_reset(GPIOA,GPIO_PIN_8);
            }


判断ADC的数值,大于100就点亮LED,否则就灭。


使用特权

评论回复
stormwind123| | 2021-5-7 10:18 | 显示全部楼层

GD 的库文件的说明基本上等于没有说。 例子程序也做成马马虎虎。全靠反复试才行。

使用特权

评论回复
probedog| | 2021-5-7 10:19 | 显示全部楼层

谢谢分享

使用特权

评论回复
呐咯密密| | 2021-5-7 10:36 | 显示全部楼层
感谢分享,希望可以多一些注释讲解。不然不熟悉GD的库看的有困难

使用特权

评论回复
嵌入小菜菜| | 2021-5-7 23:30 | 显示全部楼层
感谢楼主的分享,很不错的**。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

519

主题

1697

帖子

0

粉丝