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

基于is620n、is620p及is620伺服驱动器代码与原理的详解

is620n,is620p,is620,伺服驱动器的代码和原理等

IS620N 伺服驱动器 PUB 模块功能说明书

(基于 V103.5 MC710.28 源码逆向分析)

一、模块定位

PUB(Public)模块位于00_Public目录,是 IS620N 全系伺服驱动的“系统底座”。

  • 对上:为 FUNC(功能)、MTR(电机)、COMM(通讯)三大业务域提供统一初始化、时钟、中断、时间片、版本管理、安全机制。
  • 对下:封装 STM32F4 硬件细节(RCC、GPIO、EXTI、TIM、FSMC、ADC、DMA、DBGMCU),形成“虚拟裸机”接口,保证上层代码与芯片解耦。
  • 横向:通过“全局原型头文件 + 配置头文件”机制,实现 620P/620N/650P/650N 多机型一键切换。

二、核心职责

  1. 时钟树与电源域管控
    – 168 MHz PLL 全过程配置(含 Flash 5WS、Prefetch、ICache、DCache)。
    – 动态关闭未用外设时钟,降低 30 % 功耗。
    – CSS(Clock Security System)监控,HSE 失效自动触发 NMI,保证伺服不掉速。
  1. 中断矩阵与实时性保障
    – 建立 4 级嵌套模型:
    0 级:FPGA 16 kHz 电流环(EXTI0,P0)
    1 级:位置环软中断(EXTI1,P1)
    2 级:通讯同步(TIM2,P2)
    3 级:后台 1 kHz 主循环(SysTick 衍射定时器)
    – 所有 ISR 入口自动打点(1 MHz TIM4 时戳),精度 1 µs,用于 jitter 统计。
  1. 时间基与节拍服务
    – 提供 1 MHz/168 MHz 双路“无时钟溢出”API:
    GetSysTime1MHzClk()用于 16 kHz 周期测量;
    GetSysTime
    168MHzClk()用于 ns 级性能剖析。
    – 主循环 1 kHz 节拍采用“相位锁定”算法,确保调度抖动 < 50 µs。
  1. 安全与故障注入
    – 上电 200 ms 内完成 FPGA 握手(0x3F 寄存器 50 次回环测试),失败报 Er102。
    – 版本矩阵校验:ST 固件主版本 ≠ FPGA 主版本立即封锁 PWM。
    – 预留软件复位通道(TestData==0xA5A5),产测可一键重启不重新上电。
  1. 多机型配置机制
    – 编译期通过DRIVERTYPE宏选择配置头文件(PUBIS620N_Config.h 等),实现:
    • 编码器协议栈(HC/Nikon/Tamagawa/海德汉/旋变)条件编译;
    • 载波频率、电流环增益、EtherCAT/CAN 功能裁剪;
    • 非标版本号 16 bit 注入,支持 4095 种客户定制。

三、启动流程(冷启动)

  1. startB4main()—— 早于 C 语言运行环境
    ① 关闭所有 AHB/APB 外设时钟,清零 SRAM 0x20000000 起 20 kB;
    ② 调用PUB
    SystemInit()配置 168 MHz PLL;
    ③ 使能 DBGMCU,断点停 TIM2/3/4/11,方便产测。
  1. main()—— 业务初始化阶段
    PubPeripheralConfigRST()
    – 初始化 FSMC 与 FPGA 16 bit 并行总线(50 MHz);
    – 若FPGAIsFPGARdy()失败,报 Er102 并红灯常亮。
    FUNC
    ParameterFristRST()/MTRParameterFristRST()
    – 从 EEPROM/编码器 ROM 加载功能码,填充FunCodeUnion
    – 计算电流环、速度环、位置环周期系数并写入 FPGA。
    PUB
    Interrupt_RST()
    – 按上述 4 级模型配置 NVIC;
    – 映射 FPGA 中断线:
    EXTI0 ← FPGA 电流环同步(16 kHz 方波)
    EXTI1 ← 软件触发位置环(4 kHz)
    EXTI11← Z 脉冲/探针
    ④ 开总中断,点亮绿色 LED,置位AllInitDone=1
  1. 主循环 —— 1 kHz 相位锁定调度
    – 每 1 ms 采集一次 TIM4 时戳,计算与理想 1 ms 的偏差,次日修正ScheduleOckTime
    – 依次调用MTR
    MainLoop()FUNC_MainLoop(),形成“电机-功能”流水线。

四、实时数据流

  1. 16 kHz 电流环中断(EXTI0)
    – 进入EXTI0IRQHandler()后自动记录ToqIntStartTime
    – 调用MTR
    GetParaToqInterrupt()读取 FPGA 反馈电流、电压、角度;
    – 调用MTR
    ReguControlToqInterrupt()完成 Clark/Park、PI、反 Park、SVPWM;
    – 退出前记录ToqInterrupt
    PRTime,用于 CPU 负载率实时监控。
  1. 4 kHz 位置环软中断(EXTI1)
    – 由电流环通过SoftInterruptEn触发,保证与电流环严格相位对齐;
    – 内部调用FUNCPostionControlPosInterrupt()完成位置 PID、速度前馈、电子齿轮。
  1. 1 kHz 后台任务
    – 非实时功能:Modbus 协议栈、EtherCAT PDO 打包、面板 LED 扫描、温度采样、风扇调速。

