Arduino上的EPROM编程器

在研究和维修比我还旧的计算机时,必须刷新ROM。 测试RAM和外围设备。 那时我没有普通的程序员。


当然,可以在LPT端口的逻辑上进行组装,但是此选项已被放弃,因为要使用该选项,还必须包括其他一些老手。 在现代计算机中,仍然可以找到此接口(尽管不是完整的连接器,而是梳子),并且在PCI插槽中购买卡也不是问题,但是软件已经存在困难。 它是很久以前写的,当时在操作系统中使用输入/输出端口的方式有所不同。 因此,在现代版本的Windows软件中将无法使用。


值得一提的是,我知道TL866的存在。 即使在开发过程中,他还是亲自购买了它,但他无法闪存需要高编程电压的芯片。 最大18伏特(TL866 +或21以前的版本)。


快速浏览后,我找到了这个存储库 。 组装好程序员之后,我就可以丢弃一些感兴趣的芯片。 但是随着固件的出现,一切变得更加复杂了……该软件根本不知道如何做……当然,您可以通过暴露错误的芯片来欺骗它,但这在所有情况下都不起作用,显然这不是我们的方法


我对用户界面非常失望,该界面不是所有有权选择用户端口的经典版本,而是所有可用的串行接口。 因此,所有设备都会重新启动。 如果您有一台3D打印机10个小时从闪存驱动器中打印零件,并且在这里进行这样的设置,则可能会特别令人反感。


OpenSource的世界之美在于您可以将项目添加到任务中。 在这种情况下,没有图形界面的源代码。 至少我找不到它们,尽管我可以写信给开发人员。 变得很有趣,有一个研究Qt的理由很小。 因此该软件将是跨平台的。


我们以上一个项目的方案为基础,并将设备修改为所需的功能。 我决定牺牲软件中的EEPROM支持。 这可能不是一个好的解决方案,但是电可擦除芯片不再需要如此高的电压。 最终确定时,我依靠了最庞大的微电路(对于DIP28为27C512),消除了与地址臂有关的所有困惑。 整个地址将仅使用移位寄存器(74HC595)进行设置。 这释放了微控制器自身的多余支路,而这是控制编程电源所需的。 通过将地址加载到寄存器中之前修改地址,可以获得所有必要的信号(PRG)。


施加电压编程的原理保持不变。 仅在微控制器引脚和移位寄存器的保护范围内进行更改。 我用二极管上拉到对数上的电阻替换了电阻(1 KOhm)。 0。这是一个不太积极的选择。 虽然,公平地说,电阻是起作用的。


研究了所有感兴趣的芯片的文档后,我确定需要三个Vpp馈电点:

  1. 27C16 21脚IC(23脚DIP28插座)
  2. 每个信号#OE(输出使能)的27C32和27C512
  3. 微电路1脚上的27C64、27C128、27C256


27C16和27C32微电路在这种情况下与其他微电路不同,因此它们需要向插座的第26脚供电。 这是A13较宽容的兄弟的地址。 移位寄存器输出的电流应足以工作,但在加载数据时,其输出将进入Z状态。 允许使用类似的模式,但是几乎不包含在读取或写入一个单元格中。 因此,在功率控制下安装了一个附加晶体管。 27C16需要另一个,在读取时,它需要向Vpp输入提供5伏电压。 当然,您可以在读取时将编程电压设置为5伏,但是在25伏和5伏之间切换是不方便的。


如果有ADC自由脚,那为什么不测量编程电压呢? 该板在Arduino Nano下离婚。 上面有两个附加输入,除了ADC不能使用。 实际上,这是许多表面贴装外壳中的AVR微控制器的功能。 在中文Arduino UNO上,通常会有输入A6和A7。 鉴于电压最高可以达到30伏(看来他们最想要的家用RF5电压为25伏),我们根据可用的电压来计算分压器。 0.5伏的精度足以完成此任务。 此功能是万无一失的,而不是电压表。


当然,可能会感到困惑并充当WID(脉冲宽度控制)控制器,但没有空闲的支路。 因此,在印刷电路板上,MT3608芯片上有一个DC-DC升压转换器的底座,可用于Ali上的一分钱。


根据方案,仅此而已。




使用这些微电路的算法非常简单。 您可以在短片中阅读它。




可以在GitHub上的存储库中找到方案和软件: https : //github.com/walhi/arduino_eprom27_programmer 。 在组装期间,您可以安全地更改电阻器的值。 的确,使用分隔线,您需要稍微固定草图代码。



Source: https://habr.com/ru/post/zh-CN462433/


All Articles