MicroPython内核开发笔记书内软件用例 :ADC 相关实验
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython内核开发笔记书内软件用例 :ADC 相关实验相关的知识,希望对你有一定的参考价值。
简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的ADC软件用例部分内容。
关键词
: MicroPython,MM32F3277
- 本书稿内容隶属于 MicroPython内核开发笔记:书内嵌入实验任务 中的内容。
软件用例:
这部分书稿内容包括有:
1.
2.
- 书稿内位置:
§01 书稿内容
在MM32F3277中 ADC总共 有16 个通道,对应外部端口分别是:
-
ADC通道对应的端口:
-
CH0~7
:PA0 ~ PA7
CH8,CH9
: PB0, PB1
CH10~CH13
:PC0 ~ PC3
CH14,CH15
:NULL
一、基础实验
1、读取ADC0电压
下面代码是读取 ADC0 通道,对应 PA0 管脚上的电压。 请注意,第一个 ADC 初始化的时候,需要将 init=True 参数代入。
读取 ADC 转换数值是通过 read_u16() 函数,它返回 0 ~ 0xffff 之间的数值,对应 ADC 输入电压 从 0V 到 参考电压(3.3V) 之间的数值。
from machine import Pin,ADC,DAC
import utime
adc0 = ADC(0, init=True)
while True:
print(adc0.read_u16())
utime.sleep_ms(200)
通过电位器,手工调节 PA0 管脚的电压,观察程序输出的数值,可以查看到随着输入电压增加, ADC 转换数值从 0 到 0xffff 变化。
2、ADC转换速率
在应用中,ADC转换速率是一个关键参数。下面代码通过读取 1024 个 ADC 转换值,测量总共所需要的时间,可以确定 ADC 最大转换速率。
from machine import ADC
import time
adc0 = ADC(0, init=True)
BUF_LENGTH = 1024
buf = [0] * BUF_LENGTH
startc = time.ticks_cpu()
for i in range(BUF_LENGTH):
buf[i] = adc0.read_u16()
endc = time.ticks_cpu()
print(endc - startc)
while True:
pass
程序运行,输出结果为 25。 这表明通过 MicroPython 采集 1024 个 ADC数值 大约花费 25ms。 因此,最高的采样频率可以达到 40kHz 左右。
二、ADC,DAC联合实验
下面代码演示了从ADC读取数据之后,然后通过DAC通道将信号输出。
from machine import DAC,ADC
import time
adc = ADC(0, init=True)
dac = DAC(0)
print("ADC to DAC .")
nowtime = time.ticks_ms()
while True:
dac.write_u16(adc.read_u16())
while True:
if time.ticks_ms() != nowtime:
nowtime = time.ticks_ms()
break
代码中应用了 time 读取系统时间,控制采样频率为 1kHz。
使用信号源,在 PA0 管脚输入 频率为 100Hz, 峰峰值为 1V,均值为 1.5V 的正弦波信号。下面显示了输入信号ADC信号与输出DAC信号。
▲ 图1.2.1 输入ADC采集信号与输出DAC信号
通过上述波形,可以看到在正弦波 一个周期(10ms)内完成了 8 次 AD,DA转换,这个实验结果也是验证了,当前MicroPython内核中 time 延时存在系统误差。实际延时时间需要乘以 1.25 倍。
※ 总 结 ※
本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的ADC软件用例部分内容。
一、存在问题
第二个实验中,由于需要使用到 time 读取系统时间,会发现,现在这个版本中的 time 读取的时间存在着系统误差。 与实际的时间之间相差 1.25倍,估计还是在内核实现中,对于CPU 内部基准频率常量没有设置正确所引起的。
■ 相关文献链接:
● 相关图表链接:
以上是关于MicroPython内核开发笔记书内软件用例 :ADC 相关实验的主要内容,如果未能解决你的问题,请参考以下文章
MicroPython内核开发笔记书内软件用例 :MEM相关实验用例
MicroPython内核开发笔记书内软件用例 :浮点数相关实验
MicroPython内核开发笔记书内软件用例 :DAC相关实验
MicroPython内核开发笔记书内软件用例 :Timer相关实验