开源一款DDS信号发生扩展板-FreakStudio多米诺系列

ops/2025/2/27 11:36:29/

原文链接:

FreakStudio的博客

摘要

信号发生扩展板通过SPI接口生成可调频率和幅度的正弦波、方波和三角波,频率小于1MHz。支持幅度调节,提供原始和6倍放大输出接口。配备5阶低通滤波器、噪声抑制功能,优化信号稳定性。

往期推荐:

可能是全网最适合入门的面向对象编程教程:Python实现-嵌入式爱好者必看!

全网最适合入门的面向对象编程教程:00 面向对象设计方法导论

全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念

全网最适合入门的面向对象编程教程:02 类和对象的Python实现-使用Python创建类

全网最适合入门的面向对象编程教程:03 类和对象的Python实现-为自定义类添加属性

全网最适合入门的面向对象编程教程:04 类和对象的 Python 实现-为自定义类添加方法

全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签

全网最适合入门的面向对象编程教程:06 类和对象的 Python 实现-自定义类的数据封装

全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解

全网最适合入门的面向对象编程教程:08 类和对象的 Python 实现-@property 装饰器

全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系

全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则

全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法

全网最适合入门的面向对象编程教程:12 类和对象的 Python 实现-Python 使用 logging 模块输出程序运行日志

全网最适合入门的面向对象编程教程:13 类和对象的 Python 实现-可视化阅读代码神器 Sourcetrail 的安装使用

全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法

全网最适合入门的面向对象编程教程:15 类和对象的Python实现-__slots__魔法方法

全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则

全网最适合入门的面向对象编程教程:17 类和对象的Python实现-鸭子类型与“file-like object“

全网最适合入门的面向对象编程教程:18 类和对象的Python实现-多重继承与PyQtGraph串口数据绘制曲线图

全网最适合入门的面向对象编程教程:19 类和对象的 Python 实现-使用 PyCharm 自动生成文件注释和函数注释

全网最适合入门的面向对象编程教程:20 类和对象的 Python 实现-组合关系的实现与 CSV 文件保存

全网最适合入门的面向对象编程教程:21 类和对象的 Python 实现-多文件的组织:模块 module 和包 package

全网最适合入门的面向对象编程教程:22 异常捕获-异常和语法错误

全网最适合入门的面向对象编程教程:23 异常捕获-抛出异常

全网最适合入门的面向对象编程教程:24 异常捕获现-异常的捕获与处理:try/except语句、文件读写示例、Exception引用

全网最适合入门的面向对象编程教程:25 异常捕获-Python 判断输入数据类型

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:26 异常捕获-上下文管理器和with语句

全网最适合入门的面向对象编程教程:27 异常捕获-Python 中异常层级与自定义异常类的实现

全网最适合入门的面向对象编程教程:28 异常捕获-Python编程原则、哲学和规范大汇总

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:29 异常捕获-断言与防御性编程和help函数的使用

全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类

全网最适合入门的面向对象编程教程:31 Python的内置数据类型-对象Object和类型Type

全网最适合入门的面向对象编程教程:32 Python的内置数据类型-类Class和实例Instance

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

全网最适合入门的面向对象编程教程:34 Python的内置数据类型-Python常用复合数据类型:元组和命名元组

全网最适合入门的面向对象编程教程:35 Python的内置数据类型-文档字符串和__doc__属性

全网最适合入门的面向对象编程教程:36 Python的内置数据类型-字典

全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式

全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列

全网最适合入门的面向对象编程教程:39 Python 常用复合数据类型-集合

全网最适合入门的面向对象编程教程:40 Python 常用复合数据类型-枚举和 enum 模块的使用

全网最适合入门的面向对象编程教程:41 Python常用复合数据类型-队列(FIFO、LIFO、优先级队列、双端队列和环形队列)

全网最适合入门的面向对象编程教程:42 Python常用复合数据类型-collections容器数据类型

全网最适合入门的面向对象编程教程:43 Python常用复合数据类型-扩展内置数据类型

全网最适合入门的面向对象编程教程:44 Python内置函数与魔法方法-重写内置类型的魔法方法

全网最适合入门的面向对象编程教程:45 Python实现常见数据结构-链表、树、哈希表、图和堆

