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

英飞凌TC387 PMSM永磁同步电机FOC控制Demo及相关文档,W032

英飞凌tc387 PMSM永磁同步电机foc控制demo含demo相关文档,W032

英飞凌 AURIX™ TC3xx 永磁同步电机(PMSM) FOC 演示包

—— 配置与显示子系统功能说明书

(基于 IFXKITA2GTC387MOTORCTR-HW-SW_V1.0.2)

一、整体定位

本 demo 在 “MCU 上电 → 用户可视交互 → 电机运行” 的完整链路中,承担了“可视化配置与实时反馈”的角色。

代码规模 570+ 文件,本文仅聚焦“配置管理”与“TFT 显示”两条主线,其余电机控制、通信、安全等模块另文说明。

二、配置子系统(Cfg_* 目录)

  1. 设计目标
    a. 上电 0~2 ms 内完成时钟、电源、启动模式(BMHD)等关键寄存器配置;
    b. 所有常量集中存放,方便量产时由脚本一键替换;
    c. 支持“同一镜像在不同硬件版型上运行”——通过宏开关隔离差异。
  1. 文件层级
    IfxCfg.h // 根配置,晶振/PLL 频率、Shell 超时、调试口波特率
    Ifx
    CfgSsw.h/.c // Startup Software 的回调表,决定上电自检流程
    Ifx
    CfgSswBmhd.c // 4 组冗余 BMHD,支持 A/B 面升级与回滚
    Ifx
    InterfaceConst.c // 与外部工具(如 DAS、PLS、CAN 标定)共享的符号表
  1. 关键流程(时间片视图)
    0 ms PORST 释放
    ↓ 硬件 SCU 读取 BMHD→验证 CRC→跳转入 0xA0000000
    start() 汇编入口,关中断,搬 DATA,清 BSS
    ↓ IfxSswjumpToFunctionWithLink(&IfxSswPmsInit)
    └─→ 1.2 ms 完成 300 MHz PLL + 20 MHz 备份时钟
    ↓ 若 IFX
    CFGSSWENABLELBIST==1,则执行 LBIST(~6 ms)
    ↓ 若 IFX
    CFGSSWENABLEPLLINIT==1,则执行 PLL 校验
    ↓ 最终跳转 main(),此时 Mcu 时钟、EVR、Flash Wait-State 全部就绪
  1. 量产交付要点
    • BMHD 中的 .stad 字段必须与链接脚本保持一致;
    • 若需加密启动,将 BMHD.password 设为非 0,并在最后一行写入 0x4321_1234 确认码;
    • 所有“#ifndef”宏均可在编译器附加选项中覆盖,无需改源码,方便 CI 差异化构建。

