使用树莓派 Pico 构建 MC6850 ACIA 测试器
扫描二维码
随时随地手机看文章
摩托罗拉公司在 20 世纪 80 年代开发了 MC6850 芯片。它是 8 位微处理器的外围设备。它负责数据格式化和控制,用于将串行异步数据通信与微处理器数据总线进行接口连接。
MC6850 单元在许多复古设计中都有应用,比如格兰特·塞勒的项目以及 RC2014 计算机。
目前该产品尚未量产,但仍以“旧库存零件”的形式存在。这通常指的是在旧库存中未使用过的零件。然而,不幸的是,有些人会出售从旧电路板上拆下的零件,甚至会更改无关芯片上的标记,然后将其当作 MC6850 来出售。
这就需要找到一种方法来对这些芯片进行测试。
硬件
其核心思想是将 MC6850 的多个引脚连接到微控制器上,以便我们能够对其进行控制和读取。我选择的微控制器是 RP2040;该项目使用的是 Raspberry Pi Pico 板。
MC6850 通常工作电压为 5 伏。而 RP2040 最近已获得 5 伏耐受性的认证,但需要注意的是:在将 5 伏电压施加到任何引脚之前,RP2040 的 I/O 系统必须完全接通电源。
我的解决方案是让 RP2040 控制为 MC6850 提供电源的 5 伏电压。这样在测试仪处于闲置状态时,移除和插入 MC6850 也就会变得安全了。为了控制 5 伏电压,我使用了一个 NPN 型晶体管加上一个 MOSFET;不过这显然设计得有些过于复杂了。
对于用户界面,我使用了一个 128x64 的 OLED 显示屏和一个按钮。我还将一个复位按钮连接到了 Pico 上,并连接了一个 LED 以指示 5V 已接通。
一旦将 5V 控制、OLED 显示屏以及按钮的输入/输出需求考虑在内,剩下的 GPIO 端口就足以连接所有 MC6850 的引脚了,除了 CTS 和 DCD(这两者直接与地相连)。
该固件是使用 Raspberry Pi Pico SDK 开发的,旨在对引脚实现最大程度的控制。大部分代码的作用就是在恰当的时间将引脚拉高或拉低。
一个有趣的部分是为 MC6850 生成时钟。MC6850 通过将此时钟除以 1、16 或 64 来生成波特率。在格兰特·塞勒的项目中,这个时钟为 64 * 115200(7.3728 MHz),这需要使用 MC68B50。为了生成时钟,我使用了 RP2040 中的 PWM 外围设备。以 200MHz 的频率运行 Pico,我得到了 7.372 MHz。固件也可以编译以生成 1.8432 MHz(16 * 115200);我实际得到的值是 1.845 MHz。我得到如此接近的数值的原因是 RP2040 的 PWM 使用了一个 12 位的分数分频器(8 位用于整数部分,4 位用于小数部分)。
该显示“驱动程序”非常简单。它直接将数据写入显示控制器的内存,而不会将屏幕内容保存在微处理器的内存中。使用一个 8x8 的字体来模拟一个 8 行 16 列的字母数字显示。
所进行的测试有:
•在复位操作后,检查状态以及 RTS/IRQ 信号。
•在关闭 RTS 和 IRQ 之后,检查其状态以及 RTS/IRQ 信号。
•测试芯片选择线的各种组合(MC6850 有三个选择引脚,其中一个为低电平激活)。
•测试由 MC6850 发送的数据能否被 RP2040 接收。
•测试 RP2040 发送的数据能否被 MC6850 接收。
结论
该项目满足了一项非常具体的需求,同时也是一个很好的实践案例,展示了某些 RP2040 编程技术的应用。
代码
本文编译自hackster.io
20260516_6a081e06893d4__一





