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

news/2025/2/26 23:39:18/文章来源:https://www.cnblogs.com/FreakEmbedded/p/18740049

原文链接:

FreakStudio的博客

摘要

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

往期推荐:

学嵌入式的你,还不会面向对象??!

全网最适合入门的面向对象编程教程: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 类和对象的Python实现-异常和语法错误

全网最适合入门的面向对象编程教程:23 类和对象的Python实现-抛出异常

全网最适合入门的面向对象编程教程:24 类和对象的Python实现-异常的捕获与处理

全网最适合入门的面向对象编程教程:25 类和对象的Python实现-Python判断输入数据类型

全网最适合入门的面向对象编程教程:26 类和对象的Python实现-上下文管理器和with语句

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

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

全网最适合入门的面向对象编程教程:29 类和对象的Python实现-断言与防御性编程和help函数的使用

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

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

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

全网最适合入门的面向对象编程教程: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并行与并发-并行与并发和线程与进程

更多精彩内容可看:

给你的 Python 加加速:一文速通 Python 并行计算

一文搞懂 CM3 单片机调试原理

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

电子计算机类比赛的“武林秘籍”

一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库

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

工程师不要迷信开源代码,还要注重基本功

什么?配色个性化的电机驱动模块?!!

什么?XIAO主控新出三款扩展板!

信号发生扩展板

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.hqwc.cn/news/890421.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows系统更改/迁移用户目录

Windows系统更改/迁移用户目录Windows系统更改/迁移用户目录 迁移的原因C盘空间不足 不想将我的文档等放在C盘,方便重做系统 其他原因迁移有什么风险么目前没发现有什么风险迁移过程 准备工作 更改/迁移用户目录之前先自行备份当前用户的资料(下载目录、桌面文件等),以免数…

[2025.2.26 JavaWeb学习]登录校验

流程图会话技术指浏览器与服务器的一次连接,直到某一方断开,某个浏览器的一次会话可以包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

cmcc_simplerop

打开ida查看,可以看到是静态编译,所以无法常规用ret2libc此时可以用最简单的方法系统调用 首先ida上面的偏移量是错误的,我们手动用gdb算一下距离ebp为0x1c因为要实现execve("/bin/sh",0,0)找int 0x80,eax,ebx,ecx,edx因为程序里面没有binsh或sh,所以我们得手动…

day4复健-字符串

题目练习:反转字符串 知识学习: StringBuilder:内容可变的字符串容器StringJoiner练习: 阿拉伯数字转换为罗马数字练习2:练习3:

软件开发与创新——万年历功能新增与代码优化

一、项目名称与来源 上海海洋大学C语言期末大作业 二、原项目运行 运行环境: 系统:Windows11 24H2 cpu:i7-10750H 编译器:Dev c++ 5.11 运行结果:点击查看代码 #include <stdio.h> #include <stdlib.h>// 定义每个月的天数,第一行为平年,第二行为闰年 int d…

逆向软件设计和开发---学生信息管理程序

一、来源 源代码来自同学大一上学期C语言大作业 二、运行环境 Dev-C++ 6.3 三、源代码及运行结果 1.源代码点击查看代码 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_NAME_LENGTH 20 #define MAX_SCORE_COUNT 5// 学生信息结构体…

在鹅厂做java开发是什么体验

离职已有好几个月,准备写一篇关于之前在腾讯做Java开发的经历,现在来谈谈在Java领域里,在腾讯做Java开发的体验。随便写写别较真。首先,介绍一下腾讯里与Java相关的部门。主要有CDG(云与智慧产业事业群)中的腾讯广告和FIT(金融科技事业群)理财通。其他部门则包括TEG中的…

软件二次开发

软件来源:舍友期末大作业 软件运行环境:dev C++ 软件运行图: 软件伸缩代码图: 问题:菜单只会出现一次,在多次操作之后菜单会被顶走,届时用户只能依照记忆操作系统 更改的代码: 在循环执行选项的代码部分增加了菜单的输出 更改后的代码运行:

换根dp

概念 换根 \(dp\) ,又被称为二次扫描,是属于树形 \(dp\) 的一类但比一般树形dp更难。 特点通常是没有指定根结点,且根结点的变化会对一些值产生影响。通常需要两次 \(dfs\) ,第一次 \(dfs\) 预处理信息,第二次 \(dfs\) 开始换根动态规划。求解的答案通常需要结合所有相连的…

千锋教育MyBatisPlus全套课程,简单快速一套精通MyBatisPlus框架(代码生成器_引入_使用)

https://www.bilibili.com/video/BV1aa4y1A7iN?spm_id_from=333.788.videopod.episodes&vd_source=0d7b1712ce42c1a2fa54bb4e1d601d78代码生成器_引入_使用 https://github.com/godmaybelieve

【PLSQL】使用PLSQL查看创表SQL踩坑

背景 通过PL/SQL Developer的View SQL查看表的创表语句,结果发现创表语句少了字段 可能原因PL/SQL Developer 的对象浏览器会缓存元数据信息以提高性能。如果修改表结构后未手动刷新,工具可能继续展示缓存中的旧元数据。 Oracle 的数据字典视图(如 USER_TAB_COLUMNS)本身是…

从 0 到 Offer:Dynamics 365 CRM 学员的普华永道逆袭之路

在竞争激烈的就业市场中,如何才能脱颖而出,收获理想的工作?李先顺(化名)的经历或许能给我们带来深刻的启示。这位出身普通高校信息管理专业的应届毕业生,通过在爱码士IT培训www.aimashi365.com机构的报名和培训,凭借着对 Dynamics 365 CRM 技术的深入学习和实践,成功入…