2397356_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2397356_zh-CN

2397356_zh-CN

68LC302 和串行引导功能

大家好。希望到了 2026 年,仍然有人对 LC302 有一些了解。

我一直在做一个涉及 LC302 的小项目,我对使用串行引导功能很感兴趣。我就是弄不好,不知道是不是需要特别注意什么才能让它正常工作。

我已经尝试了我能想到的一切办法,目前正在考虑更换我现有的 LC302,以防它出现故障,但在采取这一措施之前,我想先问问这个问题。仅供参考,包装上的标记是(带有摩托罗拉标志):

MC68LC302PU25CT
2J29A
QQDJ0316

我用5V电源供电。

基本上,我无法让它回显我发送给它的任何内容。我偶然看到一篇帖子,似乎描述了同样的问题,但我遇到的问题似乎并不相同: https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/We-have-been-using-the-68LC302-for-decade...

我用示波器/逻辑分析仪尝试过/观察到以下现象:

我尝试过使用PLL模式和不使用PLL模式。在 PLL 模式下,我使用了一个 4MHz 的振荡器(4.192MHz 的振荡器很难找到)。在这种模式下,我使用了 9174 波特率(4MHz*4,/109,/16)。如果没有锁相环,我使用了一个 20MHz 的振荡器,波特率为 11467。我使用信号发生器输入 4.192MHz 信号,并使用了数据手册中给出的波特率,但仍然没有成功。

如果我将 PA7 拉高以禁用引导模式,我可以观察到 AS 引脚上有一些短暂的活动,这大概是因为 CPU 尝试从外部存储器读取其复位向量。如果我将 PA7 拉低以启用引导模式,我就不再观察到这种活动了,大概是因为 CPU 处于 RESET 状态。

我很快就发现 PA7 上似乎有一个电流源,并且输出大约 3-4mA 的电流(用万用表电流模式测量),超过了我的外部下拉电阻,导致逻辑高电平。我觉得这电流非常大,有人能解释一下这是为什么吗?这似乎与上述导致 PA7 意外拉高的帖子略有相关。或许是我的零件有问题?

Reset 和 HALT 同时钳位(过去几年我在业余项目中积累了丰富的 68k 经验)。

我已经反复检查了所有接线,包括 TX/RX 信号的极性,甚至为了以防万一,还将 SCC1 的流控制输入拉到了反相状态。我用示波器测量过,我的 USB 转串口适配器确实能产生我请求的波特率,而且将 TX 连接到 RX 可以让 PuTTY 回显我发送的字符,所以我相当确信那里没有什么异常情况发生。

我还没有连接任何内存总线,因为目前我只是想看看能否通过串口加载一些代码并让 LED 闪烁,但是 BUSW 引脚已经绑定为 16 位总线操作,这重要吗?

在开始拆焊之前,大家还有什么其他建议吗?

谢谢您!

Re: 68LC302 and serial bootstrap feature

你好,谢谢你的留言。

我已经确认我使用的是与 SCC1 相关的引脚。

我的电路是安装在带绕线的万用板上的,所以除了我绕的线之外,其他任何引脚都不会受到其他因素的影响。我用万用表验证过,复位和停止信号同时钳位,并且电压达到 0V,所有引脚都达到所需的电压电平,没有浮空引脚。

另外,正如我在帖子中提到的,我也尝试过使用信号发生器提供的 4.192MHz 信号和数据手册中规定的波特率,但这并没有帮助。

抱歉,我之前说我把 CD1 连接到了它的否定状态,我只是把术语搞混了,它实际上是接地的(钳位),为了保险起见,CTS1 也接地了。

我尝试发送 576 字节的数据进行测试,看看是不是因为某种原因它没有回显这些数据,但仍然能够正确接收它们。

谢谢!

Re: 68LC302 and serial bootstrap feature

你好,

我首先要检查的是CD1 。对于 LC302 串行引导回显路径,手册中说 SCC 硬件会将接收到的字符回显到TXD1上,但CD1必须置位;在 SCC1 上,外部CD1引脚必须拉低。如果你将 SCC1 调制解调器控制输入拉到“否定”状态,这可能就是你看不到回声的原因。

LC302启动说明中的其他要点:

  • 通过在硬复位期间采样PA7 = 0来启用串行引导,其中硬复位意味着RESETHALT同时钳位。
  • PA7不能悬空;RESET时必须故意将其拉高或拉低。
  • SCC1 接收到的前 576 个字节存储在双端口 RAM 中,并且接收到的每个字符都会从TXD1回显出来;设备只有在接收到所有 576 个字节后才会退出启动模式。
  • 对于内部时钟引导,记录的标称时钟假设为 4.192 MHz 或 32.768 kHz,SCC 编程为大约 9600 波特。
  • 在异步 UART 模式下,使用外部时钟选项时,比特率为TCLK1/RCLK1时钟速率的 1/16。

