校初选复习(ADC和OLED显示部分)

一、ADC模块驱动编程

1. ADC+TIM+DMA采集交流信号

1.1采样率调整

采样率的定义:每秒内ADC进行转换(采样)的次数

ADC由定时器触发时,采样率即定时器的溢出频率;计算公式如下:

f 采样 = H C L K ( P S C + 1 ) ∗ ( A R R + 1 ) f_{采样}=\frac{HCLK}{(PSC+1)*(ARR+1)} f采样=(PSC+1)(ARR+1)HCLK
对于STM32F401CCU6的TIM2和TIM3,HCLK均为84,000,000
在程序中通过更改PSC和ARR的值即可实现实时调整采样率。

1.1.1如何检验采样率是否正确
一个被采信号周期内采集到波形的点数*波形频率=采样率

例如,当设置ADC的采样率为128Khz,采集一个频率为2Khz的正弦信号时,采集的点数为128个点,用所得到的数字量绘制出的波形如下
在这里插入图片描述
可以看见采集到的128个数字量恰好绘制出该正弦信号的两个周期,故一个被采信号周期内采集到的点数为64点,故采样率为64*2KHz=128Khz。

1.2数字量与模拟量的换算

当转换精度为N位时,模拟量与数字量的关系如下
模拟量 = 3.30 V 2 N ∗ 数字量 模拟量=\frac{3.30V}{2^{N}}*数字量 模拟量=2N3.30V数字量
基于此关系我们可以使用ADC来测量外部电压的最大最小值

1.3CubeMX配置

1.3.1 通道选择

在这里插入图片描述

1.3.2 触发选择

在这里插入图片描述

1.3.3 DMA配置

在这里插入图片描述

1.3.4 定时器配置

在这里插入图片描述

1.4 相关函数

(1) HAL_TIM_Base_Start()
(2) HAL_ADC_Start_DMA()

1.5注意事项

(1)输入电压范围:0-3.3V
(2)采样率要求: f 采样 ≥ 2 ∗ f 被测信号 f_{采样}\geq2*f_{被测信号} f采样2f被测信号

二、OLED显示模块驱动

1.配置方法

1.1 显示文本

1.1.1 u8g2_SetFont()

u8g2_SetFont用于设置u8g2的字体

函数原型:void u8g2_SetFont(u8g2_t *u8g2, const uint8_t *font)
其中第一个参数为u8g2显示结构体,第二个参数为对应的字体指针;

具体示例如下:
u8g2_SetFont(&screen,u8g2_font_7x13B_mf);

这里给大家提供了几个常用字体,大家可以根据实际情况使用:
u8g2_font_7x13B_mf
u8g2_font_6x12_mf
u8g2_font_6x10_mf
u8g2_font_5x8_mf
u8g2_font_04b_03b_tr

具体显示效果如下(从上到下依次对应上述字体)
在这里插入图片描述

1.1.2 sprintf()

将格式化的数据写入字符串缓冲区
函数原型 int sprintf(char *str, const char *format, …)

str:指向存储结果的字符串缓冲区的指针。

format:格式字符串,可能包含类似 printf() 中的转换说明符(如 %d、%f、%s 等)。

…:与格式字符串中的转换说明符相对应的额外参数。

sprintf() 返回写入字符串的字符数(不包括字符串末尾的 null 终止符),或者在发生错误时返回负值。

1.1.3 u8g2_DrawUTF8()

函数原型 void u8g2_DrawUTF8(u8g2_t *u8g2, uint16_t x, uint16_t y, const char *s);

用于在指定的坐标 (x, y) 处绘制一个 UTF-8 编码的字符串
u8g2:u8g2显示结构体。
x 和 y:是要绘制文本的起始坐标。
s:是一个指向包含 UTF-8 编码的字符串的指针。

1.1.4 u8g2显示变量

在main函数中写入如下代码

实现了对time变量参数的显示。对于其他变量(ADC的转换值,PWM的频率、占空比等)参数的显示大家可以仿照上述代码编写
在这里插入图片描述

1.2 显示图片

u8g2_DrawBitmap()
函数原型 u8g2_DrawXBM(&u8g2, x, y, width, height, bitmap);
其中:
&u8g2 是指向 U8g2 显示结构体的指针。
x 和 y 是图像左上角的坐标。
width 和 height 是图像的宽度和高度。
bitmap 是包含 XBM 位图数据的数组

其中bitmap数组由取模软件生成
这里要用到两个软件 Image2Lcd和PCtoLCD2002
生成方式如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在主函数中定义一个数组存放上文转换出来的数据
在这里插入图片描述
while(1)中写如下代码
在这里插入图片描述
显示效果如下,要显示其他图片大家仿照上述操作即可
在这里插入图片描述

1.3 其他函数

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷天楽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值