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

ArdTap:Arduino零代码现场调试框架

1. ArdTap面向嵌入式现场调试的零代码移动配置框架1.1 工程定位与设计哲学ArdTap 是一个专为 Arduino 生态设计的轻量级远程管理库其核心目标并非替代传统固件开发流程而是解决嵌入式系统在部署后阶段的现场参数调优、运行状态监控与快速功能切换三大痛点。它不追求通用通信协议栈的完备性而是以“最小可行交互”为原则将移动终端Android/iOS转化为一个即插即用的硬件配置面板。该库的工程价值体现在三个不可替代性上零固件修改无需重编译、无需烧录所有配置变更通过串口/USB CDC 实时生效硬件解耦设计完全依赖 TapNLink 硬件模块标准版或 Primer 版作为通信桥接层Arduino 主控仅需提供标准 UART 接口配置即服务用户通过移动端图形界面完成参数设置ArdTap 在 MCU 端将 JSON 格式指令解析为内存变量更新、GPIO 状态切换、PWM 占空比重载等原子操作。这种设计直击工业现场调试的现实瓶颈——工程师无法随身携带笔记本电脑而手持示波器又无法完成参数下发。ArdTap 将手机变成一个可触摸的“虚拟 DIP 开关 电位器 指示灯”组合体。1.2 硬件依赖与接口拓扑ArdTap 的运行严格依赖 TapNLink 硬件模块该模块本质是一个集成 BLE/WiFi 双模无线收发、USB-CDC 虚拟串口、以及 ARM Cortex-M4 处理器的嵌入式网关。其与 Arduino 的物理连接方式如下连接方式引脚映射电气特性典型应用场景UART TTLTX→RX, RX→TX, GND→GND3.3V LVTTL, 默认 115200bps标准 Arduino Uno/Nano/MegaUSB CDCMicro-USB 或 USB-C 直连CDC ACM Class, /dev/ttyACM0Arduino Leonardo/Micro/Pro MicroI2C可选SDA/SCL/GND400kHz Fast Mode需要低功耗待机的电池供电节点关键工程提示TapNLink Primer 版本内置电平转换电路可直接兼容 5V Arduino 系统标准版需外加 TXB0108 等双向电平转换芯片。若使用 SoftwareSerial 模拟串口必须禁用 ArdTap 的AT_CMD_MODE宏定义因其会干扰软串口时序。1.3 通信协议栈分层解析ArdTap 采用四层精简协议栈摒弃 TCP/IP 或 MQTT 等重型协议全部基于 ASCII 文本帧实现[SOH] CMD KEYVALUE [ETX] CRC8SOH (0x01)帧起始符避免与普通串口日志混淆CMD2 字节命令码如ATAT 指令模式、SET参数设置、GET参数读取、RUN执行动作KEYVALUEUTF-8 编码键值对支持嵌套结构如motor.speed127、sensor.calib.offset-0.25ETX (0x03)帧结束符CRC8查表法生成多项式 x⁸ x² x¹ 10x07覆盖 SOH 至 ETX 全部字节该协议设计满足三项硬性约束人眼可读性工程师可通过串口助手直接发送ATVER?查询固件版本MCU 友好性全字符串解析无需浮点运算单元STM32F030 或 ATmega328P 均可轻松处理抗干扰性CRC8 校验 帧边界符双重保护在工业现场 2.4GHz 干扰环境下误帧率 0.001%。1.4 核心 API 接口规范ArdTap 提供 7 个核心 C 函数全部声明于ardtap.h符合 Arduino IDE 1.6.12 ABI 标准函数原型功能说明典型调用场景注意事项void ardTap_begin(HardwareSerial *serial, uint32_t baud)初始化串口通信注册中断接收缓冲区setup()中调用Serial或Serial1必须在Serial.begin()之后调用void ardTap_loop(void)主循环中周期调用处理接收队列与定时任务loop()中无条件调用单次执行耗时 50μs16MHzbool ardTap_registerParam(const char *key, void *addr, uint8_t type)将内存地址注册为可远程访问参数注册float temp_offset、uint16_t pwm_dutytype支持ARDTAP_TYPE_INT8/INT16/INT32/FLOAT/BOOL/STRINGvoid ardTap_setCallback(ardTap_callback_t cb)设置指令执行回调函数实现motor_start()、led_blink()等业务逻辑回调中禁止调用delay()void ardTap_sendStatus(const char *key, const char *value)主动向移动端上报状态变化温度超限触发报警、传感器数据周期上报建议每秒不超过 5 条void ardTap_enableOTA(bool enable)启用/禁用 OTA 固件升级通道配合 TapNLink 的 DFU 模式使用需预置bootloader.bin到 SPI Flashuint8_t ardTap_getRSSI(void)获取当前 TapNLink 模块信号强度用于链路质量评估与自动重连返回 -127 ~ 0 dBm负数绝对值越小信号越好内存布局关键约束ardTap_registerParam()注册的addr必须指向全局变量或 static 局部变量禁止指向栈内存如loop()中定义的int x10; ardTap_registerParam(x,x,ARDTAP_TYPE_INT16)将导致未定义行为。这是因 ArdTap 内部仅存储指针而非值拷贝。1.5 参数注册机制深度剖析参数注册是 ArdTap 的灵魂机制其内部通过哈希链表实现 O(1) 查找。源码关键结构体如下ardtap_private.htypedef struct { const char* key; // 键名存储于 FlashPROGMEM void* addr; // 指向变量的指针 uint8_t type; // 数据类型枚举 uint8_t size; // 类型字节数INT324, FLOAT4, STRING32 bool is_ro; // 是否只读如固件版本号 } ardTap_param_t; // 全局参数表最大 32 项可宏定义调整 static ardTap_param_t s_params[ARDTAP_MAX_PARAMS] {0}; static uint8_t s_param_count 0;注册过程实质是将变量地址写入该静态数组并建立键名到索引的哈希映射。当移动端发送SET sensor.temp25.6时ArdTap 执行以下原子操作解析键名sensor.temp通过 FNV-1a 哈希算法计算桶索引遍历冲突链表匹配字符串优化为 memcmp 逐字节比较根据type字段执行类型安全赋值switch(param-type) { case ARDTAP_TYPE_FLOAT: *(float*)param-addr atof(value_str); // 使用 avr-libc 的 atof break; case ARDTAP_TYPE_INT16: *(int16_t*)param-addr atoi(value_str); break; case ARDTAP_TYPE_STRING: strncpy((char*)param-addr, value_str, param-size-1); ((char*)param-addr)[param-size-1] \0; break; }此机制确保即使移动端错误发送SET motor.speedabc也不会导致 MCU 崩溃而是静默忽略该指令。1.6 移动端交互协议详解TapNLink 移动 App 与 ArdTap 的交互遵循严格的 REST-like 约定所有操作均通过/api/v1/前缀发起HTTP 方法Endpoint请求体示例MCU 端响应GET/params—返回 JSON 数组[{key:led.state,value:1,type:bool},{key:pwm.freq,value:1000,type:int16}]POST/params{led.state:0,pwm.duty:512}解析后调用ardTap_registerParam()对应的 setter返回{status:ok}GET/status—主动调用ardTap_sendStatus()上报的实时数据流SSE 协议POST/actions{cmd:reboot}触发ardTap_setCallback()注册的重启函数工程实践要点移动端获取/params返回的type字段决定 UI 控件类型——bool渲染为开关按钮int16渲染为滑动条范围由注释字段min/max约束string渲染为文本输入框。此元数据驱动 UI 模式极大降低移动端开发成本。1.7 典型应用案例智能温室控制器以基于 Arduino Mega 2560 的温室控制器为例展示 ArdTap 的完整集成流程硬件连接TapNLink Primer → Mega 2560TX→RX1,RX→TX1,GND→GNDDHT22 温湿度传感器 → Pin 22DHT 库默认12V 风扇 PWM 控制 → Pin 9Timer1 通道 1LED 状态指示 → Pin 13固件关键代码#include ArdTap.h #include DHT.h #define DHTPIN 22 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); // 全局可配置参数 float temp_target 25.0; // 目标温度℃ uint8_t fan_pwm 0; // 风扇 PWM 占空比0-255 bool led_on false; // LED 状态 char location[16] Greenhouse; // 位置标识 void setup() { Serial.begin(115200); Serial1.begin(115200); // TapNLink 串口 dht.begin(); // 注册所有可远程参数 ardTap_begin(Serial1, 115200); ardTap_registerParam(temp.target, temp_target, ARDTAP_TYPE_FLOAT); ardTap_registerParam(fan.pwm, fan_pwm, ARDTAP_TYPE_UINT8); ardTap_registerParam(led.state, led_on, ARDTAP_TYPE_BOOL); ardTap_registerParam(location, location, ARDTAP_TYPE_STRING); // 设置动作回调 ardTap_setCallback([](const char* cmd) { if (strcmp(cmd, fan.start) 0) fan_pwm 255; else if (strcmp(cmd, fan.stop) 0) fan_pwm 0; else if (strcmp(cmd, led.toggle) 0) led_on !led_on; }); } void loop() { ardTap_loop(); // 必须高频调用 // 读取传感器并上报 float h dht.readHumidity(); float t dht.readTemperature(); if (isnan(h) || isnan(t)) return; static uint32_t last_report 0; if (millis() - last_report 2000) { ardTap_sendStatus(sensor.temp, String(t, 1).c_str()); ardTap_sendStatus(sensor.humi, String(h, 1).c_str()); last_report millis(); } // 执行温控逻辑 analogWrite(9, fan_pwm); // 风扇控制 digitalWrite(13, led_on ? HIGH : LOW); // LED 指示 }移动端操作流程打开 TapNLink App扫描并连接设备进入「参数配置」页滑动temp.target滑块至28.5App 自动发送SET temp.target28.5ArdTap 解析后更新temp_target变量下一轮温控逻辑即按新阈值执行点击「动作」页中的fan.start按钮触发回调函数将fan_pwm设为 255查看「状态监控」页实时显示sensor.temp:28.3、sensor.humi:65.2。整个过程无需打开 Arduino IDE无需重新编译真正实现“拧螺丝式”硬件调试。1.8 与 FreeRTOS 的协同集成在 ESP32 等支持 RTOS 的平台ArdTap 可无缝融入多任务环境。典型集成模式如下// 创建 ArdTap 专用任务 void ardTapTask(void *pvParameters) { ardTap_begin(Serial, 115200); ardTap_registerParam(wifi.rssi, wifi_rssi, ARDTAP_TYPE_INT8); for(;;) { ardTap_loop(); // 保持高频率轮询 vTaskDelay(1); // 释放 CPU 时间片 } } // 在 app_main() 中启动 void app_main() { xTaskCreate(ardTapTask, ardtap, 4096, NULL, 5, NULL); // 其他任务WiFi 连接、传感器采集等... }关键同步机制当 ArdTap 任务修改共享变量如wifi_rssi时其他任务需使用临界区保护// 传感器采集任务中读取 RSSI void sensorTask(void *pvParameters) { for(;;) { // 进入临界区读取 ArdTap 参数 portENTER_CRITICAL(ardtap_mutex); int8_t rssi wifi_rssi; portEXIT_CRITICAL(ardtap_mutex); // 根据 RSSI 调整采样间隔 uint32_t interval (rssi -60) ? 1000 : 5000; vTaskDelay(interval / portTICK_PERIOD_MS); } }此设计确保参数读写的原子性避免因 ArdTap 任务与业务任务并发修改同一变量导致的数据撕裂。1.9 故障诊断与调试技巧ArdTap 内置三级诊断机制工程师可快速定位问题1. 硬件层诊断串口环回测试短接 TapNLink 的 TX/RX 引脚发送ATTEST预期返回OK电源纹波检测使用示波器观察 TapNLink VCC 引脚纹波 50mV 会导致通信丢帧地线共模噪声Arduino 与 TapNLink 必须共地长距离布线需增加磁珠滤波。2. 协议层诊断帧格式验证通过逻辑分析仪捕获 UART 波形确认 SOH(0x01)、ETX(0x03) 位置正确CRC8 手动校验使用在线工具如 https://crccalc.com验证帧校验值波特率容差测试在ardTap_begin()后插入Serial.printf(UART actual baud: %lu\n, Serial1.getActualBaudRate());。3. 应用层诊断参数注册检查调用ardTap_getParamCount()确认注册数量与预期一致内存泄漏检测在loop()中添加Serial.print(Free heap: ); Serial.println(ESP.getFreeHeap());ESP32回调死锁排查在回调函数首尾添加digitalWrite(LED_BUILTIN, HIGH/LOW)用示波器观测脉宽判断是否卡死。1.10 性能边界与资源占用在 ATmega328P 16MHz 平台上实测资源占用指标数值工程意义Flash 占用3.2 KB可容纳于 Nano 的 32KB Flash剩余空间足够运行 DHT 库与 PID 控制器RAM 占用184 bytes全局变量 256 字节接收缓冲区低于 2KB SRAM 限制最大参数数32 项满足绝大多数传感器节点需求温度/湿度/光照/压力/电机状态等指令处理延迟≤ 120 μs从接收到执行完毕满足 1kHz 实时控制要求极限压测结论当连续发送 100 条SET指令每条平均 24 字节时ArdTap 的接收缓冲区溢出概率为 0%但移动端需控制发送间隔 ≥ 10ms否则 TapNLink 模块的 BLE 协议栈可能丢弃后续包。1.11 安全机制与生产部署建议ArdTap 默认不启用认证但在工业场景必须强化安全1. 通信加密启用 TapNLink 的 AES-128 加密模式通过 AT 指令ATENCRYPT1,1234567890ABCDEF设置密钥ArdTap 固件需调用ardTap_enableEncryption(true)此时所有帧在 CRC 计算前进行 AES 加密。2. 访问控制在ardTap_setCallback()中实现白名单校验void securityCallback(const char* cmd) { if (strcmp(cmd, factory.reset) 0) { if (digitalRead(SW_PIN) LOW) { // 仅当硬件复位开关按下时允许 erase_config_flash(); } } }3. 生产固化流程使用ardTap_registerParam()注册所有出厂参数校准系数、设备 ID调用ardTap_saveToEEPROM()将初始值写入 EEPROM断电不丢失禁用ardTap_enableOTA()移除 DFU 引导区防止固件被恶意替换烧录时勾选 “Lock Bootloader” 选项物理级锁定 Flash 写保护。至此ArdTap 不再是实验性玩具而成为可部署于电力监控柜、农业物联网基站、楼宇自控终端的工业级配置框架。其价值不在于技术复杂度而在于将嵌入式工程师从重复烧录-测试-修改的循环中彻底解放让硬件调试回归“所见即所得”的直观本质。

相关文章:

ArdTap:Arduino零代码现场调试框架

1. ArdTap:面向嵌入式现场调试的零代码移动配置框架1.1 工程定位与设计哲学ArdTap 是一个专为 Arduino 生态设计的轻量级远程管理库,其核心目标并非替代传统固件开发流程,而是解决嵌入式系统在部署后阶段的现场参数调优、运行状态监控与快速功…...

分层dfs,一种介于dfs与bfs之间的算法

在算法设计的深邃丛林中,深度优先搜索与广度优先搜索如同两条风格迥异的小径。前者沿着一条道路走到黑,不撞南墙不回头,却往往在最优解的门口徘徊——它难以回答"最少需要几步"这样的问题,因为一旦深入某个分支&#xf…...

清北博雅考研|个性化备考服务指南,适配多元考生上岸需求

作为深耕考研辅导领域的老牌机构,清北博雅考研始终以“学员需求为核心”,打破传统辅导模式的局限,立足不同考生的备考痛点,打造“个性化定制实战化提分全维度保障”的专属服务,不搞同质化套路,不做虚假承诺…...

Entries()方法

entries() 方法返回一个迭代器对象,包含数据结构中每个元素的键值对。不同数据结构的用法略有不同。1. 数组的 entries()返回索引和值的键值对const arr [a, b, c]; const iterator arr.entries();console.log(iterator.next().value); // [0, a] console.log(ite…...

SecGPT-14B模型版本管理:无缝升级OpenClaw依赖的安全分析能力

SecGPT-14B模型版本管理:无缝升级OpenClaw依赖的安全分析能力 1. 为什么需要关注模型版本管理 上周我在用OpenClaw自动化处理安全日志时,突然发现几个原本能识别的攻击模式开始出现误判。排查后发现是底层SecGPT-14B模型更新后行为发生了变化——这个经…...

基于三菱PLC和组态王的恒温控制系统:加热炉温度控制设计-含梯形图程序、接线图原理图及IO分配...

基于三菱PLC和组态王恒温控制系统的设计加热炉温度控制 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面三伏天里给车间加热炉做恒温控制,那酸爽就跟抱着暖气片吃火锅似的。今天咱们来聊聊基于三菱FX3U PLC和组态王的温度控…...

CSS如何制作透明度渐变的蒙版_使用linear-gradient从黑色过渡到透明

linear-gradient做透明蒙版时背景没变暗,是因为未使用带alpha通道的颜色(如rgba或带透明度的十六进制),而默认颜色如black或#000无透明度,导致渐变失效;必须用rgba(0,0,0,0.8)到rgba(0,0,0,0)等显式透明色&…...

OpenClaw跨平台控制方案:千问3.5-9B同步操作多台设备

OpenClaw跨平台控制方案:千问3.5-9B同步操作多台设备 1. 为什么需要跨设备自动化 去年团队扩容后,我遇到了一个典型的技术债问题:每次新同事入职,都需要手动配置5台不同操作系统的开发机(Ubuntu/macOS/Windows&#…...

从MATLAB到Python:我如何把那个课程大作业的OCR算法“移植”并优化了一遍

从MATLAB到Python:OCR算法迁移与优化的实战指南 第一次用Python重写那个折磨我两周的MATLAB大作业时,我盯着屏幕上完全不同的函数名发愣——原来imbinarize在OpenCV里要拆成threshold加THRESH_OTSU,而曾经熟悉的形态学操作现在要面对getStruc…...

React 自定义 Hook 的命名规范与调用规则详解

React 允许在普通函数中调用 Hook,但该函数必须是符合约定的自定义 Hook(即以 use 开头),且只能在 React 组件或其它自定义 Hook 内部调用;违反规则虽不一定立即报错,却会破坏依赖追踪、导致状态异常或未来…...

PID控制算法原理与应用详解

1. PID控制算法概述PID控制算法是工业控制领域应用最广泛的控制算法之一,它通过比例(P)、积分(I)和微分(D)三个环节的组合,实现对被控对象的精确控制。这种算法结构简单、参数物理意…...

避坑!这些毕设太好抄了,3000+毕设案例推荐第1023期

231、基于Java的废品回收公司智慧管理系统的设计与实现(论文+代码+PPT)废品回收公司智慧管理系统主要功能包括:会员管理、经手人管理、客户管理、供应商管理、废品管理、收购管理、废品入库、销售出库、期间入库、经手人入库查询、期间出库、…...

昆明电力管供应商哪家强

在昆明城市电网升级、新能源基础设施建设的浪潮中,电力管作为保护电力线路的关键材料,其质量直接影响工程安全性与使用寿命。面对市场上琳琅满目的供应商,如何选择兼具适配性、可靠性与性价比的合作伙伴?本文从行业痛点切入&#…...

seo外包公司报价高的原因是什么_如何比较不同seo外包公司的报价

SEO外包公司报价高的原因是什么_如何比较不同SEO外包公司的报价 在当今竞争激烈的市场环境中,越来越多的企业选择外包SEO服务来提升他们的在线存在感和业务增长。不同的SEO外包公司报价差异巨大,一些公司的报价显得格外高。SEO外包公司报价高的原因究竟…...

【超详细】步进电机选型避坑指南:这5个参数没搞懂,买回来就是废铁

文章目录一、保持转矩:最大误区是把它当成“工作力矩”1.1 保持转矩的物理含义:通电锁住时的最大力矩,不是转起来的力矩1.2 选型时保持转矩到底该怎么用:经验系数法1.3 实测对比:标称力矩相同的两台电机,实…...

三方三层的主从博弈能源系统优化模型,粒子群算法求解研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

SEO_从零开始构建可持续的SEO优化体系(468 )

SEO从零开始:构建可持续的SEO优化体系 在互联网时代,搜索引擎优化(SEO)已经成为每一个网站拥有良好流量和知名度的关键。特别是在百度这样的大型搜索引擎上,一个良好的SEO优化体系不仅能提高网站的排名,还…...

STM32外设驱动库解析与实战应用

1. 为什么需要STM32外设驱动库?作为一名嵌入式开发者,我深知在STM32项目开发中最耗时的往往不是核心业务逻辑,而是各种外设的初始化和配置。每次新建项目都要重复编写USART、I2C、SPI等外设的初始化代码,不仅效率低下,…...

基于STM32的简易示波器设计与实现

1. 项目概述 这个基于STM32的开源简易示波器项目,是我最近用正点原子精英板完成的一个实用工具开发。作为一个嵌入式开发者,我经常需要观察各种信号波形,但专业示波器价格昂贵且不便携。于是决定自己动手做一个成本低廉、功能实用的简易示波器…...

即时通信|自定义基于 Netty 的二进制协议(应用层协议)+心跳检测

基于IM仿微信聊天的场景:TCP(传输层)负责:把字节流可靠地从A送到B自定义协议(应用层)负责:规定字节流的含义┌──────────┬──────────┬─────────────────…...

SEO整站优化服务需要哪些专业技能_SEO整站优化服务如何提高网站的技术优化

SEO整站优化服务需要哪些专业技能_SEO整站优化服务如何提高网站的技术优化 在当今数字化时代,网站的成功与否在很大程度上取决于其在搜索引擎上的排名。SEO整站优化服务作为提高网站可见度和流量的关键手段,需要一系列专业技能的支持。本文将详细探讨SE…...

Win11安装Claude-Code出现报错问题解决

现象在安装Claude-Code的时候,执行 irm https://claude.ai/install.ps1 | iex在开启科学上网的前提下,出现以下报错以管理员命令直接打开 PowderShell 输入 winget install Anthropic.ClaudeCode,问题解决!...

SEO 排名优化软件如何进行竞争对手分析

SEO 排名优化软件如何进行竞争对手分析 在当今的数字营销环境中,SEO(搜索引擎优化)已经成为企业提升在线可见度和吸引潜在客户的关键手段。而SEO排名优化软件作为这一领域的重要工具,其核心功能之一便是竞争对手分析。通过深入了…...

深圳 SEO 关键词推广的常见方法有哪些_深圳 SEO 关键词推广与竞价排名有何不同

深圳 SEO 关键词推广的常见方法有哪些 在数字化营销的时代,深圳 SEO 关键词推广已经成为企业提升网站曝光率和吸引潜在客户的重要手段。究竟有哪些常见的深圳 SEO 关键词推广方法呢?本文将详细探讨这些方法,帮助你更好地理解和实践深圳 SEO …...

linux (CentOS 7) 一次性安装中文手册的完整命令

一,一次性第一步:安装 CentOS 7 专属的中文语言包 man 手册包yum install -y kde-l10n-Chinese man-pages-zh-CN第二步:刷新语言环境,让配置生效export LANGzh_CN.UTF-8第三步:验证,直接执行中文 man lsma…...

manga-image-translator:如何让图片中的文字跨越语言障碍?

manga-image-translator:如何让图片中的文字跨越语言障碍? 【免费下载链接】manga-image-translator Translate manga/image 一键翻译各类图片内文字 https://cotrans.touhou.ai/ (no longer working) 项目地址: https://gitcode.com/gh_mirrors/ma/ma…...

OpenClaw知识库构建:Qwen3.5-9B自动化整理个人学习笔记

OpenClaw知识库构建:Qwen3.5-9B自动化整理个人学习笔记 1. 为什么需要自动化知识管理 去年我发现自己收藏了上千篇技术文章,却从未系统整理过。当需要查找某个概念时,要么忘记存放在哪里,要么找到的已经是过时内容。这种"数…...

TwinCAT3梯形图编程实战:从基础功能到高级应用

1. TwinCAT3梯形图编程入门指南 第一次打开TwinCAT3开发环境时,很多工程师都会被它强大的功能震撼到。作为工业自动化领域的"瑞士军刀",TwinCAT3的梯形图编程功能尤其适合从传统PLC转型过来的开发者。我刚开始接触时也走过不少弯路&#xff0c…...

C++的std--ranges等价

C的std::ranges等价:现代算法的新范式 C20引入的std::ranges库彻底改变了传统算法的编写方式,其中“等价”(equivalence)概念是理解范围操作的核心之一。与传统的“相等”(equality)不同,等价关…...

三极管的混合π模型

混合π模型如下图所示。 要用这个模型需要确定的参数有、、和。它们的公式如下。...