全网最适合入门的面向对象编程教程:46 Python函数方法与接口-函数与事件驱动框架

全网最适合入门的面向对象编程教程:47 Python函数方法与接口-回调函数Callback

全网最适合入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数

全网最适合入门的面向对象编程教程:49 Python函数方法与接口-函数与方法的区别和lamda匿名函数

全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类

全网最适合入门的面向对象编程教程:51 Python函数方法与接口-使用Zope实现接口

全网最适合入门的面向对象编程教程:52 Python函数方法与接口-Protocol协议与接口

全网最适合入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码

全网最适合入门的面向对象编程教程:54 Python字符串与序列化-字符串格式化与format方法

全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串

全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用

全网最适合入门的面向对象编程教程:57 Python字符串与序列化-序列化与反序列化

全网最适合入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的定义与实现

全网最适合入门的面向对象编程教程:59 Python并行与并发-并行与并发和线程与进程

更多精彩内容可看:

CM3调试系统简析

肝了半个月,嵌入式技术栈大汇总出炉

Avnet ZUBoard 1CG开发板上手—深度学习新选择

SenseCraft 部署模型到Grove Vision AI V2图像处理模块

比赛获奖的武林秘籍:10 一文速通“大唐杯”全国大学生新一代信息通信技术大赛

比赛获奖的武林秘籍:09 一文速通计算机设计大赛,比赛人必看的获奖秘籍

比赛获奖的武林秘籍:08 一文速通光电设计大赛,电子人必看

比赛获奖的武林秘籍:07 一文速通电子设计大赛,电子人必看的获奖秘籍!

比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验!

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容

比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南

比赛获奖的武林秘籍:03 好的创意选取-获得国奖的最必要前提

比赛获奖的武林秘籍:02 国奖秘籍-大学生电子计算机类竞赛快速上手的流程,小白必看

比赛获奖的武林秘籍:01 如何看待当代大学生竞赛中“卷”“祖传老项目”“找关系”的现象?

比赛获奖的武林秘籍:00 学科竞赛-工科类大学生绕不开的话题,你了解多少?

信号发生扩展板

1.总体介绍

image

image

image

信号发生扩展板是一种用于产生可调频率和幅度的不同波形的扩展板,具有以下主要特点:

  • 小尺寸设计:可以与XIAO系列主控板直接连接,也可以作为独立模块使用;使用IPEX1接口作为信号输入和输出,尺寸小。
  • SPI接口:提供SPI总线接口进行通信,也可进行堆叠式放置。
  • 信号频率和波形:支持输出频率小于1MHz的正弦波、方波和三角波,且无负波形输出。
  • 幅度调节:板载数字电位器作为分压器,可通过程序调节信号的幅度。
  • 输出接口:提供原始波形输出和6倍同相放大输出接口,并可根据需要连接,增强信号幅度。
  • 低通滤波和噪声抑制:配备5阶低通滤波器,截止频率为5.43 MHz,有效减少高频噪声,平滑输出波形。
  • 稳定性与噪声过滤:使用补偿电阻优化同相放大器性能,减少寄生效应,且运算放大器供电采用钽电容滤波,平滑电源噪声,确保高频稳定性。
    image

image

image

image

2.接口说明

2.1 通信接口

我们提供了一个SPI通信接口,当作为单独模块使用时,通过PH2.0连接线连接主控模块和扩展板,如下图所示:
image

也可以使用主控板直接插入到扩展板的排母接口上:
image

多个扩展板也可以通过更改外侧插孔中排针排母方向实现堆叠连接,此种情况主要用于需要更多输入通道进行波形输出,最多可以使用两个扩展板进行堆叠连接,输出两路原始信号波形或两路放大信号波形:
image

2.2 信号接口

在信号输出部分,我们可以使用不同类型的IPEX连接线与示波器或者其他信号处理模块连接:
image

3.硬件细节

3.1 稳定供电

在运算放大器部分,我们使用钽电容滤波,帮助平滑电源中的噪声,并稳定运放的工作电压;在芯片供电部分,我们使用了多种不同大小的电容,对高低频噪声进行有效滤除:
image

3.2 数字调幅

板载数字电位器作为分压器,能够通过程序调节信号的幅度,提供比机械电位器更为精确和稳定的控制,避免了机械磨损和接触不良等问题,提供更高的可靠性和耐用性,同时能够实现自动化控制,便于在复杂的应用中进行精确调节和远程调控:
image

