Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
电机控制芯片实用反馈:F28335与先楫第三期
2026-10-16

电机控制芯片实用反馈:F28335与先楫第三期

第三期:2024 批次 F28335 上 ADC 读数接近满量程时跳变、ePWM 增减计数下 CBC 在 TBPRD 处重新触发、25 MHz 晶振配 DIVSEL = 3 跑 150 MHz 的越界时钟配置、CCS 载入 hex 比 .out 慢的原因,加上先楫侧第一次出现的用户实测——SEI 模拟 SWD 的第二篇与一块自研 HPM6P41 伺服板。

电机控制芯片实用反馈|F28335与先楫
电机控制芯片实用反馈|F28335与先楫@wsolitary
上一辑收的是首期之后在 TI E2E 上新出现的四条 F28335 记录。这一辑接着往下记,检索截止到 2026-10-16,收录 5 条:三条来自 TI E2E 的 F28335 与 C2000 记录,两条落在先楫这一侧。
先楫侧这一期有了变化。前面两辑里,先楫的记录只有厂商材料和个人项目,这一辑第一次出现了开发者自己板子上跑出来的实测。
读之前仍是三个约定。
一条记录只说明有人这样用过。 帖子数量只表示有多少人把经历写了下来,本辑不拿它推算故障率,也不拿它推算市场份额。
作者没写的条件,这里留空。 温度、母线电压、负载、固件版本这些,原帖不提就写「未披露」,不替作者补一个看起来合理的值。
厂商材料只用来核验。 数据手册、参考设计和 SDK 更新说明能确认规格与设计意图,它们对芯片的评价不独立,凡属此类都标 V。
日期按北京时间记录,来源页面只显示相对时间的照原样说明。
层级含义
A用户一手实测,型号、板卡、条件与复现过程至少写到能被人照着查
B用户一手陈述,型号或测试条件有明显缺口
C二手转述、市场观察或行业媒体报道,只作背景
V厂商材料,用于核验规格与设计

量产验证与供货

换成旧批次的芯片,ADC 读数就回到正常

一位工程师在 E2E 上报了他这条产线上的现象。他用 TMS320F28335ZJZS 做电源变换器控制,从 2018 年用到现在;最近一批芯片的 ADC 读数从 0% 平缓升到 95%,超过 95% 之后直接跳到 100%,而实际输入只有 96%。1
他做过的对照是把同一块 PCB 上的 DSP 换成老批次的芯片,ADC 就恢复正常。他给出两个批次号:出问题的 2437-G4A-49APDYW-4478989PHI,正常的 2340-G4A-3AAC9IW-NA。1
TI 的 Matthew 先算了一遍误差预算,再列出他需要发帖人补的条件。误差预算按数据手册的三项来算:
ADC 误差项TI 给出的数值1
增益误差±15 LSB
失调误差±15 LSB
积分非线性 INL±2 LSB
TI 算出的结论是:在 95% 满量程处,理想码值约 3890,最坏情况是 3890 + 14(定标增益)+ 15 + 2 = 3922;读到 4095 就超出了这颗器件应该出现的范围。1
他确认两个日期码分别是 2023 年(正常批次)与 2024 年(异常批次),并说会尝试调出这两批器件的出厂数据记录。他同时提醒,这些记录年代较久,大概率已经归档,提取要花更长时间。1
帖子停在这里。TI 没有给出根因,发帖人也没有回报补充条件后的结果。
  • 型号:TMS320F28335ZJZS(发帖人写法;帖子归属的料号是 TMS320F28335)
  • 板或模块:电源变换器控制板,型号未披露;对照实验在同一块 PCB 上换芯片完成
  • 硬件或固件版本:未披露
  • 测试条件:应用自 2018 年起沿用;读数在 96% 输入时跳到满码值;异常批次 2437-G4A-49APDYW-4478989PHI,正常批次 2340-G4A-3AAC9IW-NA;参考源用内部还是外部、环境温度、采样率均未披露
  • 日期:2026-10-09(TI 回复 2026-10-12)
  • 证据层级:B(批次号与现象写清了,码值、参考源与温度都缺)
  • 归因:未定因。TI 未确认,先按误差预算判断读数超出应然范围,并要求补条件;批次差异由发帖人一方提出,不能据此断言器件不良
  • 复现与解决状态:用户侧换回旧批次芯片后读数正常;根因未定位,帖子仍在等发帖人补条件
  • 待核实点:参考源、环境温度、正常与异常两段各自的理想码值与实际码值、是否所有通道都出现、采样保持电路 A 与 B 有无差别;这两批器件的出厂数据记录里能不能看出差异
  • 原始链接:TMS320F28335: ADC Error Observed in TMS320F28335ZJZS DSP – Production Batch Investigation

