0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于小凌派RK2206开发板所制作的简易示波器

海阔天空的专栏 来源:凌智电子 作者:凌智电子 2022-05-06 17:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基于OpenHarmony + 小凌派RK2206开发板制作的简易示波器,实时采集波形,实时计算并实时显示对应的波形。OpenHarmony实时性较高,稳定性好,瑞芯微RK2206芯片接口丰富,OpenHarmony芯片适配稳定性好,做出来的简易示波器效果还不错。本文先做第一期的技术文档,后续将持续完善功能和技术文档更新。

一、 项目简介

本文基于OpenHarmony操作系统 + 小凌派RK2206开发板而做的简易示波器开发。

本开发以瑞芯微RK2206芯片 + OpenHarmony 3.0LTS操作系统 + 小凌派-RK2206开发板为基础,以模数转换芯片ADS1256为采集数据芯片实时采集,然后通过峰值检测和FFT变换算法处理采集数据,最后将处理完成的数据输送到LCD液晶屏上实时显示。

二、模块介绍

1. ADS1256模块

ADS1256是一款 24bit ADC转换模块。 ADS1256可以通过SPI进行访问 的高精度转换器

pYYBAGJ05DKANFcJAAGBvZ-n1mA058.png

上图为ADS1256芯片结构和引脚图,从图可以看出ADS1256的通道资源比较丰富,可以配置成8个单端ADC通道,也可以配置成4个差分通道。ADS1256的通信接口为串行接口,同时还有4个通用的IO口,不过这四个IO口不经常用到。

ADS1256内部有许多寄存器需要配置,相较于ADS1232用起来要复杂的多。

下面介绍一下ADS1256的初始化。

通过SPI通信配置ADS1256的参数,增益以及转换速率。

poYBAGJ05EyAXXL_AADK-5Zv-Es567.png

然后选择通道0,等待数据转换完成后获取他采集的AD值

pYYBAGJ05GKAQzNGAACzmQ_RpJY533.png

2.LCD液晶屏模块

本项目使用的是ST7789V, 用于单片驱动262K色图像TFT-LCD, 包含 720(240*3色) x 320 线输出,可以直接以SPI协议, 或者8位/9位/16位/18位并行连接外部控制器。ST7789V显示数据存储在片内240x320x18 bits内存中, 显示内存的读写不需要外部时钟驱动。

具体接线如下图所示:

其中,LCD液晶屏引脚功能描述,如下表5.3.1所示。

poYBAGJ05HeAIdB5AAAtPb-R2jo052.png

其中,LCD液晶屏与小凌派-RK2206开发板连接如下图所示:

pYYBAGJ05I2AVx4hAAH5Vom8zgY332.png

三、简易示波器功能的实现

1.峰值检测

通过查找ad采集的数据内的最大值和最小值,然后相减即得峰峰值。

poYBAGJ05KGARU8lAABLEM5YawU725.png

2.频率检测

通过FFT变换,FFT变换的数据需要两部分,实部和虚部,由于变换的是数据是AD采集的实数据,所以只需将采集的值存入实部,虚部存入零即可。通过变换将时域信号转换到频域,然后通过取模排序,然后计算即可得到频率。他的基本思想是把原始的 N 点序列,依次分解成一系列的短序列。充分利用 DFT 计算式中指数因子所具有的对称性质和周期性质,进而求出这些短序列相应的DFT 并进行适当组合,达到删除重复计算,减少乘法运算和简化结构的目的。当N是素数时,可以将DFT算转化为求循环卷积,从而更进一步减少乘法次数,提高速度。

(1)FFT变换函数

poYBAGJ05MCAQqOcAAFJhLs1vig763.png

(2)取模运算函数

pYYBAGJ05N6ANtufAABXs_jYLnI310.png

(3)然后将FFT变换的幅值进行排序,同时也对他们的下标进行了排序,以便后续的计算,即除了直流信号的第一个频率点即为改信号的频率。

poYBAGJ05PaAAqUdAAB0ogSa3RA599.png

4)通过计算即可得到频率,采样点数将采样频率进行平分,通过排序取得的幅值最大的那个点的下标进行相乘即为频率,1.47为补偿系数,因为ADS1256采集数据后有延时,导致进行FFT变换后所对应的幅值最大点的下标前移,导致计算频率时候会偏小。

pYYBAGJ05RGACc3NAAAImUQCN2w817.png

3.波形显示

通过将采集的幅值进行计算,使最后的值在屏幕大小的范围内,进行描点画图。

poYBAGJ05SuAbi3dAAC8sVQ_xlY975.png

四、心得体会