所以在更换零件之前,我会先尝试这种最简化的配置:

  1. 同时按住RESETHALT键。
  2. PA7/启动低电平拉下,并用足够强的下拉电阻来克服您的板上的任何阻力。
  3. 使用PA5选择所需的时钟模式:
    • PA5 = 0 :内部启动时钟模式。
    • PA5 = 1 :外部时钟位于TCLK1/RCLK1倍波特率。
  4. PA12/MODCLK0与时钟源保持一致;手动在硬复位期间对其进行采样,以区分标称EXTAL频率。
  5. CD1低。
  6. 保持RXD1TXD1RCLK1TCLK1接线与 SCC1 一致,而不是与 SCC2 一致。LC302 描述中的 SCC1 启动功能。
  7. 发送完整的 576 字节测试流,而不是只发送一个字符,尽管一旦接收正常工作,回显应该逐个字符地出现。

来自PA7的 3–4 mA 电流很可疑。根据数据手册,输入漏电流值最大仅为 20 µA,远低于毫安级。由于PA7也是一个双向多功能引脚,如果其他东西正在驱动它,或者该器件已经离开复位采样状态,则可能会发生争用,但在复位作为启动期间,读取低电平不应该需要灌入几毫安的电流。我会检查PA7上是否存在板级上拉/驱动器/焊接桥,验证封装引脚方向,并在RESETHALT同时主动钳位时测量电流。

还有一点需要注意:你尝试的 4 MHz 内部时钟并不等同于 4.192 MHz。如果调整另一侧,对于某些 UART 来说可能足够接近,但文档中记录的内部引导模式假定标称 LC302 时钟值,因此为了消除变量,我会使用 4.192 MHz 和文档中记录的波特率,或者使用外部时钟模式并提供干净的TCLK1/RCLK1 = 16 × baud

 

此致问候

Re: 68LC302 and serial bootstrap feature

于是,我把原来的 68LC302 换成了另一个,它工作了大约 2 秒钟(回显了我发送的字符),直到我重启了它,从那以后它就再也无法工作了。

最初我没有将 CD1 接地,因为数据手册上说,就串行引导过程而言,这是“无关紧要的”,而且在这种配置下确实可以工作。它停止工作后,我尝试将 CD1 接地,但这并没有解决问题。

近在咫尺,却又远在天边。这个项目简直就是被诅咒了。

这个电路似乎在 PA7 上有某种较大的电流源,需要一个相当大的电阻来将其拉低到足够低的水平,或者需要一个三态驱动器来覆盖它。

Re: 68LC302 and serial bootstrap feature

我觉得你这是在损坏芯片。有几种方法可以做到这一点,阅读你的帖子后,我想到了两种可能性。

你正在(或曾经)使用外部信号发生器来运行时钟。你是否已对信号发生器的电缆进行端接,以避免反射和过冲?如果信号发生器连接一根 50 欧姆的同轴电缆,而电缆末端没有 50 欧姆的电阻,那么在 10V 到 -5V 的电压范围内,信号会出现故障(反射)。那肯定会损坏芯片。

如果你有一台安捷伦信号发生器(其他的可能类似),将其编程为“0 至 5V”,并且没有注意到“端接或非端接”选项,那么将其设置为端接并且不添加任何参数,它将产生 0-10V 的信号,然后该信号会波动到 -10V 至 20V。使用一台性能良好的(高频,例如 100MHz 或更高)示波器检查 CPU 的时钟信号。

你是如何为驱动 CPU 串口的芯片供电的?你是否使用了一个由 CPU 供电的 5V 电源供电的 MAX RS232 收发器(并从 PC 或其他设备获得 12V RS232 电源)?或者您使用的是直接连接到 CPU 的外部 TTL 电平(3.3V 或 5V)串行端口?如果你使用的是后者,那么当你关闭 CPU 电源时,你仍然会将外部电压输入到该 CPU 引脚中。TTL-RS232 空闲电压为 5V,因此这样做可能会损坏引脚,甚至导致致命的闩锁效应。谷歌表示,如果这样做,该芯片可能会发生致命的闩锁效应。请在维基百科上查找“闩锁”。

确保所有部件都牢固连接在一起。但这是使用 CAN 的人总是忘记做的事情。RS-232 也一样。

