当前位置: 首页 > article >正文

Linux下串口连接与CircuitPython开发实战指南

1. 项目概述为什么串口是嵌入式开发的“生命线”如果你玩过Arduino、树莓派Pico或者正在捣鼓CircuitPython开发板那么“串口”这个词对你来说一定不陌生。它就像一条看不见的数据管道连接着你的电脑和那块小小的开发板。在Windows或macOS上你可能用Arduino IDE自带的串口监视器或者像PuTTY、CoolTerm这样的工具点几下鼠标就能连上。但到了Linux世界事情就变得有点不一样了——这里没有那么多图形化的“一键连接”更多的是在终端里敲命令。这听起来有点“硬核”但一旦你掌握了它你会发现这是最直接、最稳定、也最强大的方式。我刚开始在Linux下做嵌入式开发时也踩过不少坑。最常见的就是明明板子插上了系统也识别了但当我兴冲冲地敲下连接命令时终端却冷冰冰地抛出一句“Permission denied”权限被拒绝。那一刻的挫败感相信很多朋友都体会过。这个问题的根源在于Linux严谨的安全模型像串口/dev/ttyACM0/dev/ttyUSB0这样的硬件设备文件默认只允许root用户或特定用户组的成员访问。普通用户直接操作系统会认为这不安全。所以这篇内容就是来解决这个核心矛盾的。我们将以tio这个轻量高效的串口终端工具为例手把手带你走通在Linux下连接串口设备的完整流程并彻底解决烦人的权限问题。更重要的是我会结合多年使用CircuitPython的经验分享那些官方文档里可能不会细说但实际开发中一定会遇到的“坑”和技巧。无论你是刚接触Linux的嵌入式新手还是想寻找更高效工作流的老手这篇文章都能给你带来实实在在的帮助。2. 核心思路拆解从识别设备到建立通信在深入命令行之前我们先理清整个过程的逻辑链条。在Linux中与串口设备交互本质上可以分解为三个步骤发现、授权和对话。2.1 发现你的板子在哪里当一块支持CDC通信设备类USB串行通信的开发板比如大多数CircuitPython板、ESP32、STM32等插入Linux电脑时内核会做几件事加载驱动通常是cdc_acm驱动它负责将USB通信模拟成传统的串行端口。创建设备文件在/dev/目录下动态创建一个文件名字通常是ttyACM0或ttyUSB0。这个文件就是程序与硬件通信的接口。分配权限内核会给这个新创建的文件设置默认的所有者和权限。这里的关键是设备文件名不是固定的。ACM通常指通过USB CDC-ACM协议实现的虚拟串口常见于CircuitPython、Arduino Leonardo等而USB则多用于通过FTDI、CP2102等USB转串口芯片连接的设备。第一个被发现的设备是0第二个是1以此类推。所以我们的第一步总是使用ls /dev/ttyACM*或ls /dev/ttyUSB*命令来“扫描”和确认设备。星号*是通配符意思是列出所有以ttyACM开头的文件。如果插入板子前后各执行一次你就能清晰地看到新出现的设备文件比如从无到有的/dev/ttyACM0。2.2 授权获得与设备“对话”的资格Linux的哲学是“一切皆文件”硬件设备也不例外。但/dev/ttyACM0这样的设备文件其权限可能类似于crw-rw----使用ls -l /dev/ttyACM0查看。我们来拆解一下c表示这是一个字符设备文件。rw-文件所有者通常是root有读写权限。rw-文件所属用户组的成员有读写权限。---其他用户没有任何权限。如果你的用户账户不在这个设备文件所属的用户组里常见的是dialout或uucp组那么你就属于“其他用户”自然会被拒绝访问。这就是“Permission denied”的根源。解决授权问题有两条主流路径各有利弊临时提权sudo在命令前加上sudo以超级用户身份临时运行。简单粗暴适用于一次性操作。但长期依赖sudo存在安全风险且某些图形化工具或IDE在内部调用串口工具时处理sudo密码提示会很麻烦。永久授权用户组将你的日常用户添加到设备文件所属的用户组如dialout。这是一劳永逸的方案配置好后无需sudo即可直接访问串口安全且方便。这是推荐给所有开发者的标准做法。2.3 对话选择一个高效的“翻译官”获得权限后你需要一个终端程序来通过串口文件发送和接收数据。这类工具很多比如古老的minicom、简单的screen或者功能丰富的picocom。我强烈推荐tio原因如下极简与直观安装简单命令直白tio /dev/ttyACM0连接后界面干净没有复杂的菜单层。智能连接支持自动重连功能。如果板子复位了tio会尝试重新连接这在频繁烧录、调试时非常有用。配置灵活可以通过命令行参数或配置文件轻松设置波特率、数据位、停止位、奇偶校验等也支持常用的流控。轻量高效资源占用小响应迅速。理解了“发现-授权-对话”这个核心逻辑我们再看具体的操作就会觉得每一步都顺理成章了。3. 实战操作一步步搞定串口连接与权限理论清晰了现在我们来动手操作。请打开你的Linux终端跟着步骤一起做。3.1 步骤一识别你的串口设备首先在不插入开发板的情况下打开终端输入以下命令建立一个“基线”ls /dev/ttyACM*很可能你会看到类似ls: cannot access /dev/ttyACM*: No such file or directory的提示或者只列出一些系统固有的设备。这很正常说明当前没有相关的ACM设备。现在把你的CircuitPython开发板或其他USB串口设备通过USB线连接到电脑。等待几秒钟让系统识别并加载驱动。然后再次执行相同的命令ls /dev/ttyACM*这次你应该能看到一个新的设备出现例如/dev/ttyACM0这个ttyACM0就是你的开发板在系统中的“门牌号”。请记下它后续所有操作都需要用到这个名称。如果你的设备是ttyUSB0则后续命令中相应替换即可。注意在某些极少数情况下如果你有多个同类型设备可能会看到ttyACM1ttyACM2等。请根据插入顺序和设备描述可通过udev规则或lsusb命令辅助判断来确定哪个是你的目标设备。3.2 步骤二安装串口终端工具 tio大多数主流Linux发行版的软件仓库中都包含了tio。你可以使用包管理器轻松安装在 Debian/Ubuntu 及其衍生系统上sudo apt update sudo apt install tio在 Fedora/RHEL/CentOS 上sudo dnf install tio在 Arch Linux 上sudo pacman -S tio安装完成后可以通过tio --version来验证安装是否成功。3.3 步骤三尝试连接并诊断权限问题现在尝试用tio连接你的设备请将ttyACM0替换为你实际看到的设备名tio /dev/ttyACM0如果一切顺利你会看到tio的启动信息并进入一个空白的终端界面等待输入或显示来自开发板的数据。此时你可以按一下开发板上的复位键应该能看到CircuitPython的欢迎信息或代码输出的提示符。但是更可能的情况是你遇到了权限错误[11:13:42.754] tio v2.7 [11:13:42.754] Press ctrl-t q to quit [11:13:42.754] Warning: Could not open tty device (Permission denied) [11:13:42.754] Waiting for tty device..这明确告诉我们当前用户没有打开/dev/ttyACM0文件的权限。别担心我们有两种方法解决。方法A临时使用sudo快速测试要快速测试连接是否可行可以临时使用sudo提权sudo tio /dev/ttyACM0输入你的用户密码后应该就能成功连接了。用CtrlT然后按Q再按回车可以退出tio。这个方法仅用于验证不建议作为日常用法。方法B永久配置用户组推荐这是标准且一劳永逸的解决方案。我们需要做两件事1) 找出设备文件属于哪个组2) 将当前用户加入该组。查看设备所属组ls -l /dev/ttyACM0输出结果类似crw-rw---- 1 root dialout 166, 0 May 1 10:30 /dev/ttyACM0这里的关键信息是root dialout。它表示文件所有者是root所属用户组是dialout。在绝大多数Debian/Ubuntu系发行版中串口设备都属于dialout组。在一些其他发行版如早期的Arch中可能是uucp或lock组。请以你ls -l命令的输出为准。将用户加入组 假设设备组是dialout你的用户名是yourusername请替换为你的实际用户名使用以下命令sudo usermod -a -G dialout yourusername命令分解sudo需要管理员权限修改用户信息。usermod修改用户属性的命令。-a--append的缩写意为“追加”到组非常重要如果不用-a用户会被从其他附加组中移除只保留这个新组。-G dialout指定要加入的附加组名为dialout。yourusername要修改的用户名。重要警告务必使用-a参数否则你可能失去图形界面登录等关键权限。生效新组设置 用户组信息的变更不会立即在当前已登录的会话中生效。你需要注销当前用户并重新登录或者重启电脑。简单关闭终端窗口再打开是没用的因为新的shell进程仍然继承旧的登录会话信息。验证是否生效 重新登录后打开一个新终端输入以下命令查看当前用户所在的所有组groups在输出的组列表中你应该能看到dialout。现在再次尝试不使用sudo连接tiotio /dev/ttyACM0如果配置正确你应该能直接成功连接不再需要输入密码。3.4 步骤四使用tio进行基础通信与配置成功连接后你就进入了串口交互界面。默认情况下tio会使用一些常见的串口参数如9600波特率。但对于现代开发板尤其是CircuitPython其默认波特率通常是115200。如果连接后乱码或者没反应很可能是波特率不匹配。指定波特率连接 在启动tio时通过-b参数指定波特率tio -b 115200 /dev/ttyACM0常用tio参数与操作-b, --baudrate设置波特率如-b 9600-b 115200-b 921600用于高速下载。-d, --databits数据位默认8。-s, --stopbits停止位默认1。-p, --parity奇偶校验可选noneevenodd默认none。-f, --flowcontrol流控可选nonertsctsxonxoff默认none。交互命令在tio会话中按CtrlT进入命令模式然后按?可以显示所有可用的命令如q退出c显示连接配置等。一个实用的连接示例适用于大多数CircuitPython板tio -b 115200 -m -e /dev/ttyACM0-m启用本地回显Local Echo你敲的字符会在本地显示一次。-e启用本地行编辑Local Line Editing可以使用方向键、退格键等编辑当前行按回车才将整行发送出去。这在输入Python代码时非常方便。连接成功后按一下板子的复位键你应该能看到CircuitPython的启动信息并进入REPL提示符。现在你就可以像在本地Python环境中一样输入代码并立即执行了。4. 深入CircuitPython开发超越串口连接的常见问题解决了基础的串口连接问题只是嵌入式开发的第一步。在实际的CircuitPython项目中你会遇到更多挑战。下面我梳理了几个最常见、也最让人头疼的问题并附上我的排查思路和解决方案。4.1 内存管理与“MemoryError”的斗争CircuitPython运行在资源极其有限的微控制器上。以常见的SAMD21M0芯片为例可用RAM可能只有32KB或更少。MemoryError是开发者最好的“老师”也是最常见的“拦路虎”。为什么会发生MemoryError代码太大一个.py文件本身就会占用RAM。虽然CircuitPython会尝试将代码编译成字节码但复杂的逻辑、长字符串、大型数据结构如列表、字典都会消耗大量内存。库文件臃肿直接使用.py格式的库文件占用内存较多。.mpy是经过预编译的二进制格式体积更小加载更快。内存碎片频繁地创建和销毁对象尤其是在循环中会导致内存碎片化即使总空闲内存看起来够用也可能因为找不到连续空间而分配失败。实战排查与优化技巧检查当前内存在REPL中第一时间导入gc模块查看剩余内存。import gc print(gc.mem_free()) # 打印当前可用内存字节数在代码的关键位置如循环开始前、函数调用后插入这个语句可以帮你定位内存泄漏点。强制垃圾回收Python有自动垃圾回收但在嵌入式环境下手动触发有时很有效。import gc gc.collect() # 强制进行一次垃圾回收 print(gc.mem_free())使用.mpy库这是最重要的优化手段。永远从 CircuitPython官方库包 下载与你固件版本匹配的.mpy库包而不是从GitHub直接克隆.py源码。将库文件从.py转换为.mpy通常能减少30%-50%的内存占用。优化代码结构缩短变量名和注释这听起来很琐碎但在极限情况下一个长变量名this_is_a_very_long_descriptive_variable_name会比v多占用几十个字节。使用del语句对于不再需要的大对象如图像缓冲区、长列表显式使用del删除它并立即调用gc.collect()。将函数移入库如果你的code.py很长可以考虑将部分功能函数移到一个单独的.py文件中然后在主文件中import它。更进一步你可以用mpy-cross工具将这个单独的.py文件编译成.mpy能节省更多内存。避免在全局作用域定义大数据在函数内部定义大型列表或字符串当函数执行完毕后其局部变量占用的内存更有可能被回收。生成自己的.mpy文件对于你编写的工具函数文件可以编译成.mpy。首先从 CircuitPython releases 页面下载对应你操作系统和固件版本的mpy-cross工具。例如在Linux上# 假设你已经下载了mpy-cross-linux-amd64-X.Y.Z文件 chmod x mpy-cross-linux-amd64-X.Y.Z # 添加执行权限 mv mpy-cross-linux-amd64-X.Y.Z mpy-cross # 重命名方便使用 ./mpy-cross my_library.py # 编译会生成my_library.mpy然后将生成的.mpy文件拷贝到CIRCUITPY盘的lib文件夹即可。4.2 无线连接Wi-Fi与BLE的选型与限制无线功能极大地扩展了物联网项目的可能性但CircuitPython对无线功能的支持因硬件而异选择前必须看清。Wi-Fi连接原生ESP32系列是首选如果你需要稳定的Wi-Fi功能强烈建议直接选择基于ESP32、ESP32-S2、ESP32-S3、ESP32-C3的CircuitPython开发板如Adafruit的ESP32-S2/S3 Feather。这些芯片内置Wi-Fi和蓝牙ESP32-S2除外CircuitPython对其有原生、完整的支持可以直接使用wifi和socket等库就像在电脑上一样。AirLift协处理器方案备选对于非ESP32的主控板如SAMD51可以通过SPI接口连接一个AirLift基于ESP32的Wi-Fi协处理器模块来获得Wi-Fi能力。但这需要额外的硬件连接至少4根线VCC GND MOSI MISO SCK CS BUSY RESET并且会占用宝贵的GPIO和SPI资源。软件上需要使用adafruit_esp32spi库其API与原生Wi-Fi库不同更复杂一些。硬件引脚检查在决定使用AirLift前务必确认你的主控板有空闲的SPI接口和至少4个额外的GPIO用于CS BUSY RESET等。像MacroPad、NeoTrellis这样GPIO极其有限的板子可能无法支持。蓝牙低功耗BLE连接完整支持nRF52840、nRF52833以及CircuitPython 9.1.0及以上版本的ESP32/ESP32-C3/ESP32-S3需8MB Flash提供了最完整的BLE支持。你的程序可以同时作为中心设备扫描、连接其他设备和外设广播、提供服务。有限支持对于使用AirLift或NINA-FW协处理器的板子如PyPortal目前BLE仅支持作为外设模式不支持扫描和作为中心设备连接。配对和绑定功能也不支持。明确不支持ESP32-S2芯片本身没有蓝牙硬件所以任何基于ESP32-S2的板子都无法使用BLE。检查支持情况最可靠的方法是查阅 CircuitPython官方模块支持矩阵 搜索_bleio模块看你的板子是否被列出。我的经验对于新项目如果无线是核心需求直接选择原生支持Wi-Fi/BLE的ESP32-S3板子会省去无数麻烦。AirLift方案更适合为已有的、功能稳定的非无线项目“添加”联网能力。4.3 故障排查实录从现象到解决开发过程中板子“罢工”的情况时有发生。下面是一个快速问题诊断清单现象可能原因排查步骤与解决方案CIRCUITPY盘符不出现或瞬间消失1. 磁盘文件系统损坏。2. 防病毒/安全软件干扰尤其在Windows上。3. 板子处于Bootloader模式双击复位键。1.尝试安全模式快速双击复位键如果出现BOOT盘符说明硬件和基础USB功能正常。将最新的CircuitPython.uf2文件拖入BOOT盘进行重刷。2.检查安全软件临时禁用BitDefender Kaspersky Norton Sophos Samsung Magician等软件看是否恢复。为CIRCUITPY盘符添加例外规则。3.macOS特定问题对于Sonoma 14.4之前的版本存在写入小容量FAT盘极慢的Bug。可尝试使用提供的重挂载脚本或升级系统。串口终端无输出非权限问题1. 波特率不匹配。2. 板子未运行任何输出代码或处于深度睡眠。3. 代码有致命错误导致板子不断重启看状态LED。4. 终端窗口/面板太小滚出了屏幕。1.核对波特率CircuitPython REPL默认是115200。尝试tio -b 115200 /dev/ttyACM0。某些Bootloader或特定程序可能使用其他波特率如9600。2.检查代码确认code.py中有print()语句。按复位键观察终端启动瞬间有无输出。3.观察状态LEDCircuitPython 7.0启动时黄色闪烁正常运行无用户代码时绿色单闪代码异常结束时红色双闪。根据LED判断板子状态。4.调整终端窗口拉大Mu编辑器或终端软件的串口面板高度或者使用滚动条向上查看错误信息可能已经输出但被挤到上面去了。代码无限重启Auto-reload循环1. 电脑上有程序在持续写入CIRCUITPY盘如备份软件、云盘同步、杀毒扫描。2. 代码本身有语法错误CircuitPython尝试重新加载时又遇到错误。1.找出“元凶”在Windows上资源监视器可以查看是哪个进程在访问CIRCUITPY盘。已知Acronis True Image的“Managed Machine Service”会导致此问题。2.禁用Auto-reload在boot.py或code.py开头添加import supervisor; supervisor.runtime.autoreload False。注意禁用后保存文件不会自动运行新代码需要手动按复位键。3.修复代码错误通过串口终端查看具体的错误信息语法错误、导入错误等。导入库时提示“Incompatible .mpy file”尝试导入的.mpy库文件是用不同版本的CircuitPython编译的二进制格式不兼容。下载匹配的库包务必从 CircuitPython库包页面 下载与你的固件版本号完全一致的库包。例如CircuitPython 9.x的库与8.x不兼容。全部替换lib文件夹下的库文件。“boardnameBOOT”引导驱动器不出现1. 你的板子不是Express系列或SAMD21非Express板它们使用UF2引导程序。2. 在Circuit Playground Express上运行MakeCode程序时按复位键的方式不对。3. macOS上DriveDx等磁盘工具干扰。1.确认板子类型Feather M0 Basic等板子使用传统Arduino引导程序不会出现BOOT盘需要通过特定方式如快速点击复位进入编程模式。2.正确操作对于CPXMakeCode只按一次复位键进入引导模式。按两次会复位用户程序。3.macOS排查尝试卸载或禁用DriveDx。4.4 高级技巧与最佳实践使用udev规则实现永久设备名和权限进阶如果你有多个同型号开发板或者不想每次插拔后都检查是ttyACM0还是ttyACM1可以创建udev规则。例如为特定USB设备通过idVendor和idProduct识别创建一个固定的符号链接如/dev/my_feather并自动设置组权限。# 1. 找到设备的供应商ID和产品ID lsusb # 找到你的板子记下ID例如 Bus 003 Device 007: ID 239a:8014 Adafruit Industries ... # 239a是供应商ID (idVendor) 8014是产品ID (idProduct) # 2. 创建udev规则文件 sudo nano /etc/udev/rules.d/99-adafruit-circuitpython.rules # 添加如下内容替换ATTRS{idVendor}和ATTRS{idProduct}为你的值 SUBSYSTEMtty, ATTRS{idVendor}239a, ATTRS{idProduct}8014, GROUPdialout, MODE0666, SYMLINKcircuitpython_feather # MODE0666让所有用户可读写如果只需要dialout组可以设为MODE0660 # 3. 重新加载udev规则并触发 sudo udevadm control --reload-rules sudo udevadm trigger之后无论板子插在哪个USB口你都可以通过/dev/circuitpython_feather这个固定名称来访问它并且权限已经设好。在VS Code中无缝集成串口终端如果你使用VS Code进行开发可以安装“Serial Monitor”或“Serial Terminal”这类扩展。配置好正确的设备路径如/dev/ttyACM0和波特率后就可以在VS Code内置终端里直接打开串口监视器无需切换窗口提升开发效率。理解状态RGB LED的含义这是板上最直接的调试工具。以CircuitPython 7.0为例启动时黄色闪烁正常启动过程。此时按复位键可进入安全模式。启动后绿色单闪用户代码已成功运行完毕或根本没有code.py。启动后红色双闪用户代码因未捕获的异常而崩溃。立即查看串口终端错误信息会打印在那里。启动后黄色三闪板子处于安全模式。同样查看串口终端会显示进入安全模式的原因如文件系统损坏。稳定白色正在REPL中。掌握这些信号很多时候你甚至不用看电脑屏幕就能对板子的状态有个基本判断。

