- 博客(199)
- 资源 (3)
- 收藏
- 关注
原创 PIO 中的 IN 和 OUT 指令详解
本文介绍了Raspberry Pi Pico RP2040芯片的PIO(Programmable I/O)功能及其在MicroPython中的应用。重点解析了PIO汇编指令中的IN和OUT指令:IN指令用于从引脚等源读取数据到ISR寄存器,可配合autopush实现自动数据传输;OUT指令则从OSR寄存器输出数据到引脚等目标。文章通过具体示例展示了如何利用这两个指令实现数据采集、引脚控制和协议模拟,并说明了它们协同工作的方法。掌握IN和OUT指令是使用PIO进行高效硬件控制的基础,为开发者提供了无需复杂底层
2025-06-02 13:01:01
227
原创 ESP32-C3 + W5500 + MicroPython 编译记录
构建esp32的micropython真坑!先是板子ch343不支持macos,换到win可以烧录和编码,但又搞错esp-idf版本,先5.5后5.1.1,这个过程中又遇到cmd编码格式和命令过长,最后放弃,换回macos构建,用官网说的idf5.4版本,还是不行,最后发现官网的是针对1.25的,1.24的得对应5.2.2,终于可以编译成功了,又烧录有问题,才发现会构建三个bin,需要都烧录,偶然间发现还有一个合并了这三个bin的firmware.bin,烧录成功后,一切ok。
2025-06-02 01:30:14
526
原创 VSCode + GD32F407 构建&烧录
本文总结了在GD32F407VET6开发过程中遇到的启动失败问题及解决方案。作者发现根本原因是链接脚本(.ld文件)配置不当,导致程序无法执行main()函数。文章详细解析了裸机开发中的关键文件:启动文件(.s)负责初始化栈、中断向量表;system_gd32f4xx.c配置系统时钟;gd32f4xx.h定义寄存器;链接脚本(.ld)决定代码段内存布局。同时对比了Keil和GCC开发环境的差异,指出Keil用户往往无需关注底层配置,而使用VSCode+GCC时必须手动处理这些文件。最后提供了相关配置代码,为
2025-05-29 11:09:33
1098
原创 PIO 也有并发喔,巧用SIDE-SET
Raspberry Pi Pico的PIO模块中,side-set功能允许在指令执行时同步控制额外GPIO引脚电平,实现精准IO时序控制。本文通过LED闪烁示例展示了side-set的三大优势:1) 不占用额外指令周期实现并发控制;2) 适用于通信协议同步信号输出;3) 支持硬件级调试和事件触发。示例代码演示了如何用side-set控制状态引脚,并解析了关键参数限制(如最大7周期延时)。这种"零延迟并发"特性使side-set成为PIO最具实用价值的功能之一,特别适合硬实时控制和多信号同
2025-05-27 12:11:05
471
原创 PIO 协议编写必修课之 Shift Left 与 Shift Right
本文分析了Raspberry Pi Pico PIO模块中数据移位方向的重要作用。通过示例代码展示了SHIFT_LEFT和SHIFT_RIGHT的差异:SHIFT_RIGHT为LSB优先(低位先发),SHIFT_LEFT为MSB优先(高位先发)。实验表明,发送和接收端的移位方向必须一致,否则会导致位序颠倒和数据错误。文章还提供了二进制视角下的数据验证示例,建议开发者通过调整位数进行实验以掌握移位方向的匹配技巧。正确设置out_shiftdir和in_shiftdir是实现可靠通信协议的关键。
2025-05-27 11:38:06
558
原创 PIO 中的赋值魔术,MOV 指令
PIO汇编语言中的mov指令是实现数据传递的核心操作,支持在x/y寄存器、OSR、ISR等特殊寄存器间传输数据。与普通赋值不同,mov具有阻塞/非阻塞模式,支持取反修饰符,并能通过null目标丢弃数据。典型应用包括主控与PIO数据交互(如mov(x,osr))、引脚状态采集(mov(isr,pins))以及寄存器清零(mov(x,null))。相比set指令的静态赋值,mov更侧重动态数据流转,是构建复杂PIO状态机的基础。该指令的灵活运用能实现动态PWM、协议适配等高级功能,体现了PIO硬件级编程的特性。
2025-05-24 10:31:58
499
原创 PIO 入门示例一点就“通”
本文介绍了如何在Raspberry Pi Pico上使用PIO(Programmable Input Output)模块实现LED的精确控制。通过编写一个简单的PIO程序,可以在2000Hz的频率下,使LED以0.5秒的间隔循环点亮和熄灭。与传统的GPIO控制相比,PIO能够独立于主CPU运行,减少CPU负担,并通过硬件层面的时序控制实现更高效的操作。文章详细解释了程序的延时机制和状态切换原理,并提供了代码示例。此外,还探讨了如何通过调整频率和延时参数来控制LED闪烁速度,并建议将PIO应用于高精度时序需求
2025-05-23 13:10:33
435
原创 PIO 中的 IF / ELSE,JMP小技巧
本文介绍了如何在Raspberry Pi Pico上使用PIO(可编程输入输出)状态机来控制LED的点亮与熄灭。通过一个简单的“点灯-灭灯”程序,展示了如何利用PIO的汇编指令(如jmp)来实现硬件信号的时序控制。文章详细解析了PIO代码中的关键指令,如pull、mov、set和jmp,并解释了如何通过比较寄存器x和y的值来决定LED的状态。此外,文章还指出了PIO编程中的常见误区,特别是条件跳转的使用,强调了PIO状态机的逻辑构建与传统的if-else语句的区别。通过本文,读者可以更好地理解PIO的工作原
2025-05-23 12:51:41
922
原创 PIO 的 OSR 与 ISR
树莓派Pico的PIO模块通过两个特殊寄存器OSR(Output Shift Register)和ISR(Input Shift Register)实现Python层与PIO程序之间的数据交互。OSR用于将数据从Python发送到PIO,常用指令包括pull()和mov(pins, osr);ISR则用于从PIO接收数据到Python,常用指令包括in(pins, 1)和push()。两者通过FIFO(先进先出队列)进行数据传输,Python端使用sm.put()和sm.get()进行数据操作。OSR和IS
2025-05-21 11:54:21
593
原创 PIO 的 IRQ 中断触发
本文介绍了如何在Raspberry Pi Pico上使用MicroPython和PIO(Programmable I/O)实现硬件中断(IRQ)功能。通过编写PIO程序,可以模拟一个定时器,并在定时器触发时发送IRQ信号。Python层的中断处理函数会响应这个信号,并打印当前的时间戳。文章详细解析了PIO程序的核心指令和延迟逻辑,并展示了如何将Python层的函数绑定到状态机的IRQ上。运行代码后,控制台会定期打印中断触发的时间戳,证明了PIO与Python的协作成功。此外,文章还探讨了如何扩展这一功能,如
2025-05-21 11:32:06
446
原创 PIO 正确传值的姿势
MicroPython 的 put() 虽然强大,但其行为不够直观,可能会在你处理多语言、数据结构或通信协议时埋坑。通过本文,你应该理解了为什么 'Abbc' 是四个数,'陈' 是三个,42 是一个,以及如何正确传值,优雅写码。
2025-05-20 16:24:31
499
原创 PIO 中的 SET 赋值
PIO 的 set 指令最多只支持 5 位立即数,最大值是 31。超出范围时会自动截断,只保留最低 5 位。使用 mov 和 push 可以将值送入主核读取。要设置更大数值,可以使用 put + pull 等方式。
2025-05-20 14:21:10
311
原创 提升模型泛化能力:图像数据增强的奥秘
在图像处理和机器学习中,随机旋转、缩放和仿射变换等数据增强操作主要用于增加数据多样性和提高模型的泛化能力。这些操作通过模拟实际应用中的图像变化,如物体的方向、大小和形状变化,帮助模型学习到更通用的特征,从而减少过拟合并提升在实际应用中的表现。具体方法包括随机旋转、缩放和仿射变换,这些技巧在计算机视觉任务中非常有用,尤其是在训练深度学习模型时,可以显著提高模型对方向、尺寸和形状变化的鲁棒性。通过调整这些操作的参数范围,可以根据具体任务需求优化模型性能。
2025-05-16 11:33:46
704
原创 Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<1>
用Raspberry Pi Pico的pio实现i2s协议(Micropython),驱动inmp441采样录音
2025-05-06 12:57:08
993
原创 从 “零” 做个开源音乐软件“SteadyBeat”吧!<1> 准备
换换脑子,做个音乐软件,根据调性、和弦走向(情感)、节拍、速度等需求,结合AI和一众工具,自动生成伴奏、Solo等,有点像库乐队!自己平时也用得着,暂时取名叫《SteadyBeat》吧!
2025-05-02 14:32:56
472
原创 Stm32 烧录 Micropython
还是吃了基础薄弱的亏,弄了一下午,期间还走了用Daplink测串口、晶振计算错误等弯路,最后找到了这个标准的配置文件后,才算排除了一些因素,最后锁定在bin烧录问题上,最后换dfu才成功。好啦,接下来可以踏实的尝试画PCB了。
2025-05-01 19:08:20
1523
原创 Make + OpenOCD 完成STM32构建+烧录
前两篇通过VSCode+STM32CubeMx跑通了用EIDE构建+烧录。为今天的工作打下了非常棒的基础!今天来尝试手动构建+烧录。
2025-04-26 11:22:12
527
原创 真.从“零”搞 VSCode+STM32CubeMx+C <2>调试+烧录
又是有惊无险的一通瞎操作,针对STM32的构建、调试、烧录一套流程算是小拿捏了。
2025-04-25 15:00:56
690
原创 真.从“零”搞 VSCode+STM32CubeMx+C <1>构建
初上手STM32CubeMX+VSCode,真正0基础!看我怎么出丑,不对!呸!是怎么玩转!
2025-04-24 18:54:14
849
原创 Python 作用域记住两点就够啦!
提问:使用python的时候,为什么在函数里,有的变量能直接用,有的必须声明为全局变量才能用呢?比如在micropython的时候,在函数外声明的引脚可以在函数内直接用,而在函数外声明的普通变量,在函数内必须声明全局变量呢?回答:在 Python(包括 MicroPython)中,变量在函数内的使用规则主要与作用域(scope)和 Python 的变量解析规则(LEGB 规则)有关。
2025-04-24 10:20:27
927
原创 Edge Impulse 训练openMV分类模型(字母+数字)
使用openMV Cam H7 Plus 固件4.5.9尝试多种方式均失败(模板匹配、ORB特征识别),还毁了一个sd卡,还是老老实实用训练吧准备字母+数字图片,使用Python生成,文件名要存成“A.jpg”这样(这样直接导入到Edge Impulse直接就有Label了)
2025-04-20 20:08:33
711
15
原创 MetaBase 0.54 Mysql8.0连接不上
查询用户认证方式, caching_sha2_password 、mysql_native_password。MySQL 8 默认使用 caching_sha2_password 认证方式。
2025-04-03 14:59:03
166
原创 Micropython RPI-PICO 随记-Max9814录制声音
【代码】Micropython RPI-PICO 随记-Max9814录制声音。
2025-04-01 14:17:32
240
原创 Micropython RPI-PICO 随记-双PICO串口传数据
【代码】Micropython RPI-PICO 随记-双PICO串口传数据。
2025-03-25 22:48:50
301
Pico-rp2040,micropython+lvgl 固件
2024-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人