3.3 信号放大

我们提供了原始波形输出和6倍同相放大输出接口,用户可以根据需要选择连接。为了优化放大器性能,同相放大器采用了补偿电阻设计,能够有效减少寄生电容和寄生电感的影响;同时,该设计控制了输入偏置电流引起的误差,并在一定程度上提升了带宽和相位裕度,从而确保放大器在高频时不会发生饱和或不稳定现象,提供更加稳定和精确的信号输出:
image

3.4 低通滤波

在信号放大输出端,DDS信号发生扩展板配备了一个5阶低通滤波器,截止频率为5.43 MHz。该滤波器的作用是有效地减少输出信号中的高频噪声,改善信号的质量,从而使得生成的波形在对信号质量要求较高的实验和测试场合能够更好地满足高精度和低噪声的需求:
image

4.提供代码和使用须知

在使用烧录完程序后的主控板通过扩展板输入或输出信号前,务必确保示波器或其他信号调理模块和信号输出端子接线正确,供电无误:
image

示例代码包括以下版本:

  • MicroPython版本信号发生扩展板MicroPython示例程序
  • Arduino版本信号发生扩展板Arduino示例程序

5.获取链接

  • 获取链接信号发生扩展板获取链接
  • 硬件开源链接硬件开源资料链接

image


http://www.ppmy.cn/ops/161664.html

相关文章

普中单片机-51TFT-LCD显示屏(1.8寸 STM32)

普中官方论坛: http://www.prechin.cn/gongsixinwen/208.html 普中科技-各型号开发板资料链接:https://www.bilibili.com/read/cv23681775/?spm_id_from333.999.0.0 27-TFTLCD显示实验_哔哩哔哩_bilibili 2.程序烧录 2.1设置彩屏驱动 3.实验效果

捌拾- 量子态层析 以及 布洛赫球 (1)

1. 奥卡姆剃刀 在上一篇学习文章中 柒拾玖- 贝尔不等式 ,我感觉,为啥这么量子计算的门槛那么高呢? 结果我打开了上级目录,发现,原来他是按首字母排序… 经过一系列查看,我挑了一个最简单的 量子态层析 …

1472.设计浏览器历史记录

这里是模拟浏览器的回退和前进 用一个列表来存储浏览器的历史记录 cur指向当前浏览器记录的位置 visit 就是清空之前访问过的历史记录,把当前的放进去 self.cur1代表进下一个访问 然后删掉 当前的和之前的,加入新的 前进和回退要考虑边界 class Browser…

UE5 Computer Shader学习笔记

首先这里是绑定.usf文件的路径,并声明是用声明着色器 上面就是对应的usf文件路径,在第一张图进行链接 Shader Frequency 的作用 Shader Frequency 是 Unreal Engine 中用于描述着色器类型和其执行阶段的分类。常见的 Shader Frequency 包括&#xff1a…

expdp 报错ORA-31693、ORA-02354、ORA-01591

某项目逻辑备份报错 ORA-31693: Table data object "amf"."TVON7LOG" failed to load/unload and is being skipped due to error: ORA-02354: error in exporting/importing data ORA-01591: lock held by in-doubt distributed transaction 22.26.10043…

docker的下载与使用(一)

本文默认使用linux系统以及会linux的基本指令,windows下安装docker较为繁琐 docker是什么 Docker 是一个开源的应用容器引擎,基于go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&…

Qt常用控件之多行输入框QTextEdit

多行输入框QTextEdit QTextEdit 是一个多行输入框控件,支持富文本和 markdown 格式,当文本内容超出编辑框的范围时能自动提供滚动条。 QPlainTextEdit 是只支持富文本格式的多行输入框,属性和使用上与 QTextEdit 几乎没有区别。 QTextEdit属…

openlayers结合turf geojson面获取面积和中心点

在 OpenLayers 中绘制 GeoJSON 面要素并计算面积和中心点,可以结合 OpenLayers 的 ol/format/GeoJSON 模块将 GeoJSON 数据转换为 OpenLayers 的 Feature,然后使用 Turf.js 进行计算。示例代码如下 import Map from ol/Map; import View from ol/View; …