相关文章:

Linux下串口连接与CircuitPython开发实战指南

1. 项目概述:为什么串口是嵌入式开发的“生命线” 如果你玩过Arduino、树莓派Pico,或者正在捣鼓CircuitPython开发板,那么“串口”这个词对你来说一定不陌生。它就像一条看不见的数据管道,连接着你的电脑和那块小小的开发板。在W…...

iCloud 会保留多少份备份?

“iCloud 会保留多少份备份?” 是很多想要保障数据安全的 iPhone、iPad 用户常问的问题。苹果的云存储服务 iCloud 通常会保存多份设备备份,确保你在数据丢失或损坏时能访问并恢复数据。iCloud 备份的具体份数取决于可用存储空间、使用习惯等因素。 本文…...

【ElevenLabs情绪语音实战指南】:零代码接入非正式语调+3种微情绪参数调优法(附2024最新API密钥绕过技巧)

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs非正式情绪语音的核心能力与技术边界 ElevenLabs 的非正式情绪语音(Informal Emotional Voice)并非标准 TTS 模式,而是通过隐式情感建模与上下文感知微调实…...

如何从安卓手机 / 平板打印文件?3 种简单方法

随着安卓技术的发展,智能手机能实现诸多功能,但直接打印是设备本身暂不支持的操作,这是因为安卓系统没有原生打印功能。那么该如何用安卓手机打印?本文整理 3 种高效简单的方法供你参考。方法 1:使用 iReaShare Androi…...