ADC 与 PWM 同步

增减计数模式下,输出重新出现在 TBPRD,而不只是计数到 0

一位工程师问的是 trip-zone 的 cycle-by-cycle(CBC)在增减计数模式下的清除点。他把 ePWM1 配成增减计数,TZ1 作单次触发源,TZCTL 让 1A 与 1B 都强制为低;CBC 位由软件置位,一处在 GPIO 外部中断的下降沿,另一处在主循环里——只要外部条件还在(引脚持续为低)就再置一次。按他对参考手册的理解,CBC 被强制之后只有计数到 0 才解除,在增减计数下这是每两个 TBPRD 一次;示波器上却看到计数到 TBPRD 时输出也重新起来了。2
TI 的 Srikanth 分两步回答。手册那一半是确认的:CBC 只在 TBCTR = 0 自动清除。2
TBPRD 处这一半,他的判断落在软件上。发帖人的 CMPCTL.LOADAMODE 与 LOADBMODE 都设成 CC_CTR_ZERO_PRD,比较值的影子寄存器在 CTR=0 和 CTR=TBPRD 两处都会装载;装载之后,动作限定器按 AQCTLA、AQCTLB 的配置把输出重新拉起来,主循环的代码随后才再次置位 CBC。示波器上看到的那一段,产生于动作限定器事件与软件重新施加触发之间。2
他给的两条改法是把装载模式改成只在 CTR=0 装载,并确认 TZCTL 的写入放在 EALLOW/EDIS 之间。帖子没有标记解决,发帖人也没有回报改后的波形。2
  • 型号:TMS320F28335
  • 板或模块:未披露
  • 硬件或固件版本:未披露;帖内只有寄存器级配置
  • 测试条件:ePWM1 增减计数,另有 ePWM2、ePWM3 同配置;死区模块全开、极性为 active high complementary;TZ1 作单次触发源,TZA/TZB 强制为低;CBC 由 GPIO 外部中断与主循环反复置位;TBPRD 的取值、开关频率、母线电压与负载均未披露
  • 日期:2026-07-31(回复 2026-08-02、2026-08-11)
  • 证据层级:B(寄存器配置写得具体,示波器波形的时基与 TBPRD 数值都没有)
  • 归因:软件与配置。TI 的判断是软件反复置位,叠加比较值在 TBPRD 处装载,造成输出短暂重新拉高
  • 复现与解决状态:TI 给出原因方向与改法;发帖人未确认
  • 待核实点:把装载模式改成只在 CTR=0 装载之后,TBPRD 处那一段是否消失;示波器上看到的是动作限定器重新拉高,还是触发被真正重新施加
  • 原始链接:TMS320F28335: CBC behaviour in ePWM UP-DOWN count mode

中断与实时性

25 MHz 晶振配 DIVSEL = 3 跑到 150 MHz,TI 说这条配置不允许