通过OpenHarmony操作系统 + 小凌派-RK2206开发板进行项目开发,OpenHarmony的实时性好,稳定性高,瑞芯微RK2206芯片接口比较丰富,移植适配稳定性较好,整体开发进度比较顺利,开发的难度都集中在数据处理算法上。通过这一次的应用开发,整体上对OpenHarmony和国产芯片开发还是蛮认可的,是一次不错的学习体验,特此记录!

来源:凌智电子

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 示波器
    +关注

    关注

    113

    文章

    6967

    浏览量

    194693
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113324
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20720
  • RK2206
    +关注

    关注

    0

    文章

    38

    浏览量

    2479
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3568开发板暗藏32位兼容开关?飞嵌入式带你一键解锁!

    RK3568是一款64位处理器,飞嵌入式为其提供的交叉编译器也是64位的,然而部分用户可能需要在RK3568开发板上运行32位应用。本文将详细阐述如何使用32位交叉编译器,编译出32
    的头像 发表于 07-19 08:49 4186次阅读
    <b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>暗藏32位兼容开关?飞<b class='flag-5'>凌</b>嵌入式带你一键解锁!

    睿擎RK3506J开发板开箱记录、初步调试

    睿擎基于RK3506J开发RK3506J是一款三核A7+M0的入门级工业MPU,由于其价位低,性能优异,近期收到热捧,各家都出了很多RK
    的头像 发表于 06-20 20:43 1877次阅读
    睿擎<b class='flag-5'>派</b><b class='flag-5'>RK</b>3506J<b class='flag-5'>开发板</b>开箱记录、初步调试

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制FLASH外设

    1、实验简介 本实验将演示如何在小-RK2206开发板上使用IOT库的FLASH接口,进行FLASH编程开发。 例程将创建一个任务,实现
    发表于 04-22 15:02

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制FLASH外设

    1、实验简介本实验将演示如何在小-RK2206开发板上使用IOT库的FLASH接口,进行FLASH编程开发。例程将创建一个任务,实现FL
    的头像 发表于 04-22 14:49 685次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制FLASH外设

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制UART外设

    1、实验简介 本实验将演示如何在小-RK2206开发板上使用IOT库的UART接口,进行UART编程开发。 例程将创建一个任务,通过配置
    发表于 04-22 14:27

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制UART外设

    1、实验简介本实验将演示如何在小-RK2206开发板上使用IOT库的UART接口,进行UART编程开发。例程将创建一个任务,通过配置UA
    的头像 发表于 04-22 14:22 794次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制UART外设

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介 本实验将演示如何在小-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。 例程将创建一个任务,通过
    发表于 04-21 11:08

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置
    的头像 发表于 04-21 10:39 892次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制GPIO中断

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO外设

    1、案例简介 本案例主要是如何在小-RK2206开发板上使用IOT库的GPIO接口,进行GPIO编程开发。 例程将创建一个任务,通过配置
    发表于 04-11 15:45

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO外设

    1、案例简介本案例主要是如何在小-RK2206开发板上使用IOT库的GPIO接口,进行GPIO编程开发。例程将创建一个任务,通过配置GP
    的头像 发表于 04-11 15:36 1614次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制GPIO外设

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制ADC外设

    1、案例简介 本案例主要讲解如何在小-RK2206开发板上使用IoT库的ADC接口,进行ADC编程开发。 例程内容为创建一个任务,读取按
    发表于 04-10 16:20

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制ADC外设

    1、案例简介本案例主要讲解如何在小-RK2206开发板上使用IoT库的ADC接口,进行ADC编程开发。例程内容为创建一个任务,读取按键的
    的头像 发表于 04-10 16:00 711次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制ADC外设

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制PWM外设

    1、案例简介 本案例是在小-RK2206开发板上使用IoT库PWM接口,进行PWM编程开发。 例程将创建一个任务,每隔5秒将PWM0~1
    发表于 04-09 09:37

    基于小RK2206开发板:OpenHarmony如何使用IoT接口控制PWM外设

    1、案例简介本案例是在小-RK2206开发板上使用IoT库PWM接口,进行PWM编程开发。例程将创建一个任务,每隔5秒将PWM0~10依
    的头像 发表于 04-09 08:59 2058次阅读
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>开发板</b>:OpenHarmony如何使用IoT接口控制PWM外设

    RK2206高性能微控制器特性概览

    RK2206是一款集成了高性能CPU、DSP以及丰富存储和接口选项的微控制器,专为满足现代嵌入式系统的多样化需求而设计。 核心性能:RK2206搭载了Cortex-M4F CPU,主频高达
    的头像 发表于 02-12 17:43 1589次阅读