Midjourney啤酒瓶身3D贴图生成术:1个命令实现曲面延展+光影自适应(含GitHub开源LUT校色包)

更多请点击: https://intelliparadigm.com 第一章:Midjourney Beer印相 Midjourney Beer印相并非官方功能,而是社区开发者基于 Midjourney API 与啤酒文化融合的创意实验项目——通过文本提示(prompt)生成具有精酿啤酒…...

ESP32-C6与CircuitPython:物联网开发入门与实战指南

1. ESP32-C6与CircuitPython:为什么是嵌入式开发的“黄金搭档”?如果你刚拿到一块ESP32-C6开发板,面对一堆引脚和陌生的术语,可能会有点无从下手。别担心,这种感觉每个硬件开发者都经历过。嵌入式开发听起来高深&#…...

Eur J Nucl Med Mol Imaging(IF=7.6)南方医科大学南方医院北京协和医院等团队:基于PET/CT的深度学习预测食管癌PD-L1与免疫疗效

01文献学习今天分享的文献是由南方医科大学南方医院联合西安电子科技大学、北京协和医院等团队于2025年8月在《European Journal of Nuclear Medicine and Molecular Imaging》(中科院1区,IF7.6)上发表的研究“Deep learning-based non-invas…...

Eur Radiol 温州医科大学第五附属医院等团队:开发与解释基于双能量CT的深度学习放射组学模型,用于预测颈动脉支架后新出现的脑缺血病灶