一位工程师问的是时钟,问的是长期风险。他过去的板子用 25 MHz 外部晶振,PLLCR = 6、DIVSEL = 3,得到 150 MHz;后来他发现数据手册不允许在 PLL 使能时取这个分频值。他想知道这套配置长期跑下去会带来什么——会不会随着温度变化或器件差异出现随机的异常。3
TI 的 Zackary 引了数据手册里的原因:PLL 输出端的分频器负责保证送到内核的时钟占空比正确,所以 PLL 工作时不能取 DIVSEL = 3。这套配置把 PLL 的输出直接送进内核,占空比就没有保障。3
他列出的可能后果有三种:内核逻辑的建立/保持时间余量不足、时钟抖动与相位噪声、触发器进入亚稳态。针对发帖人关心的长期风险,他说结温升高会让时序余量收窄,不同硅片批次的 PLL 特性也有差异,因此有些板子会先出问题,另一些看起来一直正常。3
按数据手册的规范做法,150 MHz 要用 30 MHz 晶振,配 PLLCR = 10、DIVSEL = 2。用 25 MHz 晶振、DIVSEL = 2 时,PLLCR 取到 10 也只能到 125 MHz。发帖人回了一句「We will switch to the 30 MHz」,没有给出改后的实测。3
  • 型号:TMS320F28335
  • 板或模块:未披露(帖内指的是既有设计里已经出货的板子)
  • 硬件或固件版本:未披露
  • 测试条件:25 MHz 外部晶振;PLLCR = 6、DIVSEL = 3,SYSCLKOUT 150 MHz;发帖人只写了「目前没有明显问题」,温度、批量与运行时长均未披露
  • 日期:2026-08-10(发帖人确认 2026-08-11)
  • 证据层级:B(配置写得能对照,实测数据一条也没有)
  • 归因:软件与配置。配置超出数据手册允许范围,由 TI 回复确认;帖内没有出现任何故障实例,这条记录只能说明风险,不能说明已经发生了损坏
  • 复现与解决状态:发帖人决定改用 30 MHz 晶振;没有给出改后的实测
  • 待核实点:已经出货的板子要不要评估,以及评估到什么程度;25 MHz 晶振下只能跑到 125 MHz,对现有应用够不够
  • 原始链接:TMS320F28335: About using DIVSEL = 3 with PLL enabled

工具链与调试器

CCS 载入 hex 比载入 .out 慢,慢在写入粒度上

一位 TI 工程师转述了客户的调试流程,复现步骤写得能照着做。导入 F28P650 的 adc_ex1,切到 Flash 构型,在工程属性里打开 Hex2000 并保持默认设置,编译后载入 hex;与直接载入 .out 相比,载入 hex 慢很多。4
TI 的 Arpit 给的原因是两者走的写入路径不同。.out 里带着 COFF/ELF 的段表,调试器按段把几块连续的大块写进 flash;hex 是 ASCII 文本,要先逐行解析、把每条记录还原成二进制,而每条记录只带 16–32 字节,记录之间一旦不连续,flash 插件就退化成成千上万次小写入。他还提到 Hex Utility 的设置不像编译器与链接器选项那样被继承,默认配置可能比手工调过的更低效。4
他的建议是 CCS 调试载入直接用 .out,hex/TI-TXT 留给外部烧录路径,比如 UniFlash、第三方编程器和 SCI/I2C/CAN 串口引导。4
发帖人随后反驳了这条解释的两处。他手上的例子里内存大部分是连续的;解析 hex 在主机侧完成,他自己用 Python 把 hex 转二进制几乎瞬间完成。他说明客户为什么非用 hex 不可:bootloader 与应用分别编译、转成 hex 后拼成一个大 hex,还要往里面写一个硬编码标志位,这件事用 .out 不好做;他问真正的瓶颈在哪。4
Arpit 第二次回复把可能的位置指到 ECC 生成与拼接点上的 flash 编程粒度。F28P65x 的 flash 编程要按 64 位对齐,ECC 按 64 位字计算、绑在 128 位对齐的地址上;.out 载入能借链接脚本的 ALIGN 指令把 ECC 生成与编程并成大块,手工拼接容易留下没对齐的地址。他给出 TI 那篇讲「把应用与 bootloader 合成一个文件」的 FAQ,建议改用 --load_image,并把那个标志位放成正式的链接段。4
  • 型号:TMS320F28P650DH(发帖人是 TI 工程师,转述客户的问题;帖内「Other Parts Discussed in Thread」列出 UNIFLASH、TMS320F28377S、TMS320F28069F、TMS320F28335 等)
  • 板或模块:未披露
  • 硬件或固件版本:CCS 版本未披露;启用了 Hex2000(C2000 Hex Utility),设置全部取默认值
  • 测试条件:按上面的复现步骤在 CCS 里载入 hex 并与载入 .out 对比;hex 文件大小与实际耗时均未披露
  • 日期:2026-08-25(TI 回复 2026-08-25、2026-08-26、2026-08-31)
  • 证据层级:B(复现步骤能照着做,耗时的量级没有数字,现象也不是发帖人自己测的)
  • 归因:软件与工具链。TI 把原因落在 hex 的解析与 flash 写入粒度、以及拼接点上的 ECC 对齐上
  • 复现与解决状态:帖子标记为「TI Thinks Resolved」;客户侧拼接流程的改后结果没有回报
  • 待核实点:同样流程在 F28335 上慢多少倍;拼接点未对齐造成的 ECC 开销占多少;改用 --load_image 后载入时间的变化
  • 原始链接:TMS320F28P650DH: Loading hex with CCS is VERY SLOW

