学习笔记——ADC模数转换器(二)

一、代码实现(CubeIDE)

1、查询模式

        1、时钟配置

        配置ADC1的1通道为独立模式、4分频、12位数据、右对齐、0增益补偿、非扫描模式、转换选择的常规通道结束、不使用低功耗自动等待模式、单次转换模式、不使用DMA、溢出数据保留。       

        启用常规转换、不使能定期过采样、序列数为1、触发源选择软件触发、无触发边缘检测。

        2、代码实现

         (1)数据校验

        (2)软件触发

        (3)ADC检测

        (4)检测EOC标志位

        (5)获取寄存器中的数据并进行数据转换。

        (6)通过串口打印出来当前的电压值

        3、代码结果

        我使用单步调试,在数据获取的这一行打了断点,在断点前数据都没有变化。

         在单步调试过了断点代码后,adc_value变量发生了改变。我测的是3.3v的电压,现象正确。

        下面是我用7逻辑分析仪抓取的捕获时长。我配置的SMP = 100: 47.5 ADC clock cycles、Tconv = 47.5 + 12.5 = 60ADC时钟周期。时钟频率F = 170/4 = 42.5MHz。采样时长应该是60/42.5 = 1.4117。但结果并不如此。

        可能是在程序中的GPIO口翻转时耗费了时间。

2、中断方式

        首先,配置好ADC打开中断

         在主函数中每隔500ms触发一次ADC中断转换

         在ADC回调函数中在串口上打印出来ADC值。

         代码运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值