與其他許多人一樣,我受到了本·埃特(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() 。