01文献学习今天分享的文献是由温州医科大学第五附属医院等团队于2026年2月《European Radiology》(中科院2区,IF4.7)上发表的研究“Development and interpretation of a dual-energy CT-based deep learning radiomics model for predicting…...

AntiDupl.NET:免费开源图片去重工具完整使用指南

AntiDupl.NET:免费开源图片去重工具完整使用指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾在整理照片库时发现大量重复图片,却不…...

Insights Imaging(IF=4.5)郑州大学第一附属医院高剑波等团队:基于CT的影像组学预测不可切除胃癌PD-1/PD-L1抑制剂联合化疗治疗反应

01文献学习今天分享的文献是由郑州大学第一附属医院高剑波教授等团队于2026年3月12日在《Insights into Imaging》(中科院2区,IF4.5)上发表的研究“CT-based radiomics for predicting the treatment response to PD-1/PD-L1 inhibitors comb…...

MedComm(IF=10.7)中大孙逸仙纪念医院姚和瑞等团队:多模态数据融合AI模型揭示乳腺癌肿瘤微环境免疫分型异质性与增强的风险分层

01文献学习今天分享的文献是由中大孙逸仙纪念医院姚和瑞等团队于2024年12月在《MedComm》(中科院1区top,IF10.7)上发表的研究“Multimodal data fusion AI model uncovers tumor microenvironment immunotyping heterogeneity and enhanced r…...