五、关键数据结构(对外可见)

STRPUBGLOBALVARIABLE:集中放置系统级状态,如中断耗时、主循环周期、故障快照;

STRFPGACALCULATE_VAR:保存电压等级、定标系数、速度滤波器状态,实现“FPGA-侧系数”与“DSP-侧系数”双向同步;

SinTable[256]:Q15 正弦表,供全系统查表法使用,避免重复占用 Flash。

六、性能指标

is620n,is620p,is620,伺服驱动器的代码和原理等

– 电流环中断最坏执行时间 ≤ 7.5 µs(168 MHz 下 1260 周期);

– 主循环调度抖动 σ < 15 µs(室温 25 ℃,负载 60 % 测试);

– 冷启动到电机可伺服时间 < 450 ms(含编码器 ROM 校验);

– 安全故障响应时间(过流、短路、编码器断线)≤ 2 个 PWM 周期。

七、扩展指南

  1. 新增机型:
    – 在PUBGlobalPrototypes.h增加DRIVERTYPE枚举;
    – 新建PUBISxxxxConfig.h,按模板填写版本号、功能开关、电子标签;
    – 在PUBRCCDriver.cPUBPeripheralClockConfig()补充外设时钟掩码。
  1. 移植到 STM32H7:
    – 仅需替换PUB_RCCDriver.c的 PLL 配置段;
    – 把 FSMC 改为 FMC,数据宽度改为 32 bit;
    – 中断优先级组改为 4 bit 抢占 + 0 bit 子优先级,保持与原矩阵兼容。
  1. 增加安全中断:
    – 在PUBInterruptRST()注册新 EXTI;
    – 中断入口必须调用PUB_SafetyISRHook()以记录时戳并通知 FUNC 域。

八、注意事项

– FPGA 版本号必须与 ST 固件“大版本”一致,否则直接封锁 PWM;

– 任何对STRPUBGvar的跨域写操作需关中断,防止 16 kHz 中断重入;

– 产测阶段可通过 J-Link 向TestData写入 0xA5A5 触发“热复位”,无需重新上电。

—— 以上即为 IS620N PUB 模块全景功能说明,可作为维护、移植、二次开发的顶层入口文档。

http://www.jsqmd.com/news/599073/

相关文章:

  • Z-Image-Turbo-辉夜巫女从零开始:新手也能10分钟跑通文生图完整链路
  • AI Agent正在加速企业工作流程,但安全隐患已悄然浮现
  • RAG 实战|向量数据库检索原理 + Chroma 实战全攻略
  • 3步提升Windows 11系统效率:Win11Debloat开源优化工具全指南
  • python docker
  • 霍营,一个神奇的地方
  • 终极指南:如何彻底移除Windows Defender安全组件
  • 网站建设时如何考虑 SEO 因素_如何做好 SEO 竞争对手分析
  • SPIRAN ART SUMMONER高性能部署:PyTorch+4090D实现秒级响应唤醒体验
  • XS9950A国产芯片替代方案解析:3通道CVBS/HDCCTV视频信号处理与同轴音频支持
  • Google Calendar + Gemini:普通日历邀请竟能变成隐蔽监控工具
  • 2025届学术党必备的五大AI辅助写作平台推荐榜单
  • AI赋能开发:让快马解析免费资料智能生成语音助手框架
  • Anthropic官方Git MCP服务器曝三重漏洞:提示注入即可实现文件读写与远程代码执行
  • Cosmos-Reason1-7B实操手册:GPU显存监控脚本+自动清理占用进程Shell工具
  • NVIDIA 提出 PivotRL:不做整段长轨迹 RL,也能把 Agent 后训练做得又快又稳
  • (-aAa-) Linux,预制二进制文件 的 3 种安装方法 (***)
  • CLIP-GmP-ViT-L-14真实效果:多语言文本+图像跨模态检索演示
  • 别再只会Ctrl+C/V了!用WPS JS宏实现单元格的“智能复制”,效率翻倍
  • Whisper-large-v3在智能办公中的应用:会议记录自动化系统
  • MongoBleed(CVE-2025-14847):影响超8万台MongoDB服务器的高危内存泄露漏洞已在野活跃利用
  • 3步掌握3dsconv:从格式转换到自动化管理
  • 垂直行业落地:医疗场景下的 Agent 诊断辅助系统架构拆解
  • Bootstrap5 轮播详解
  • 用Proteus 8.10和AD21复刻一个51单片机光照报警器(附完整代码和避坑指南)
  • Jina AI 搜索底座模型生产部署:从选型到优化的全链路实战
  • C++ RAII 模式的工程价值
  • Linux系统编程 - 线程thread
  • C++的std--strong_ordering三路比较结果与排序算法的稳定性保证
  • 老旧Mac升级指南:使用OpenCore Legacy Patcher实现系统兼容性突破