移植与外设成本

本期没有新增记录。检索到的移植与外设帖里,没有一条给出能照着做的条件与结果:本期核对了的 F28335 外设帖(McBSP 作 SPI 主机时的位偏移、C2000 的 long double 与 COFF 浮点)都落在条目之外,链接与一句话现状列在本辑末尾。

先楫这一侧

SEI 模拟 SWD 的第二篇:ACK 从哪个寄存器读,30 MHz 怎么跑出来

这一条接的是首期里那条 SEI 记录。同一位作者在首期那篇专栏之后又发了一篇,主题是「继续优化 SEI 外设模拟的 SWD 协议」,2026-06-17 发布。5
首期那条记录里的四条局限,这一篇给出了其中两条的下落。作者说,在他收到评论区一位(他写的是「疑似 hpm 人士」)的点拨后重新优化了程序,「解决了大部分问题」。5
第一条是 ACK 值从哪读。上一篇里他以为 ACK 存在 DAT_1 寄存器,读到的是错的值;这一篇里他写明,DAT_CMD 是每个控制器独有的寄存器,只能通过 CTRL[x].CMD 正确读取,手册把它排在 DAT_1 的位置、定义值也一致,按寄存器序号读就会拿到错的结果。5
第二条是高频下的时序。SEI 的时钟与 AHB 同频,默认值和最大值都是 200 MHz;官方库把第一个跳变点(下降沿)放在周期的 1/4、第二个(上升沿)放在 3/4。他在 30 MHz 下发现按这两个点采样都收不到数据,要把采样点往后移几个采样点才行。20 MHz 以上他把 AHB 超频到 300 MHz,按文中的方法重算采样点,把 SWD 跑到 30 MHz。5
速度是用群友的 openocd 测速脚本、多点多次取平均测出来的。他给出的结论是高频下速度提升不成比例,曲线略凸;把链接脚本换成 ram.icf 让程序跑在 RAM 里之后,30 MHz 下测到写入约 1820 K、读取约 1650 K,与按 30/45*32/8 = 2.6667 M 算出的理论值仍有差距。5
首期那条记录里最要紧的一条局限——指针匹配、指令匹配、停止通信等中断标志生成错误且无法清除——这一篇没有提到。文末他给的新线索是 HPM6P00 系列的 FGPIO:600 MHz 主频下翻转速度能到 300 M,用 FGPIO 模拟 SWD/JTAG 有望更快。5
这篇专栏后来被两个公众号整理过。先楫半导体官方账号在 2026-06-18 11:45 发了一篇同名文章,开头写明「本文内容整理自社区开发者的两篇原创技术文章」,并把两篇 B 站专栏的原链接列在上面;同一内容在 2026-06-18 10:33 也出现在 RCSN 嵌入式 这个账号上。这条记录的原始出处是作者的 B 站专栏,两个公众号条目属于转载关系,不是独立来源,只作 C 层参考。67
  • 型号:HPM6P41(HPM6P00 系列)
  • 板或模块:作者自研板;首期那条记录里写的是「低价入手的几片 HPM6P41」,采购渠道与价格未披露
  • 硬件或固件版本:SDK 版本未披露;SEI 时钟来自 AHB,默认与最大值都是 200 MHz,20 MHz 以上把 AHB 超频到 300 MHz
  • 测试条件:SEI 外设模拟 SWD 协议;30 MHz 时钟;冲高实验把链接脚本换成 ram.icf、在 RAM 中运行;测速用群友的 openocd 脚本,多点多次取平均
  • 日期:2026-06-17(对应公众号整理文 2026-06-18)
  • 证据层级:A(与首期那条同一作者、同一设备,寄存器路径、频率、采样方法与测速结果都写得能照着做)
  • 归因:外设/配置/驱动待定。ACK 读回问题由作者定位到寄存器读取路径,未经厂商确认;30 MHz 通信靠超频 AHB 与自行调整采样点实现
  • 复现与解决状态:作者称「解决了大部分问题」,ACK 的读法已改正,30 MHz 通信已实现;首期记的中断标志问题本篇未提,也没有官方结论
  • 待核实点:中断标志生成与清除的问题是否同时被解决;AHB 超频到 300 MHz 对同板其他外设的影响;换一块板卡能否复现 30 MHz
  • 原始链接:玩转先楫单片机之:继续优化 SEI 外设模拟的 SWD 协议
