[经验分享] GD32E231C_START ADC代码评测

littleshrimp   2019-3-21 20:09 楼主
Oversample_shift官方提供了GD32E230的外设库 因为两者大部分功能相同,另一方面是也别无选择,因为没有针对GD32E231的代码 使用GD32E230_Firmware_Library_V1.0.0下边的Examples\ADC测试了一下 工程上直接把对应的文件复制到Template下就可以运行 最开始我先测试了Temperature_Vref例程,因为不需要外接导线使用起来比较方便 使用IDE打开例程后可以一次编译成功,非常好 调试运行时能看到温度值变化,用手指加热芯片温度会上升 证明通过ADC读取内部温度传感器的数据是正常的 当然MCU片内温度传感器误差正负2、3摄氏度是很正常的就不和其它传感器做对比了 温度测量.png 然后我测试了Timer_trigger_injected_channel例程,运行后没有效果 看名称猜测是使用定时器触发采样的例程,在代码里没有找到读取ADC数据的选项 不知道这个例程是没有写完还是别有其它用途 Regular_channel_with_DMA例程DMA的方式读取ADC也是正常的 直接内存访问.png Resolution例程降分辨率测量也正常 降分辨率.png Oversample_shift例程过采样也正常 adc_oversample_mode_config(ADC_OVERSAMPLING_ALL_CONVERT, ADC_OVERSAMPLING_SHIFT_4B, ADC_OVERSAMPLING_RATIO_MUL16); ADC_OVERSAMPLING_RATIO_MUL16是过采样数量,ADC_OVERSAMPLING_SHIFT_4B是要丢掉的位数,如果设置成ADC_OVERSAMPLING_SHIFT_NONE后ADC的分辨率是16位,设置成ADC_OVERSAMPLING_SHIFT_4B使分辨率又降回12位 这样可以提高噪声性能 过采样.png Regular_channel_discontinuous_mode例程测试也正常 QQ图片20190321195845.png 最后在Analog_watchdog例程里又发现了问题 例程应该是通过设置一个ADC阈值,然后通过根据测量值触发中断 中断触发后LED2(对应为GD32E231C_START的LED3)会亮3秒然后熄灭 实际测试时LED3一直常亮,不论ADC的通道2是接电还是接地 使用示波器测量LED波形有非常短的低电平 断点打在ADC_CMP_IRQHandler里发现这个中断会反复触发 不 知道是不是程序设计的问题 本帖最后由 littleshrimp 于 2019-3-21 20:11 编辑
虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复