3

现在我正在尝试实现 PIC32MX 的闪存编程规范。我正在使用 PIC32MX512L 和 PIC32MX512H。PIC32MX512L 最终必须将程序传输到 PIC32MX512H 的两条线 PGEC2 和 PGED2。

现在我正在尝试执行检查设备操作。按照规定,我通过 MCLR 杂耍进入编程模式,并在 TMS 时钟上执行 SetMode (6b011111),同时 TDI 时钟保持低电平。TAP 控制器回复零(每个 TDO 为低电平)。

之后,我必须执行 SendCommand( MTAP_SW_MTAP ) 来选择 MTAP 控制器。要移位的序列是

(header) 01 01 00 00_ | (data) 00 00 10 00 00 | (most sign. bit) 01 | (footer) 01 00 

每对的第一位是 TDI,第二位是 TMS。我在第一个时钟上写入 TDI,在第二个时钟上写入 TMS,并在第三个和第四个时钟上读取 TDO。该序列从左到右馈送。移位的位在每个时钟下降期间保持其值。

问题

移位前 4 对后,TDO 线在第四对上变为高电平(在第三个时钟上),并在该 4 相部分结束时(在第四个时钟上)变为低电平。我在上面的序列中用下划线标记了这个位置。之后,控制器将忽略任何进一步的命令。在下一个 SendCommand( MTAP_COMMAND ) 上,TDO 保持低电平,然后对于 XferData( MCHP_STATUS ) TDO 仍然保持低电平,无论我多久发送一次命令。

我用我的示波器做了一个小屏幕截图。蓝线是时钟,绿线是数据。我的意思是右边的跳跃。

http://i.stack.imgur.com/MSGZh.png

问题

有谁知道 TAP 控制器在第四阶段 TDO 高时试图告诉我什么?

先感谢您!

4

1 回答 1

0

嗯,我已经修好了。通常,序言的最后一个 TDO 是输出的第一个最低有效位。对于 SendCommand 它没有任何意义,但对于 XferData 和 XferFastData 它很重要。

对于 XferFastData,它是根据规范的 PrAacc 位。如果该位为零,则应重复整个操作。但请注意:MCU 实施不符合规范。如果在 PrAcc 为零的情况下真的重新启动 FastData 的整个操作,它将无法正常工作。相反,只需忽略该位并继续写入。通过反复试验以及将我的 XferFastData 实现与 pic32prog 进行比较,我最终发现了这一点。

于 2013-05-03T06:43:13.713 回答