
【星火计划】ProtoBlade调试终端
简介
ProtoBlade是一款高集成度、面向开发者的万能接口调试器,基于FPGA可重构平台,集成了JTAG、SPI、I2C、UART、逻辑分析仪、传感器接口等数十种调试功能,是电子工程师的理想开发工具。
简介:ProtoBlade是一款高集成度、面向开发者的万能接口调试器,基于FPGA可重构平台,集成了JTAG、SPI、I2C、UART、逻辑分析仪、传感器接口等数十种调试功能,是电子工程师的理想开发工具。开源协议
:GPL 3.0
描述
ProtoBlade
先看视频:
『⚡ 全功能多协议调试工具!🛠️ 开发者必备的接口分析平台 🔍』
项目简介
ProtoBlade 是一款高集成度、面向开发者的嵌入式协议调试与接口分析平台,采用 MCU 与 FPGA 协同架构,具备协议逻辑可定制、USB 高速传输、IO 多电平支持与多协议复用等关键能力。项目以开源工具链为基础,支持通过软件动态加载协议模块,无需重新烧录固件,即可灵活切换功能,实现“即插即用”的多协议调试体验。
通过标准接口映射和模块化固件设计,ProtoBlade 能够快速适配多种数字通信协议,包括 SPI、I2C、UART、JTAG、SWD、GPIO、PWM、MIDI、I2S 等主流接口,并支持协议之间的动态切换与多任务复用。其开放的硬件设计与上位机控制界面相结合,不仅为嵌入式开发提供高效的调试通道,也为逆向分析和故障测试等复杂任务提供低门槛、高自由度的硬件支持。
项目功能
ProtoBlade 的定位为开发者手中的“协议调试军刀”,同时兼顾性能、保护与灵活性,可广泛应用于硬件调试、原型验证、通信逆向、固件烧录、数据采集、接口注入、协议转换、教学实验等多个技术场景,是嵌入式系统开发、电子设计工程和硬件安全研究的重要辅助工具。
项目参数
| 模块分类 | 元器件型号 | 名称/功能 | 作用说明 | 电气特性 | 设计备注 |
|---|---|---|---|---|---|
| 主控 MCU | CY7C68013A | USB 转 FIFO 控制器 | 提供 USB 2.0 高速通信接口,负责数据通道控制与设备枚举 | 支持 USB 2.0 高速(480Mbps) | 内部包含 8051 内核,可烧录固件 |
| FPGA 主芯片 | iCE40HX8K | 可编程逻辑器件 | 处理所有协议解析与自定义逻辑,支持 SPI/I2C/UART 等协议模块运行 | 8K LUTs,开放工具链(IceStorm) | 使用 SPI Flash 加载 bitstream |
| 电平转换 | TXS0108E | 8 通道电平转换器 | 实现任意方向、任意电压(1.2V–5V)之间的IO兼容 | 支持双向自动感应,支持热插拔 | 所有协议 IO 经过转换后再输出 |
| 电源管理 | TPS62160 | 3.3V 降压稳压器 | 提供主逻辑供电(3.3V) | 输入电压范围宽,效率高 | 可配合 LDO 提供更低电压 |
| 电源管理 | AP63203 | 5V DC/DC 降压芯片 | 为高电压输入场景提供 5V 输出 | 3A 输出,适合外围设备供电 | 可实现 Vin 适配器供电场景 |
| 存储(FPGA) | W25Q32JVSIQ | SPI Flash | 存储 FPGA 的 bitstream 文件 | 32Mbit,支持 Quad SPI | 开机自动加载 |
| 存储(MCU) | W25Q16JVSIQ | SPI Flash | 存储 CY7C68013A 的固件镜像 | 16Mbit,支持标准 SPI | 用于免固件加载启动 |
| 时钟 | 晶振 24MHz | 系统基准时钟 | 提供 MCU 与 FPGA 所需外部时钟源 | 精度常规为 ±20ppm | 可替换 TCXO 以提高精度 |
| 接口保护 | TPD3S014 | USB 端口保护 & 电流限流 | 防止过压/短路,带有过流保护与ESD防护功能 | 集成过流检测引脚 | 可断开 USB 电源输出 |
| IO ESD 保护 | SP3012-06UTG | IO 端口 TVS 管 | 吸收瞬态高电压,防止静电打穿 | 工作电压 5V,响应时间快 | 所有 IO 输出均加保护 |
| 指示灯 | 0603 LED | 状态指示灯 | 显示电源、数据状态、错误提示等 | 多色可选,低功耗 | 软件可控制开关 |
| 接口引出 | PinHeader | 外设接口排针 | 引出 FPGA 所有 IO,包括 SWD/UART/SPI/GPIO | 兼容逻辑分析夹 & 焊接排线 | 建议标注接口编号 |
| 板间通信 | GPIO/SWD/UART | 调试与二次开发接口 | 支持连接外部 MCU 或逻辑模块 | 电平可控 | 可作为外部设备控制端 |
| USB 接口 | Type-C | 通信与供电接口 | 提供 5V 输入与 USB 数据通道 | 与 PC 直接通信 | Type-C 推荐为主接口 |
原理解析(硬件说明)
- 电源与供电系统
主输入:支持 USB 供电(VBUS)与外部 5V 输入,输入通过 TPD3S014(过压/过流保护芯片)和 FB1(铁氧体磁珠) 过滤噪声,确保主电源轨稳定。
电源管理:
+5V:USB 直供
+3.3V:由 TLV75533PDRVR LDO 从 +5V 降压提供,供给主控逻辑与部分 IO
+1.2V:由 TLV73312PQDRVRQ1 提供,作为 FPGA 内核工作电压
VIO 输出(可调 IO 电压):通过 TPS73101DBVR + DAC081C081 构成可编程电压调节电路,DAC 通过 I2C 控制调整反馈电压,实现 0.5V–3.6V IO 电压调节
- 主控系统(FIFO + FPGA)
CY7C68013A(USB 控制器)
作为 USB2.0 高速设备,处理 USB 与 FPGA 之间的数据通道
其 FIFO 接口连接 FPGA,用于大带宽数据交换
接入外部 24MHz 晶振,支持 USB 时钟工作
内部 8051 核心可通过 SPI Flash 启动,也支持 I2C Boot
含若干标志信号(SLRD, SLWR, FLAGx)与同步接口,驱动外部时序
Lattice iCE40HX8K(FPGA)
作为主要逻辑处理平台,完成 SPI、I2C、JTAG、SWD 等协议解析与组合控制
多个电源域:1.2V 核心、3.3V IO、PLL 独立供电
配有 SPI Flash 存储配置文件,系统上电自动加载
CDONE / CRESET_B 等信号连接状态检测和复位逻辑
- 电平转换 & IO输出结构
电平转换芯片:SN74LVC1T45DCKR
多片组成 8 通道双向电平转换阵列,每路配合方向控制引脚(DIRx)
支持 1.2V–5.5V 电压域转换,适配多种外设标准
通过配置可作为输出/输入使用,实际控制由 FPGA 完成
每路均有串联阻值(33Ω)做阻抗匹配与突波吸收
电压控制:
IO 电压 VIO 由 DAC + LDO 构成闭环调节系统,输出电压通过 DAC 控制反馈脚动态设定
可实现动态切换不同逻辑电平,以适配目标设备
- 接口保护
USB端口保护:使用 TPD3S014 芯片,集成过压/限流控制,可在短路时自动断电
TVS阵列(如 SP3012-06UTG):用于静电保护与外部干扰抑制,保护 IO 接口和 LVDS 接头
二极管 BAT54CW / SD36:在电源、ESD 敏感位置起钳位与隔离作用
- 电源监控 & 数模控制
INA233:I2C 总线电源监测芯片,可实时测量 VBUS 电流、电压,用于系统功耗反馈或报警控制
DAC081C081:低功耗单通道 DAC,通过 I2C 控制可调 IO 电压
PCA6408A:I2C IO 扩展器,用于控制状态灯、电源开关、功能模块电平等
- 状态指示
多颗 LED 状态灯(0603贴片,含白/红/蓝/绿),对应功能:
CY_READY(USB主控就绪)
FPGA_READY(FPGA配置完成)
ERR_LED(出错指示)
ACT_LED(活动状态)
通过 IO 控制,反映系统工作状态,支持Cli同步显示
- 测试点与调试接口
TP 分布于关键信号线上,方便示波器或逻辑分析仪探测
接口引出使用标准插针,支持 SWD / UART / GPIO 等扩展模块连接
RESET 按钮 + 上电检测电路:实现外部手动复位、上电复位延迟、电源掉电检测功能,增强稳定性
- 扩展 & 高速接口模块
LVDS IO阵列:用于高速串行信号交互(如 JTAG、I2S、MIPI 等),具备对称差分设计
LVDS 接头带屏蔽设计,并附 ESD 保护与终端匹配说明
可根据 FPGA Bitstream 更换协议支持(如用于逻辑分析、时序捕获、ADC前端等)
后续可能会出扩展模块 OwO..此处先留坑
注意事项
- 下单推荐勾选阻抗100Ω工艺
- 虽然各个接口都增加了相关防护措施,但仍然禁止上电时热插拔和手动触摸引脚
- 严禁短路使用(这里我指的是IO配置短路)我当然知道你们不会用它点燃烟花电路玩啦(#^.^#)
- 带有 (Preview) 尾缀的功能属于预览版测试阶段,可能存在严重的不稳定性。请勿在真实硬件上轻易使用这些功能,否则可能会造成硬件永久损坏。 使用这些功能所带来的风险,完全由使用者自行承担。
- 再次强调:VIO接口支持电平最高为5V 不要超压使用(使用不支持5V电平的操作 如:操作
RS232协议的功能,必须额外添加电平转换电路) 错误使用这些功能所带来的后果,完全由使用者自行承担。 - 想到什么再补充吧
组装流程
如按复刻成本中的3D打印方案需要下单前先手动编辑文件给壳盖打几个透光孔
我找了一圈实在是找不到这种紧凑的立式导光柱 so.透明探索版外壳YYDS (#^.^#)
我贴片时选的按键按钮有点长,按键部分按需选择(过长会导致装配时出现小麻烦)
欢迎大佬评论区交流装配经验
板子收到后实物是这样的:↓(人工掰去工艺边即可)不要大力出奇迹
由于创子的铝壳找不到合适的公模壳子,这次的外壳采用透明打印+亚克力面板的组合方式:↓
将面板对齐外壳顶盖直接粘上去就行了(我选的防水背胶款,透明度有点不透明)
装入PCB的时候需要注意:先装按键和Type-C部分,然后按下去就好了(不要大力出奇迹)
另外的另外:四个固定脚如果不能严丝合缝需要手工剪去俩(推荐剪去靠近Type-C的那俩)不要一次性剪到位,最后还要对角拧螺丝
成品颜值棒棒哒:
软件说明
:当前此软件运行方式仅为Windows端Cli(上手会有一定使用难度)
同时,如果想得到更深入使用体验需要学习一下oss-cad-suite这套工具和MSYS2的Gtkwave软件
软件会分发两个版本,小尺寸适合run,文件小,速度快;大尺寸为全功能程序,里面打包了FPGA工具链相关内容,可以执行build命令(具体玩法大家可以自行挖掘)
目前的使用流程
- 大前提: 电脑中需要配置好oss-cad-suite环境,系统变量中这两个环境置顶:(lib先bin后):
oss-cad-suite\lib、oss-cad-suite\bin。(路径为本地真实路径即可) - 新建环境变量
ProtoBlade_TOOLCHAIN为system - 在上方链接中下载编译好的exe文件和附件的bin固件包(具体引脚定义参考各功能帮助菜单中的说明)
- 将exe文件放入电脑系统环境变量中(后续将使用命令行工具进行操作)
- 推荐在使用的电脑中安装完整MSYS2环境
- 通过MSYS2安装Gtkwave软件(Windows下FPGA辅助开发利器)后续所有VCD操作可以使用它来进行
- OSS自带的几款工具可以完美适配ProtoBlade硬件,用来当Windows下完整开源FPGA工具链的各种实用开发工具使用
初次使用的驱动安装和固件烧录
在 Windows 电脑上,第一次使用 ProtoBlade(或类似 FX2/ProtoBlade 设备)时,通常需要用 Zadig 工具安装/替换 USB 驱动,以便烧录和通信工具能正常识别设备。下面是详细步骤和常见问题解答:
驱动安装(每台电脑首次必须操作)如果更换了电脑,需要在新电脑上重复以下 Zadig 配置流程。
- 附件中下载
Zadig软件,也可以去官网 - 管理员模式运行
Zadig - 插入板卡(进入
bootloader或正常模式均可)
- 建议首次插入时让板卡处于
Cypress bootloader状态(lsusb -d 04b4:8613会显示对应的设备)。
- 在
Zadig界面顶部的下拉菜单中,选择你的设备。如果没看到设备,点击“Options”菜单,勾选“List All Devices”。
- 一般显示为:
Cypress FX2LP,VID:PID为04b4:8613
- 右侧下拉框选择驱动类型,推荐选择
libusb-win32或WinUSB驱动(一般建议WinUSB,兼容性好)。 - 点击“
Replace Driver”或“Install Driver”。等待进度条完成,出现“成功”提示即可。
出厂化
- 附件下载
protoblade.ihex文件,放到ProtoBlade.exe同路径下 - 插上
USB - 进入
Cypress bootloader状态(全新芯片一般插上即可) - 运行
lsusb -d 04b4:8613查看状态 - 运行
ProtoBlade factory - 程序会自动重启,此处建议手动重启(拔线重插)
- 使用
flash命令烧录固件(此步见下方操作) - 如果一切正常无报错就可以愉快使用了(#^.^#)
烧录固件
下载最新版本的固件,然后运行ProtoBlade flash --firmware protoblade.ihex即可。
运行Cli:命令解释
根据运行环境自行参考启动命令:ProtoBlade、.\ProtoBlade.exe
输入:-h命令可以查看帮助文档
输入:test [协议]可以启动本地虚拟协议测试功能,会在exe同路径下生成测试VCD文件(通常测试结果都是OK,VCD文件中的波形使用Gtkwave查看都是0,直线)(这步可以用来验证MSYS2和Gtkwave的安装结果)
输入:run [协议]可以写入固件到硬件,需要执行什么样的协议就run什么固件即可(支持添加--upload或--load附加参数,前者会写入Flash内部,后者只是临时加载)
可以使用flash --remove-bitstream命令对Flash中已有的小程序做彻底清理功能(Reset后自动恢复出厂状态)
输入:run --help查看当前硬件支持的所有测试协议(目前支持62种测试功能,相关bin文件在固件压缩包中完整显示)
使用全功能程序支持自定义固件生成,可以凭心情随意改变引脚定义(相应的环境必须配齐)
功能验证相关示例
成功经受住了上述操作的“摧残”后,那么恭喜你,现在离成功只有一步之遥了,接下来我们还需要对硬件进行自检以及对相关功能进行检测。(此处只列举几个简单的例程,完整功能见下方表格)
硬件自检
功能框图
硬件自检一共分为三项
- 点灯,验证板子上的
12个灯是否工作正常 I/O回环测试,利用A/B信号的特性来检测所有IO是否正常工作- 板载功能电路检测,主要是检测设备的
ADC、DAC、LDO工作状态
点灯
命令: ProtoBlade run selftest leds
效果: 12个灯呈现流水灯效果即正常
系统引脚回环测试
命令: ProtoBlade run selftest pins-loop
A0-A7与B0-B7连接
效果: 如上图,显示PASS即正常
板载功能电路检测
命令: ProtoBlade run selftest voltage
A-VS与A-VIO连接、B-VS与B-VIO连接
效果: 如上图,显示PASS即正常
GPIO点灯
功能框图
命令:
ProtoBlade run control-gpio --pins A0 -V 3.3 A0=1 开启LED
ProtoBlade run control-gpio --pins A0 -V 3.3 A0=0 关闭LED
ProtoBlade run control-gpio --pins A0 -V 3.3 A0 引脚电平检测
此处必须接电阻
效果: 如上图,LED实现命令控制开启关闭以及引脚采集电平显示正确即正常
GPIO模拟PWM波形输出
功能框图
命令:
python .\gpio_pwm_repl.py
#!/usr/bin/env python3
## -*- coding: utf-8 -*-
"""
Direct PWM Generator for ProtoBlade
Uses direct GPIO control for maximum efficiency
"""
import asyncio
import time
class DirectPWMController:
"""Direct PWM controller using minimal overhead"""
def __init__(self, iface, pin=0):
self.iface = iface
self.pin = pin
self.running = False
async def setup(self):
"""Setup pin as output"""
await self.iface.output(self.pin, False)
print(f"Pin {self.pin} configured as output")
async def generate_direct_pwm(self, freq, duty, duration=None, cycles=None):
"""
Generate PWM with direct control
Args:
freq: Target frequency in Hz
duty: Duty cycle (0.0-1.0)
duration: Duration in seconds (None for infinite)
cycles: Number of cycles (None for infinite)
"""
if not 0.0 <= duty <= 1.0:
raise ValueError("Duty cycle must be 0.0-1.0")
if freq <= 0:
raise ValueError("Frequency must be positive")
# Calculate timing
period = 1.0 / freq
high_time = period * duty
low_time = period * (1 - duty)
print(f"Target: {freq}Hz, {duty:.1%} duty")
print(f"Period: {period*1000:.3f}ms, High: {high_time*1000:.3f}ms, Low: {low_time*1000:.3f}ms")
self.running = True
start_time = time.time()
cycle_count = 0
try:
while self.running:
if duration and (time.time() - start_time) >= duration:
break
if cycles and cycle_count >= cycles:
break
# High level
await self.iface.set(self.pin, True)
await asyncio.sleep(high_time)
# Low level
await self.iface.set(self.pin, False)
await asyncio.sleep(low_time)
cycle_count += 1
except KeyboardInterrupt:
print("\nInterrupted by user")
finally:
self.running = False
await self.iface.set(self.pin, False)
duration = time.time() - start_time
actual_freq = cycle_count / duration if duration > 0 else 0
print(f"Generated {cycle_count} cycles in {duration:.2f}s")
print(f"Actual frequency: {actual_freq:.1f}Hz")
print(f"Error: {abs(actual_freq - freq) / freq * 100:.1f}%")
## Global controller
direct_pwm = None
async def init_direct_pwm(iface, pin=0):
"""Initialize direct PWM controller"""
global direct_pwm
direct_pwm = DirectPWMController(iface, pin)
await direct_pwm.setup()
return direct_pwm
async def direct_1khz(duty=0.5, duration=10):
"""Generate 1kHz PWM using direct method"""
if not direct_pwm:
print("PWM not initialized. Run init_direct_pwm(gpio_iface) first")
return
await direct_pwm.generate_direct_pwm(1000, duty, duration)
async def direct_custom(freq, duty=0.5, duration=10):
"""Generate custom frequency PWM using direct method"""
if not direct_pwm:
print("PWM not initialized. Run init_direct_pwm(gpio_iface) first")
return
await direct_pwm.generate_direct_pwm(freq, duty, duration)
## Test different frequencies to find the limit
async def test_frequency_limits():
"""Test different frequencies to find the practical limit"""
if not direct_pwm:
await init_direct_pwm(gpio_iface)
test_frequencies = [20]
duty = 0.5
test_duration = 3 # 3 seconds per test
print("=== Frequency Limit Test ===")
print("Testing different frequencies to find practical limit...")
for freq in test_frequencies:
print(f"\nTesting {freq}Hz...")
start_time = time.time()
await direct_pwm.generate_direct_pwm(freq, duty, test_duration)
duration = time.time() - start_time
print(f"Test completed in {duration:.2f}s")
## Quick test
async def quick_direct_test():
"""Quick test with direct method"""
print("=== Quick Direct PWM Test ===")
await init_direct_pwm(gpio_iface)
await direct_1khz(0.5, 5)
if __name__ == "__main__":
print("Direct PWM Generator for ProtoBlade")
print("Usage:")
print("1. Initialize: await init_direct_pwm(gpio_iface)")
print("2. 1kHz test: await direct_1khz()")
print("3. Custom freq: await direct_custom(500, 0.25, 5)")
print("4. Frequency test: await test_frequency_limits()")
print("5. Quick test: await quick_direct_test()")
效果: 此示例图片整合了,效果和相关测试结果如上四图,运行无报错且PWM显示当前输出的频率即正常
GPIO回环测试
功能框图
命令:
ProtoBlade run control-gpio A0=0 A1=0 A1 --pins A0,A1 -V 3.3 A1=0,A0检测A1
ProtoBlade run control-gpio A0=0 A1=1 A1 --pins A0,A1 -V 3.3 A1=1,A0检测A1
(A0与A1短接)
效果: 如上图,回调显示对应高低电平即正常
UART回环测试
功能框图
命令:
ProtoBlade run uart --tx A1 --rx A0 -V 3.3 -b 115200 tty
(A0与A1短接)
效果: 如上图,输入内容=相应内容即正常
I2C回环测试
功能框图
命令:
protoblade run i2c-initiator --scl A0 --sda A1 --pulls -b 100 -V 3.3 scan
(A0与A1短接)
效果: 如上图,无报错即正常(此处如果有I2C设备可以继续深入实现双机效果)
SPI回环测试
功能框图
命令:
protoblade run spi-controller --sck A0 --cs A3 --copi A1 --cipo A2 -f 100 -V 3.3 01 02 03 04
(A1与A2短接)
效果: 如上图,输出与命令内容一样即正常
Analyzer数字采样逻辑分析仪
功能框图
命令:
protoblade run analyzer --i A0 -V 3.3 --stream-vcd wave.vcd
(A0与对应GND接入函数发生器)
注意: 此处函数发生器波形最大电压3.3V
此处实验方案:方波1500Hz 占空比50% 幅值2.6V
此工具只能采集方波、脉冲、时钟、数字通信信号(如SPI、I2C、UART等)
模拟信号采集目前的方案更偏向于启用LVDS接口+外置模块
效果: 如上图,Ctrl+C结束采集,用GTKWave查看波形结果为方波即正常
舵机控制
功能框图
命令:
protoblade repl control-servo --out A0 -V 3.3 进入舵机REPL控制模式
await servo_iface.enable(True) 信号开启使能
await servo_iface.disable() 信号关闭使能
await servo_iface.set_value(1500) 停止转动
await servo_iface.set_value(1300)
await servo_iface.set_value(1700)
最后两个命令是改变舵机旋转方向的命令(数值不同方向和速度都会不同)
(A0接入舵机脉冲信号,舵机单独外部5V供电,此环境下供电、舵机负、设备负共地操作)
注意: 舵机5V需要外部单独供电,并且硬件需完全共地
效果: 如上图,命令返回None且舵机跟随相应命令转动即正常
DAC播放音频
功能框图
命令: 此处以使用sox命令进行文件转换
- 使用
MSYS2安装sox工具pacman -S mingw-w64-x86_64-sox - 使用
SOX进行转换sox output.wav -c 1 -r 48000 -b 16 -e signed-integer output.s16 vol 0.9
- 使用
FFmpeg进行转换(没试过,自行测试) - 使用
Python进行转换(没试过,自行测试)
注意: ① 音频信号必须接RC电路后再接入功放 ② 功放供电要足够充足 ③ 功放声音调到最小在启动命令,慢慢调大 ④ProtoBlade的VIO和VS引脚必须相连,运行时这步未连接也会提示报错
!!!时刻保持I/O端口电压不超过3.3V!!!
此处留坑(应该就差外放了)我这没有额外运放模块,最后的增益没法做,导致波形只有0.2vpp;结果就是能看到,听不到。
手动扫描s16文件的数据
示波器抓取的音频波形(此处没Auto,只是为了展示频率)
其他玩法自行探索:
使用单声道输出
protoblade run audio-dac --o A0 -r 48000 -w 2 -s play output.s16
使用立体声输出
protoblade run audio-dac --o A0,A1 -r 48000 -w 2 -s play output.s16
效果: 如上图,运行命令不报错,使用示波器能看到实时音频波形且喇叭正常出声即正常(需要单独加运放电路)
FPGA综合(进阶功能)
功能框图
命令: 此处以UART为例
protoblade build -t rtlil -f uart.il uart
yosys -p "synth_ice40 -json uart.json" uart.il
nextpnr-ice40 --hx8k --package bg121 --json uart.json --pcf top.pcf --asc top.asc
nextpnr-ice40 --gui --hx8k --package bg121 --json uart.json --pcf top.pcf --asc top.asc
效果: 如上图,使用nextpnr能查看到综合结果即正常
分发固件(功能)汇总
以下为功能更新内容
- 优化analyzer数字采样逻辑分析仪支持连续采集与实时监测
- 新增
lvds-signal-generator功能;同步新增lvds-signal-generator差分缓冲模块项目(开始鸽了) - 新增
GPIB设备通信功能 - 新增
CAN控制器功能 - 新增开环
FOC控制功能 - 新增
RS232/RS422/RS485通信功能 - 新增
Modbus协议通信功能 - 新增曼彻斯特编码通信功能
- 新增
SRAM内存读取功能 - 新增
FIR-IIR滤波器功能 - 新增上位机(开发成本有点高,要往后鸽了)已经不知道这是鸽的第几个内容了 o(╥﹏╥)o
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










