与其他许多人一样,我受到了本·埃特(Ben Eater)系列的启发,它使您通过在面包板上构建一台8位计算机的方式引导您,我想复制他的作品(也许将来通过我自己的一些想法来改善设计)。但是,在列出我需要购买的组件列表时,我发现eeprom芯片在这些天的任何地方几乎都无法获得,因此想知道如何解决这个问题。
经过一些研究,我发现SST39SF010闪存芯片与28C16 EEPROM CHIP BENETER使用,并且还具有许多改进,例如写作/阅读速度,保留时间,功耗...但是,这与BenEter为BenEter撰写的beneater/eeprom-programmer ,当然可以使用。 slu4coderSST39SF010-FLASH-Programmer可能是我需要的。但是,在我看来,它是关于Ben项目背后的教学思想的一种非常不同的风格。
因此,我决定编写自己的程序员,尽管肯定比Slu4Coder的优化肯定不那么优化,但我认为更适合一个想在没有大量编码体验的情况下进行Flash编程的初学者。因此,我试图对代码发表评论,并以自己的风格尽可能清楚。我的项目还基于Arduino Nano与两个74HC595芯片结合使用,就像上述两个项目一样。
我可能会将此软件扩展到将来与SST39SF0X0通用闪光芯片兼容;尽管如果您到达这里并且需要闪烁更高的容量芯片,但您可能能够自己扩展此项目。 :)
在我的代码中,我还提供了一个用于数据写入和清除芯片功能的检查机制,可以在编译时启用和配置。
Macro WRITE_CHK默认定义为0 ,但可以更改为1以启用检查。在这种情况下,将自动检查写入内存的数据的每个字节,如果回顾与预期数据不同,则软件将引起错误。有关更多信息,请参阅代码中的函数writeMem() 。
默认情况下将宏CLR_CHK定义为0 ,但可以更改为正数以启用检查。在这种情况下,在清除芯片命令之后,分配给宏的编号将是从闪存中读取并检查的随机字节数。如果这些字节中的任何一个与0xFF不同(默认值清除芯片之后),则该软件将引起错误。还有另一个宏,称为CLR_CHK_MAX ,它定义了来自随机函数的最高地址。默认情况下,它定义为131071 ,即(2^17)-1,是SST39SF010中最高可寻址字节。但是,我想给出配置此宏的可能性,因为在某些情况下,闪存仅用于少数字节,因此仅检查在上一个写入周期中使用的字节很有用。有关更多信息,请参阅代码中的函数eraseAll() 。