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

张开发
2026/4/6 22:40:32 15 分钟阅读

分享文章

基于is620n、is620p及is620伺服驱动器代码与原理的详解
is620nis620pis620伺服驱动器的代码和原理等IS620N 伺服驱动器 PUB 模块功能说明书基于 V103.5 MC710.28 源码逆向分析一、模块定位PUBPublic模块位于00_Public目录是 IS620N 全系伺服驱动的“系统底座”。对上为 FUNC功能、MTR电机、COMM通讯三大业务域提供统一初始化、时钟、中断、时间片、版本管理、安全机制。对下封装 STM32F4 硬件细节RCC、GPIO、EXTI、TIM、FSMC、ADC、DMA、DBGMCU形成“虚拟裸机”接口保证上层代码与芯片解耦。横向通过“全局原型头文件 配置头文件”机制实现 620P/620N/650P/650N 多机型一键切换。二、核心职责时钟树与电源域管控– 168 MHz PLL 全过程配置含 Flash 5WS、Prefetch、ICache、DCache。– 动态关闭未用外设时钟降低 30 % 功耗。– CSSClock Security System监控HSE 失效自动触发 NMI保证伺服不掉速。中断矩阵与实时性保障– 建立 4 级嵌套模型0 级FPGA 16 kHz 电流环EXTI0P01 级位置环软中断EXTI1P12 级通讯同步TIM2P23 级后台 1 kHz 主循环SysTick 衍射定时器– 所有 ISR 入口自动打点1 MHz TIM4 时戳精度 1 µs用于 jitter 统计。时间基与节拍服务– 提供 1 MHz/168 MHz 双路“无时钟溢出”APIGetSysTime1MHzClk()用于 16 kHz 周期测量GetSysTime168MHzClk()用于 ns 级性能剖析。– 主循环 1 kHz 节拍采用“相位锁定”算法确保调度抖动 50 µs。安全与故障注入– 上电 200 ms 内完成 FPGA 握手0x3F 寄存器 50 次回环测试失败报 Er102。– 版本矩阵校验ST 固件主版本 ≠ FPGA 主版本立即封锁 PWM。– 预留软件复位通道TestData0xA5A5产测可一键重启不重新上电。多机型配置机制– 编译期通过DRIVERTYPE宏选择配置头文件PUBIS620N_Config.h 等实现• 编码器协议栈HC/Nikon/Tamagawa/海德汉/旋变条件编译• 载波频率、电流环增益、EtherCAT/CAN 功能裁剪• 非标版本号 16 bit 注入支持 4095 种客户定制。三、启动流程冷启动startB4main()—— 早于 C 语言运行环境① 关闭所有 AHB/APB 外设时钟清零 SRAM 0x20000000 起 20 kB② 调用PUBSystemInit()配置 168 MHz PLL③ 使能 DBGMCU断点停 TIM2/3/4/11方便产测。main()—— 业务初始化阶段①PubPeripheralConfigRST()– 初始化 FSMC 与 FPGA 16 bit 并行总线50 MHz– 若FPGAIsFPGARdy()失败报 Er102 并红灯常亮。②FUNCParameterFristRST()/MTRParameterFristRST()– 从 EEPROM/编码器 ROM 加载功能码填充FunCodeUnion– 计算电流环、速度环、位置环周期系数并写入 FPGA。③PUBInterrupt_RST()– 按上述 4 级模型配置 NVIC– 映射 FPGA 中断线EXTI0 ← FPGA 电流环同步16 kHz 方波EXTI1 ← 软件触发位置环4 kHzEXTI11← Z 脉冲/探针④ 开总中断点亮绿色 LED置位AllInitDone1。主循环 —— 1 kHz 相位锁定调度– 每 1 ms 采集一次 TIM4 时戳计算与理想 1 ms 的偏差次日修正ScheduleOckTime– 依次调用MTRMainLoop()→FUNC_MainLoop()形成“电机-功能”流水线。四、实时数据流16 kHz 电流环中断EXTI0– 进入EXTI0IRQHandler()后自动记录ToqIntStartTime– 调用MTRGetParaToqInterrupt()读取 FPGA 反馈电流、电压、角度– 调用MTRReguControlToqInterrupt()完成 Clark/Park、PI、反 Park、SVPWM– 退出前记录ToqInterruptPRTime用于 CPU 负载率实时监控。4 kHz 位置环软中断EXTI1– 由电流环通过SoftInterruptEn触发保证与电流环严格相位对齐– 内部调用FUNCPostionControlPosInterrupt()完成位置 PID、速度前馈、电子齿轮。1 kHz 后台任务– 非实时功能Modbus 协议栈、EtherCAT PDO 打包、面板 LED 扫描、温度采样、风扇调速。五、关键数据结构对外可见–STRPUBGLOBALVARIABLE集中放置系统级状态如中断耗时、主循环周期、故障快照–STRFPGACALCULATE_VAR保存电压等级、定标系数、速度滤波器状态实现“FPGA-侧系数”与“DSP-侧系数”双向同步–SinTable[256]Q15 正弦表供全系统查表法使用避免重复占用 Flash。六、性能指标is620nis620pis620伺服驱动器的代码和原理等– 电流环中断最坏执行时间 ≤ 7.5 µs168 MHz 下 1260 周期– 主循环调度抖动 σ 15 µs室温 25 ℃负载 60 % 测试– 冷启动到电机可伺服时间 450 ms含编码器 ROM 校验– 安全故障响应时间过流、短路、编码器断线≤ 2 个 PWM 周期。七、扩展指南新增机型– 在PUBGlobalPrototypes.h增加DRIVERTYPE枚举– 新建PUBISxxxxConfig.h按模板填写版本号、功能开关、电子标签– 在PUBRCCDriver.c的PUBPeripheralClockConfig()补充外设时钟掩码。移植到 STM32H7– 仅需替换PUB_RCCDriver.c的 PLL 配置段– 把 FSMC 改为 FMC数据宽度改为 32 bit– 中断优先级组改为 4 bit 抢占 0 bit 子优先级保持与原矩阵兼容。增加安全中断– 在PUBInterruptRST()注册新 EXTI– 中断入口必须调用PUB_SafetyISRHook()以记录时戳并通知 FUNC 域。八、注意事项– FPGA 版本号必须与 ST 固件“大版本”一致否则直接封锁 PWM– 任何对STRPUBGvar的跨域写操作需关中断防止 16 kHz 中断重入– 产测阶段可通过 J-Link 向TestData写入 0xA5A5 触发“热复位”无需重新上电。—— 以上即为 IS620N PUB 模块全景功能说明可作为维护、移植、二次开发的顶层入口文档。

更多文章