012、三相电压与电流的测量方法

012、三相电压与电流的测量方法 上个月调试一台75kW永磁同步电机驱动器,现场报过流故障,示波器抓出来的电流波形像被狗啃过一样。折腾三天,最后发现是电流采样电阻的共模电压没处理好,ADC读数在零点附近来回跳。这种问题在实验室里根本复现不了,一上大功率就现原形。今天…...

5个步骤掌握RISC-V模拟器:Ripes让计算机硬件学习变得如此简单

5个步骤掌握RISC-V模拟器:Ripes让计算机硬件学习变得如此简单 【免费下载链接】Ripes A graphical processor simulator and assembly editor for the RISC-V ISA 项目地址: https://gitcode.com/gh_mirrors/ri/Ripes 想要了解计算机处理器如何工作却不知从何…...

从零到一:基于Electron与Vue3的现代化桌面应用开发实战

1. 为什么选择ElectronVue3开发桌面应用? 用前端技术开发桌面应用听起来像是"用筷子吃牛排"——看似不搭却意外顺手。我最初接触这个组合是为了快速将一个Vue写的后台管理系统打包成客户端,结果发现开发效率比传统桌面框架高3倍不止。Electron…...

011、逆Clark变换与逆Park变换

011、逆Clark变换与逆Park变换:从一次电机“鬼畜”抖动说起 有次调试一台永磁同步电机,电流环PI参数已经调得相当“丝滑”,转速响应也漂亮,结果一上负载,电机开始高频抖动,像踩了电门。示波器抓电流波形,发现三相电流里混着明显的6次谐波。当时第一反应是电流采样有问题…...

