GD32307E-START开发板具有A/D转换的功能,以此可对外部的模拟信号进行采集。若将串口通信功能与其结合,则可对采集的数据进行直接的观察。
实现数据采集的主程序如下:
int main(void)
{
/* initialize the LEDs */
led_init();
/* configure systick */
systick_config();
/* flash the LEDs for 1 time */
led_flash(1);
/* configure EVAL_COM1 */
gd_eval_com_init(EVAL_COM1);
/* configure TAMPER key */
gd_eval_key_init(KEY_WAKEUP, KEY_MODE_GPIO);
/* output a message on hyperterminal using printf function */
printf( "\r\nThis is a ADC demo...... \r\n" );
/* system clocks configuration */
rcu_config();
/* GPIO configuration */
gpio_config();
/* NVIC configuration */
nvic_config();
/* ADC configuration */
adc_config();
adc_software_trigger_enable(ADC1, ADC_REGULAR_CHANNEL);
while(1)
{
adc_flag_clear(ADC1, ADC_FLAG_EOC);
while(SET != adc_flag_get(ADC1, ADC_FLAG_EOC));
adc_value = ADC_RDATA(ADC1);
printf("6B: 0x%x\r\n", adc_value);
delay_1ms(500);
}
}
所采集的数据则来自PA3引脚的ADC_CHANNEL_3,为便于观察变化的显著性,是采用直接在PA3引脚连接GND和VDD,其显示结果如图1和图2所示。
图1 检测GND
图2检测VDD
之所以在检测VDD时显示0x3f,是因为这里所选择的检测精度为6位精度,也就是说其最大值就是0x3f。
在基本数据采集的情况下,我们还可以为其配置相应的模拟信号传感器来获取相关物理信号的状态。例如可用光敏二极管与LM393运放相配合来检测环境的亮度,其接口电路如图3所示。此外,在添加继电器的情况下还能对亮度加以控制。
图3检测模块接口电路
图4 亮度检测电路
当光敏二极管接近LED发光二极管时,其检测值约为0x16;在日光灯下,其检测值为0x39。可见光照强度约强,则检测值越小,即电阻值越小。
图5 亮度检测值1(绿光)
图6 亮度检测值2(红光)
图6 亮度检测值3(日光灯)
图7 湿度检测值(浸水)
图8 湿度检测值(干燥)
感谢分享!赞一个!
多谢支持!!!