
bash
Transmission on endpoint 2 failed (err = -109) You have set the program speed to Normal. The circuit on your board may require you to slow the speed down. Please change the setting in the tool properties to low and try the operation again. Failed to get Device ID. Please make sure the target device is attached and try the operation again. A log of the error was created at D:\Desktop\ee\exer1.X\queuelogs\debugtool.txt Connection Failed. Transmission on endpoint 2 failed (err = -109)
翻译这段内容并给出问题解决方案。
先把这段英文一句句翻译一下,再给一个"照着做"的解决步骤清单。
一、逐句翻译
Transmission on endpoint 2 failed (err = -109)
端点 2 发送失败(错误码 = -109)。→ 这是 USB 通信错误,PC 和调试器之间的数据传输出问题了。
You have set the program speed to Normal. The circuit on your board may require you to slow the speed down. Please change the setting in the tool properties to low and try the operation again.
你当前把编程速度设置为 Normal(普通)。你板子上的电路可能需要更慢的编程速度。请在工具属性中把该设置改为 Low(低速),然后再试一次。
Failed to get Device ID. Please make sure the target device is attached and try the operation again.
获取器件 ID 失败。请确认目标器件已经连接好,然后再试一次。
A log of the error was created at D:\Desktop\ee\exer1.X\queuelogs\debugtool.txt
错误日志已生成,路径为:D:\Desktop\ee\exer1.X\queuelogs\debugtool.txt
Connection Failed.
连接失败。
Transmission on endpoint 2 failed (err = -109)
端点 2 发送失败(错误码 = -109)。
二、问题本质
综合这几句,可以归纳成两大类问题:
-
PC ↔ 调试器(MPLAB PICkit Basic)USB 通信不稳定
- 直接表现就是
Transmission on endpoint 2 failed (err = -109) - 常见原因:USB 线/口不良、WinUSB 驱动异常、工具固件/pack 不匹配。
- 直接表现就是
-
调试器 ↔ 目标板(dsPIC33CK32MC105)通信不成功
-
表现为:
Failed to get Device ID -
原因可能是:
- 编程速度太快,ICSP 信号上不去(尤其是 PGEC/PGED 接了很多外围电路);
- 目标板没上电、MCLR 被拉死、PGEC/PGED 接错或干扰太大。
-
三、按顺序给你一个解决方案清单
步骤 1:在 MPLAB X IDE 里把编程速度改成 Low
错误提示已经点名说你现在是 Normal ,要改成 Low。
-
打开 MPLAB X IDE。
-
右键你的工程(例如
exer1.X)→ Properties(属性)。 -
左侧 Categories 里选你的工具:
- 比如
MPLAB PICkit Basic。
- 比如
-
右侧顶部 Option categories 下拉框里,选:
- Program Options(有的版本在 Memories → Program Options 里)。
-
在选项列表里找到:
- Program Speed → 把
Normal改成Low。
- Program Speed → 把
-
点 Apply → OK。
-
重新给板子上电,然后再点工具栏上的 "Make and Program Device" 试一次。
注意:IPE 里也有一个 Program Speed 设置,IDE 和 IPE 是分开的,要分别改。
步骤 2:简单检查目标板(调试器 ↔ 芯片)
这一步主要针对 Failed to get Device ID:
-
供电:
- 测量 dsPIC 的 VDD/VSS 脚,上电时有稳定 3.3V(或你的设计值)。
-
MCLR:
- 有合适的上拉电阻(如 10k 到 VDD);
- 没有大电容直接挂 MCLR(会拖慢上升沿,影响进入编程模式);
- 没被别的芯片硬拉低。
-
PGECx / PGEDx:
- 确认你接的那一组跟 MPLAB X 里选用的是同一对 PGEC/PGED;
- 线路尽量短直,不要串几百欧以上的大电阻,也不要并联大电容;
- 中间不要先经过别的器件(如光耦、驱动芯片的输入)。
你之前已经用 IPE 成功烧过一次,这说明连线设计基本没问题,如果现在突然失败,多半就是"速度 + USB"叠加的问题。
步骤 3:处理 err = -109 的 USB 通信问题
如果 改成 Low 之后仍然报 -109,再往下做这些:
-
换 USB 口 / USB 线
- 优先用机箱后面的 USB 口,不用前置面板/集线器;
- 换另一根质量好一点的 USB 线试试。
-
检查设备管理器里的驱动
-
关掉 MPLAB X / IPE;
-
打开"设备管理器",插上 PICkit Basic,看它是不是以 Microchip WinUSB Device / Microchip Tools 的形式出现;
-
如果看到带感叹号,或者被识别成别的设备:
- 右键 → 卸载设备(勾上"删除此设备的驱动程序");
- 拔掉再插,重新让系统自动装驱动(前提是你的 MPLAB X / IPE 安装完整)。
-
-
确保 Tool Pack / 固件是最新
-
用 IPE 连接一次 PICkit Basic,看日志里是否自动更新过 Application FW(你之前已经从 0.00.54 升到 0.00.81 过一次,说明工具固件是匹配 1.0.91 这个 pack 的);
-
在 MPLAB X →
Tools -> Packs...里检查:- dsPIC33CK-MC 的 Device Pack 已安装;
- PICkit Basic 的 Tool Pack 已安装且无 "Update available" 提示。
-
步骤 4:如果仍然不行再看日志
报错中给出的 log 文件路径:
text
D:\Desktop\ee\exer1.X\queuelogs\debugtool.txt
这里面会记录更细的工具/目标交互信息(比如具体在哪个阶段 USB 超时)。
如果前三步做完还有问题,可以把里面关键几行贴给我,我帮你一起看(注意不要贴太长,截取最近一次失败的那段就好)。
总结一句话
这段报错的意思是:USB 通信 + 编程速度 + 目标板连接三者里有问题 。
第一优先级:把 Program Speed 改成 Low ,然后检查电源/MCLR/PGEC/PGED;
如果还报 -109,再从 USB 线/口、驱动和 Tool Pack 这边着手处理。