三、TFT 显示子系统(Display/* 目录)

  1. 设计约束
    • 分辨率 320×240,单芯片驱动,无外部 DRAM;
    • 支持 4 层同时存在:底栏(BAR)、菜单(MENU)、两路文本终端(STDOUT0/1)、一路图形(GRAPHICS0);
    • 所有绘图指令先进 FIFO,由 1 kHz 周期任务统一刷屏,避免在中断里直接操作 QSPI。
  1. 核心数据结构
    TCONIO_DRIVER
    ├─ display[5] // 五块虚拟显存指针+属性
    ├─ pdasmirror // 指向 DAS 共享内存,实现“PC 端实时截屏”
    ├─ displaymode // 当前用户可见图层
    └─ dialogmode // 键盘/幻灯片等模态窗口

TCOLORTABLE / TCOLORTABLEASCII

采用 5-6-5 RGB 格式,256 色调色板在图形模式、16 色在文本模式,运行时可通过 conio_setcolortable() 动态替换。

  1. 刷新管线(无 OS,纯时间片)
    1 kHz 定时器 → conioperiodic()
    ├─ 读取触摸坐标 (x,y)
    ├─ 若 fifo 中有令牌,则按顺序解析:
    │ TOKEN
    DISPLAYGRAPHICSLINE / CLRSCR / PRINTF …
    ├─ 根据显存类型调用底层:
    │ tftasciibar() // 底栏 1 行文本
    │ tftascii() // 全屏文本(带滚屏)
    │ tft
    graphic() // 全屏图形(2/4/16/256 色)
    └→ QSPI 以 16 bit 并行方式一次性刷 240×(240-12) 像素,理论帧率 30 Hz,实测 25 Hz。
  1. 触摸键盘实现
    keyboard.c 采用“区域表”方式:
    const TDISPLAYENTRY keyboardlist[]
    每个条目记录 (xmin,xmax,y,回调),触摸抬起时触发 keyboard_select() → 向 scanftext[] 插入字符。
    支持左/右/退格/大写锁定,输入长度 18 字节,可扩展。
  1. 与电机控制的数据耦合
    显示层不直接访问 FOC 变量,统一通过“FIFO 令牌”机制:
    PUTFIFODISPLAY(TOKENDISPLAYASCII_PRINTF | 长度<<16)
    将指针、格式串、参数一次性打包,ISR 与主循环零临界区冲突。

四、性能与资源占用

Flash:Cfg_段 6.2 kB,Display/段 18.7 kB(含 8×12 点阵字模 3 kB)。

RAM:显存最大 72 kB(256 色图形),文本模式仅 2.4 kB;FIFO 2 kB。

英飞凌tc387 PMSM永磁同步电机foc控制demo含demo相关文档,W032

CPU:1 kHz 周期任务平均 22 µs(300 MHz 主频),峰值 45 µs(全屏滚屏时)。

五、移植与裁剪指南

  1. 更换屏幕
    只需修改 tft*hw.c 中的 QSPI 初始化序列与 RowBuff 长度;
    若分辨率提高,需在 coniocfg.h 重算 TERMINALMAXX/MAXY 与 GRAPHICSWIDTH。
  1. 关闭图形模式
    在工程预编译选项加入 -DGRAPHICMODE=TEXTMODE,链接器自动裁剪 tft_graphic* 段,节省 4 kB Flash。
  1. 多核场景
    TFTDISPLAYVARLOCATION 宏决定显存放到 CPU0~CPU5 哪一段 LMU;
    若由 CPU1 负责刷新,则把 conio
    periodic() 放到 CPU1 的 1 kHz 中断,CPU0 仅写 FIFO,实现“零等待”双核分工。

六、常见开发问答

Q1: 上电后屏幕花屏?

A: BMHD 中 .stad 地址与链接脚本不一致,导致 SCU 取到非法指令;检查 IfxCfgSswBmhd.c 与 *.lsl 文件是否同步。

Q2: 键盘输入无响应?

A: 触摸驱动未校准,需运行 touchinit() 中的自学习流程;若使用非 Infineon 触摸板,替换 touchdasinfo 结构即可。

Q3: 如何在中断里快速打印一行调试?

A: 直接调用 displayasciiprintfxy(),内部已关中断保护 FIFO;但字符串长度≤40 字节,避免 FIFO 溢出。

七、小结

配置与显示子系统通过“宏-表-回调”三级抽象,兼顾了上电速度、量产可维护性与终端用户体验。

开发者只需修改 cfg 文件即可适配不同晶振、屏幕或安全等级;显示层则像“零拷贝”终端,任何任务皆可把调试信息、电机状态、甚至实时曲线“一句话”丢进 FIFO,即刻在 TFT 可见。

http://www.cnnetsun.cn/news/1729193.html

相关文章:

  • 如何快速免费解密网易云音乐NCM文件:ncmdumpGUI终极指南
  • python docker
  • 告别枯燥点灯:用LVGL 8.2给你的STM32F103开发板做个炫酷仪表盘
  • 华大HC32F460 GPIO配置避坑指南:从LED闪烁到中断触发全流程
  • 突破苹果限制:OpenCore Legacy Patcher让旧Mac重获新生的完整指南
  • 告别90%重复操作:XHS-Downloader如何重构小红书内容采集体验
  • [具身智能-239]:OpenCV 与深度神经网络:两种计算机视觉哲学的深度对比
  • AI赋能嵌入式开发:借助快马平台智能生成与优化FreeRTOS多任务管理系统
  • PP-DocLayoutV3新手教程:3步搭建文档分析环境,Web界面直观好用
  • LeetCode知识点总结 - 540
  • LeetCode知识点总结 - 541
  • PyTorch 2.8镜像快速部署:5分钟验证torch.cuda.device_count()多卡支持
  • 智能游戏协同:重新定义英雄联盟玩家与游戏的交互范式——基于LCU API的全流程辅助解决方案
  • 华为交换机SSH远程登录实战:从零开始配置管理VLAN和AAA认证
  • 考虑需求响应和碳交易的综合能源系统日前优化调度模型 关键词:柔性负荷 需求响应 综合能源系统 ...
  • Sen2Cor批处理实战:从L1C到L2A,如何确保你的大气校正结果不受处理基线影响?
  • 苍穹外卖——项目实战:套餐管理模块的CRUD全流程解析
  • 【实战指南】AutoGen Studio UI层部署与智能体编排:一站式开发环境搭建与核心功能解析
  • 从3到N:YOLO/RT-DETR多通道输入改造的实战避坑指南
  • 前端新手如何用快马平台轻松掌握contextmenumanager右键菜单开发
  • 算法与数据结构精讲:最大子段和(暴力 / 优化 / 分治)+ 线段树从入门到实战
  • 《为什么90%的数字孪生都是假的?》——没有空间数据的“孪生”,只是一个会动的PPT
  • 比亚迪3月销量突破30万辆,获中国新能源车企销量冠军
  • 《智慧仓储(营房)三维空间智能管控系统白皮书(封标级)》——构建“人-车-物”全域可感知、可追溯、可调度的空间智能保障体系
  • **MQTT协议实战:从零搭建轻量级物联网消息中间件系统**在当前万物互联的时代,**MQ
  • OZON平台选品指南:揭秘俄罗斯市场的潜力品牌与爆款趋势
  • Unity 2019.4实战:3D横板格斗游戏BeatEmUp从零开发全流程(附源码)
  • 别再到处找教程了!用PHPStudy Pro一键搞定DVWA靶场(附常见报错解决方案)
  • 228. 汇总区间
  • 别再只懂Diffusion了!Flow Matching如何用更简单的思路搞定生成模型?