同一位置上还有几条更薄的一手记录,条件为零,按本辑的字段口径不足以独立成条,列在这里供自行点开核对。
  • 一位开发者用 HPM6P41 做了一块自研伺服电机驱动板,视频里跑的是先楫自己的电机库,他的原话是「参数有点问题,勉强能跑速度」;母线电压、电流、电机型号与出问题的参数项都没写。8
  • 同一位作者的一条 I2C 测试,标题就是结论:多次热拔插无锁死;测试时长、从机与速率未披露。9
  • 同一作者的 SEI 读编码器演示,说明只有一句「用的是灵犀的编码器,兼容多摩川协议,测试例程」。10
厂商侧这一期没有变化。hpm_sdk 的最新版本仍是 v1.13.0(2026-09-30),与 SEI 相关的改动仍是新增 sei_restart_asynchronous_xcvr() 这类收发器重启接口;11 先楫知识库首页按分组列出的文章里,最新的一篇仍是 2026-06-04 的 EtherCAT 文档处理,没有出现新的电机控制或 ADC 文章。12 这两条按约定标 V,只用于核对 SDK 与文档的当前状态。
  • 型号:HPM6P00 系列(hpm_sdk)
  • 证据层级:V
  • 日期:hpm_sdk v1.13.0 为 2026-09-30;知识库最新一篇为 2026-06-04
  • 待核实点:首期记的 SEI 中断标志问题官方是否确认;HPM6P00/HPM6P41 上量产、批量供货与产线验证的一手记录仍然为空

本期没查到的,和需要再核对的

没有命中的来源。 ST 社区命中的仍是用过 C2000 的人在问 ST 的评估板与 STM32 的问题,例如有人问 STM32 有没有类似 C2000 的 GPIO 输入限定功能,13 没有一条是 F28335 或先楫的一手使用记录。知乎命中的是产品定位与方案介绍类文章;立创开源硬件平台这一侧,本期只通过先楫开发者开源硬件合集看到自绘板项目(合集里已有 HPM5361 迷你 FOC 驱动板、HPM6284 的 FOC 驱动器、HPM5E31 的双路 EtherCAT FOC 驱动板等),都是硬件工程本身,没有给出可核对的测试条件。14
本期核对了、没有展开的记录。 本期条目已满 5 条,以下几条与主题相关,只给链接与一句话现状,供需要的人自己点开核对。
  • TMS320F28335 的 McBSP 作 SPI 主机读外部 flash,收到的数据整体左右偏移,TI 回复指向 RDATDLY 与 XDATDLY 在时钟停止模式下必须取 01b,并要求把用到的 GPIO 设成异步限定模式。15
  • TMS320F28335 上从 CAN 收到的 32 位浮点小于单精度最小规格化数,赋值给 float 或 long double 都变成 0,TI 解释为 COFF 下 float 与 double 都是 32 位,常数要加 L 后缀,发帖人最后用 64 位常数乘出子正规数。16
  • HPM6E00EVK 上跑 EtherCAT 的 ecat_io,作者给出内部 ESC 并口方式下主中断约 5 µs、PDO 8 字节、内部 ESC 与外置 ESC 通信效率差别不大,并注明压摆率设置未知。型号属于 HPM6E00,不在本期 HPM6P00 系列的条目口径内。17
