USBデバイスの製作(6)
シリアルROMが届いたので早速組み上げる。
1.27mmのSMTなので秋月の変換基板でDIPに変換する。
こんな感じ。
少し狭くなってきた。(^^!
このシリアルROMは電源が3.3Vなのでそれも作成が必要になる。
ただ入出力は5Vトレラントなので直結可能。
STK526の接続と同じでよい。
次にソフトを修正する。
これは結構箇所が多い。(TT)
・usb162\ms_hidmouse\lib_board\stk_526\stk_526.h
// One AT45DB642D
#define DF_8_MB
を
#define DF_2_MB
に。
・usb162\ms_hidmouse\lib_mem\df\df.h
に以下を追加。4Mまでの定義があるが2Mの定義がない。
DF_DENSITY、DF_PAGE_MASKは他のROMのデータシートと比べながら修正。
結果的にはあっていたようである。
//_____ D E F I N I T I O N ________________________________________________
#ifdef DF_2_MB // AT45DB161 memories
#define DF_SHFT_DFIDX (21) // RShift to apply to an absolute
// * Byte address to get the DF idx
#define DF_DENSITY ((Byte)0x2C) // Status Register Format???
#define DF_PG_BUF_1 ((Byte)0x82) // fast main memory program through buf1
#define DF_PG_BUF_2 ((Byte)0x85) // fast main memory program through buf2
#define DF_PAGE_SIZE (512) // page length
#define DF_PAGE_MASK ((Byte)0x00) // mask MSB page bits
#define DF_SHFT_B1 (1)
#define DF_SHFT_B2 (7)
#endif
・usb162\ms_hidmouse\lib_mem\df\df_mem.c
以下を追加(メモリ容量)
#ifdef DF_2_MB // AT45DB161 memories
*u32_nb_sector = ((DF_NB_MEM*2*1024L*1024L)/512)-1;
#endif
後2箇所512B PAGESと1024B PAGESの切替箇所がある。
8MのROMは1024で2Mと4Mは512である。
#ifndef DF_8_MB // 512B PAGES
//#ifdef DF_4_MB // 512B PAGES
を書き換え。
試行錯誤だったのだが、だいたいそんな感じだったと思う。
動かしてみると「フォーマットされていない」とメッセージが出てフォーマットするとちゃんと動く。
一応読み書きも正常である。早くはないし、2MByteにしても小さいのだが、便利そうでである。
コメントはありません