如何为Axure RP配置中文界面本地化解决方案

如何为Axure RP配置中文界面本地化解决方案 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 对于使用Axure RP进行原型设计的中国…...

3步掌握微信聊天记录导出:永久保存珍贵回忆的免费工具

3步掌握微信聊天记录导出:永久保存珍贵回忆的免费工具 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心更换手机后,那些珍贵的微信聊天…...

物联网芯片设计挑战:EDA工具如何应对极致功耗与面积约束

1. 物联网浪潮下的EDA设计挑战:一次回归本质的审视十年前,当那篇关于物联网与EDA需求的文章发表时,很多人可能觉得“30亿联网设备”的预测有些遥远。今天回头看,这个数字早已被超越,物联网已经从概念变成了我们生活与产…...

Qt Creator 6.0.2 保姆级配置指南:从深色主题到代码字体,打造你的专属开发环境

Qt Creator 6.0.2 深度定制指南:打造高效舒适的开发环境 当你第一次打开Qt Creator时,是否感觉这个界面既熟悉又陌生?就像搬进一间精装修的房子,虽然功能齐全,但总少了些个人特色。本文将带你从零开始,像装…...

实测Taotoken多模型聚合服务的延迟与稳定性观感分享

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 实测Taotoken多模型聚合服务的延迟与稳定性观感分享 作为需要频繁调用大模型API的开发者,服务的稳定性和可预测性是影响…...