上一期遗留线索的进展。 三条本期都复查过,都没有新回复:产线 I/O 那条(E2E 1681271)最后一条回复停在 2026-09-15,没有失效分析结果;HVMotorCtrl+PFC 套件改到 48–60 V 那条(E2E 1662590)最后一条回复停在 2026-07-13,发帖人没有回报跳线改造后的实测精度;LLC 数字电源 ADC 那条(E2E 446310)仍是未定因。
待核实点汇总。
  • ADC 批次那条:参考源、环境温度、正常与异常两段各自的码值;两批器件的出厂数据记录。
  • ePWM 那条:改成只在 CTR=0 装载后,TBPRD 处的重新触发是否消失。
  • 时钟那条:已出货板子的评估范围;125 MHz 是否够用。
  • 工具链那条:同样流程在 F28335 上的差距;拼接点 ECC 对齐的开销。
  • 先楫这一侧:SEI 中断标志问题是否被解决;伺服板上的参数问题出在哪一项;已出货板子上 AHB 超频的稳定性。
  • 长期空白:F28335 在 2026 年的真实价格与交期;HPM6P00/HPM6P41 的批量供货、产线验证与售后记录。

References

  1. 1
    TMS320F28335: ADC Error Observed in TMS320F28335ZJZS DSP – Production Batch Investigation

    e2e.ti.com

  2. 2
    TMS320F28335: CBC behaviour in ePWM UP-DOWN count mode

    e2e.ti.com

  3. 3
    TMS320F28335: About using DIVSEL = 3 with PLL enabled

    e2e.ti.com

  4. 4
    TMS320F28P650DH: Loading hex with CCS is VERY SLOW

    e2e.ti.com

  5. 5
    玩转先楫单片机之:继续优化SEI外设模拟的SWD协议

    bilibili.com

  6. 6
    玩转SWD:基于MCU实现媲美FPGA波形的SWD调试协议(先楫半导体HPMicro)

    mp.weixin.qq.com

  7. 7
    玩转SWD:基于MCU实现媲美FPGA波形的SWD调试协议(RCSN嵌入式)

    mp.weixin.qq.com

  8. 8
    先楫HPM6P41伺服电机驱动板测试

    bilibili.com

  9. 9
    HPM6P41 I2C测试,多次热拔插无锁死

    bilibili.com

  10. 10
    HPM6P41 SEI读取多摩川编码器数据

    bilibili.com

  11. 11
    Releases · hpmicro/hpm_sdk

    github.com

  12. 12
    HPMicro 知识库

    kb.hpmicro.com

  13. 13
    MCU with in-built GPIO input qualification - ST Community

    community.st.com

  14. 14
    RCSN/hpm_open_hardware:先楫开发者开源硬件合集

    github.com

  15. 15
    TMS320F28335: McBSP as SPI Master: Received Data Bit-Shifted During External Flash Read

    e2e.ti.com

  16. 16
    TMS320F28335: Use double for computation

    e2e.ti.com

  17. 17
    EtherCAT进阶分享——先楫HPM6E00测试 ecat_io

    bilibili.com

电机控制芯片实用反馈|F28335与先楫
电机控制芯片实用反馈|F28335与先楫@wsolitary

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 量产验证与供货
  • 换成旧批次的芯片,ADC 读数就回到正常
  • ADC 与 PWM 同步
  • 增减计数模式下,输出重新出现在 TBPRD,而不只是计数到 0
  • 中断与实时性
  • 25 MHz 晶振配 DIVSEL = 3 跑到 150 MHz,TI 说这条配置不允许
  • 工具链与调试器
  • CCS 载入 hex 比载入 .out 慢,慢在写入粒度上
  • 移植与外设成本
  • 先楫这一侧
  • SEI 模拟 SWD 的第二篇:ACK 从哪个寄存器读,30 MHz 怎么跑出来
  • 本期没查到的,和需要再核对的