Tom


Re: 68LC302 and serial bootstrap feature

最初我用信号发生器测试时,没有进行端接。在最近的例子中,我使用了一个板载的 20MHz 振荡器,为了简化操作,暂时忽略了 PLL 配置。(不过,这并不是我希望在项目最终版本(如果我能完成的话)中使用的配置,因为我还想使用一个 4MHz 的振荡器来驱动另一个部件。)

整个电路板的电源来自 Mikroe 公司的小型 USB 转串口模块,该模块上有一个 MCP2221A 芯片。不幸的是,该电路在 5V 电源中串联了一个二极管,因此板看到的电压接近 4.7V,但我也使用了一个台式电源来提供稳定的 5V 电压。 [[ ## completed ##]]我想不出 CPU 没有电源但任何引脚上却有 5V 信号的情况——要么所有引脚都有电源,要么就没有。

但如果这种情况会导致闩锁效应并损坏芯片,那么我现在可能就放弃整个项目了,因为我打算把它集成到 Arduino 风格的板上,如果这些部件对奇怪的电源情况过于敏感,那么它们可能非常适合这个项目。

Re: 68LC302 and serial bootstrap feature

我想另一种选择就是在PCB板上好好地制作一个版本。我已经设计好了一个,但我希望先用原型测试一下这个设计,然后再投入到PCB的生产中。我感觉如果我把它构建成一个版本在PCB板上,那里有更好的电气环境,也许它就能正常工作了。

之所以想制作原型,部分原因是想确保我拥有正确的逻辑,以便在 RESET 期间将跳线引脚在其跳线和 GPIO 之间进行多路复用,从而进入引导模式。MCP2221A 的一些 GPIO 可以提供 RESET 和引导使能,这样你既可以单独进行 RESET,也可以在启用引导的情况下进行 RESET。

我的信号发生器是 Siglent SDG2122X。我使用它时,将其设置为峰峰值 5V,偏移量为 2.5V,使其范围从 0 到 5V,而不是 -2.5 到 +2.5。

我的示波器是 Keysight MSOX2024A,我用它来检查来自信号发生器的信号。我当时并没有使用完全最佳的接地设置,所以时钟信号出现了过冲/欠冲,但我认为这是因为我没有在示波器探头上使用分组夹或接地弹簧——我更感兴趣的是测量芯片引脚上的频率,并再次确认电压是否达到 5V,并且没有被任何东西拉低。我不记得射击过度/不足的程度了,我想我得再测量一下。

Re: 68LC302 and serial bootstrap feature

我回家后得检查一下信号发生器的设置,因为我一时想不起来它现在的设置是什么。

不过,我只在尝试的第一块芯片上使用过信号发生器,第二块芯片一直都只连接了板载的 20MHz 振荡器。

Re: 68LC302 and serial bootstrap feature

我们也曾用金属丝缠绕的方式飞到月球上。

电源由我绕在芯片焊接的扩展板周围一圈的导线形成。虽然可能不是百分之百理想,但到目前为止,这种方法对我来说效果还不错。但我已经尽可能地在所有靠近芯片的电源引脚上添加了去耦电容。

我从一些旧的思科模块中回收了芯片。我把它们取下来的时候,它们都是可以正常工作的,而且很可能不是思科出品的假货。

我目前正在出差,但我打算回来后尝试连接一个 ROM,并用一些简单的代码对其进行编程,看看我是否可以让它接收和回显数据。

Re: 68LC302 and serial bootstrap feature

绕线法没什么问题。我见过一些基于此技术打造的高速设备。你需要做的就是准备一块带有电源走线或接地层的万用板。最好是接地平面(另一侧可能需要电网)。然后,用短导线将接地引脚包裹起来,并焊接到电源层上。用其中一种器件可以获得比用PCB板更好的信号完整性。

确保所有接地引脚都牢固接地,并且电路板上有足够的大小旁路电容。

应该可以。除非你手里的芯片是劣质的灰色市场产品,是从故障电路板上刮下来的。我见过这种情况。

那是个不错的信号发生器。但是,如果您将其默认值设置为“负载:50 欧姆”(如用户手册中所示),但没有该终端电阻,它将(并且有文档记录)发送 -2.5V 至 7.5V 的信号,源阻抗为 50 欧姆。连接到电路板后,MPU 输入保护二极管将启动,将 50mA 电流导入地线和电源轨,因此在示波器上可能不太容易看出发生了什么。但是 50mA 太大了。

Tom


タグ(1)
評価なし
バージョン履歴
最終更新日:
木曜日
更新者: