M29F400用のソケット TSOP48ピンソケットを入手する。
アマゾンなどで販売されている
変換基板付きで販売されているのを購入すべきである。
筆者が注文したときは、基板付きがなかったので、単品で購入したが、入手してから愕然とした
3段チドリで 0.375mmピッチでずれている
ピン間隔は1.5mmである
こんな変換基板は販売されていない
パターンを作成する方法で対処した。
0.7mmのドリルであなを開け
ソケットを取り付けた
パターンを作成すると、変換基板の48ピンを
配線するより楽になる。
2)読込ーーーーーーーーー
SRAMは CE、OE をLOWに落として
アドレスを設定すれば、データバスD0〜D7にデータが出る
フラッシュメモリも同様に、目的のアドレスを入れ、チップセレクトするとデータが出力される
4Mのデータを書き込む時間は このマイコンのスピードで 約3〜4秒程度 LEDで、全部点灯で終了
消去は 約1〜2秒であった
プログラムである
ーーアドレスセットーーーーーーーーーーーーーーー
adress_out:
lds w,addat0
lds w1,addat1
lds w2,addat2
out portA,w
out portC,w1
sts portG,w2
nop
ret
ーーーーーーーーーーーーー読込ーーーーー
read_ram1:
rcall adress_out
cbi portE,R_CE ; adress SET
nop
cbi portE,R_G ; adress SET
nop
nop
in w,pinF
sts ramdatA,w
nop
sbi portE,R_G
sbi portE,R_CE
ret
ーーーーーーーー 書込み プログラムーーーーーーーーーーーーー
さて書込みは大変である
3バイトの書込みコマンドを毎回入れて、データを書き込んでいく
ポートFは 入力から出力へ変更する
write_data:
;
LDI w,0xFF ;OUT
sts DDRF,w ;
sbi portE,W_G ; write--->high
nop
cbi portE,W_CE ; chip SET
;--------- add AAA
ldi w,0xAA
out portA,w
ldi w,0x0A
out portC,w
ldi w,0
sts portG,w
nop
ldi w,0xAA
sts portF,w
cbi portE,W_W ; write SET
nop
sbi portE,W_W
nop
sbi portE,W_CE
;--------- add 555
nop
cbi portE,W_CE
nop
ldi w,0x55
out portA,w
ldi w,0x05
out portC,w
ldi w,0
sts portG,w
nop
ldi w,0x55
sts portF,w
cbi portE,W_W ; write SET
nop
sbi portE,W_W
nop
sbi portE,W_CE
nop
;--------- add AAA
cbi portE,W_CE
nop
ldi w,0xAA
out portA,w
ldi w,0x0A
out portC,w
ldi w,0
sts portG,w
nop
ldi w,0xA0
sts portF,w
cbi portE,W_W ; write SET
nop
sbi portE,W_W
nop
sbi portE,W_CE
nop
cbi portE,W_CE
;-------add+-data--------------------
lds w,addat0
lds w1,addat1
lds w2,addat2
out portA,w
out portC,w1
sts portG,w2
;
lds w,ramdatA
sts portF,w ;data
cbi portE,W_W ; write SET
nop
sbi portE,W_W
nop
sbi portE,W_CE
nop
;--IN mode ---------------
LDI w,0x00 ;IN
STS DDRF,w ;
write_data1: ;PB-BUSY
sbis pinB,W_RB ;Hなら次をスキップ
rjmp write_data1
;^^^^ polong^^^^^^^^^^^^^^
cbi portE,W_CE ; chip SET
nop
cbi portE,W_G ; read-->low
nop
nop
in w,pinF
sts ramdatBP,w
nop
sbi portE,W_G
sbi portE,W_CE
ret
ーーーー消去ーーーーーーーーー
SDRAMと異なるのは、プログラム前に初期に戻しておく必要がある
書込みと同様に 6バイトのコマンドでチップ消去する
昔なら、紫外線消去だろう
フラッシュメモリの使い方の概念がわかれば、後は簡単である。
ATmega64 を使ったが データ16ビットを扱うためには ポートが足りない
74HC245などの双方向バスバッファでデータバスを切り替えれば良いが、面倒なので
8ビットモードで動作させることにした。
Dポートは4行のLCDのコントロール
PA、PC はアドレス
データはPFポートに配置した
3)書込みーーーーーー
書込みはSRAMのように簡単ではない
アドレスセットし、データをセットする その後、チップセレクトしてから、W端子をOFF-ON
することで、書込みできるが、目的のデータを入れる前に、書込みコマンド 3バイトを先に入れなけれならない。
更に、
SRAMは 00に書き込んで、FF書き込んで というように 常時再書き込みできるが
フラッシュメモリは、ビットを消すと言う概念である
つまり、最初は FF (ビットを立てておく)
例えば C3(1100−0011)を書き込んでしまうと
その後、F0 を再書き込みしても
C0 (1100ー0000)になってしまう。
再度書き込む場合は チップイレースまたは(セクタイレース)をして メモリを FFに
戻してやる必要がある。
書込みは RY(ビジー)端子を見ながら書込みも必要である
4)消去ーーーーーー
書込みと同様に 6バイトのコマンドを入力すれば良い
フラッシュメモリ M29F400 が入手できたので、これを使って書込み、読み出しに挑戦してみよう
512k×8ビット 256×16ビット の4Mのメモリである
データバスは D0〜D15 16ビット
アドレスバスは A0〜A17 まである
後は チップイネーブル端子 CE、OE W
出力として ビジー端子 RYを持つ
BYTE端子を LOWにすると 8ビット Hで 16ビット出力する
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
フラッシュメモリの基本的な使い方の概念さえ知っていれば、簡単である
これが、以外に簡単に書かれていないので、英文マニュアルを読みながら苦労した
1)8ビットモードで使用する場合は
D0〜D7 を使う
D15 は アドレスのAー1である
すなわちマイコンのアドレス端子に接続する場合は
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
マイコン M29F400
A0 ーーーーーーーー D15
A1 ーーーーーーーー A0
A2 ーーーーーーーー A1
A3 ーーーーーーーー A2
というように ずらして接続する