深度挖掘显卡潜能:NVIDIA Profile Inspector 高级调优完全指南

深度挖掘显卡潜能:NVIDIA Profile Inspector 高级调优完全指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经对NVIDIA控制面板中有限的设置选项感到不够用?是否想要…...

Atmel maX触控技术解析:从电容传感原理到工业级嵌入式HMI实战

1. 项目概述:从“点按”到“感知”的交互革命在嵌入式人机交互领域,我们早已习惯了物理按键的“咔哒”声和电阻屏的“按压感”。但你是否想过,当一块普通的玻璃或塑料表面,无需任何物理形变,就能精准识别你的手指轻触、…...

国产AI芯片CSA1-N8S1684深度解析:140.8Tops算力如何破局推理市场

1. 项目概述:当算力成为新基建,一颗国产AI芯片的破局之路最近圈子里都在聊一个词:“算力焦虑”。无论是做大模型训练的公司,还是搞自动驾驶、生物制药的团队,都在为GPU的供应和成本发愁。就在这个当口,一款…...

BLDC电机场景化创新:从性能参数到系统解决方案的转型路径

1. 项目概述:在红海中寻找蓝海最近几年,BLDC(无刷直流电机)赛道可以说是热闹非凡。从家里的扫地机器人、空气循环扇,到办公室的静音风扇、电动升降桌,再到路上的两轮电动车、新能源汽车,几乎无处…...

3步搞定Axure中文汉化:让专业原型设计工具说中文

3步搞定Axure中文汉化:让专业原型设计工具说中文 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 你是否在使用Axure …...

MatrixFlow:Transformer加速的协同设计与矩阵计算优化

1. MatrixFlow:Transformer加速的革命性协同设计在人工智能计算领域,Transformer模型已经成为自然语言处理、计算机视觉等任务的事实标准架构。然而,这些模型的巨大成功背后隐藏着一个关键瓶颈——矩阵乘法操作(GEMM)占据了整体计算时间的99%…...

【弹簧】碟形弹簧内锥角数值计算Matlab实现

​✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1…...

【光学】基于菲涅尔光谱和角光谱ASPSAP模拟聚焦高斯光束传播附Matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1…...

初试GMSSH可视化服务器管理工具

文章目录1. 实战概述2. 实战步骤2.1 下载GMSSH客户端2.2 安装GMSSH客户端2.3 启动GMSSH客户端2.4 注册GMSSH账号2.5 登录GMSSH客户端2.6 添加机器 - 华为云服务器2.7 进入华为云服务器终端2.8 进入GMSSH桌面3. 实战总结1. 实战概述 本次实战详细演示了GMSSH可视化服务器管理工…...

对比直接购买官方服务使用 Taotoken Token Plan 如何节省成本

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接购买官方服务使用 Taotoken Token Plan 如何节省成本 1. 个人开发者的成本挑战 对于独立开发者或小型团队而言&#xff0…...