- ベストアンサー
16ビット空間でのフラッシュメモリへの書き込みの仕方
ルネサスのSH2/7145と富士通半導体デバイスのMBM29LV160BEを使っています。 CPUの領域はCS0で200000H~3FFFFFHで取られ16ビットのアクセス空間になっいます。 CPUのアドレスA1~A21がフラッシュのA0~A20に入っています。 MBM29LV160BEのマニュアルに有る様、以下の様にプログラムしました。 #define FLASH_MSK 0x00200000L #define CMD1 0x00000555L #define CMD2 0x000002aaL void flash_write( unsigned long add, unsigned short dat) { unsigned short *pc1, *pc2, *pd; pc1 = (unsigned short *)( FLASH_MSK | CMD1 ); pc2 = (unsigned short *)( FLASH_MSK | CMD2 ); pd = (unsigned short *)( FLASH_MSK + add ); *(pc1) = 0xaa; *(pc2) = 0x55; *(pc1) = 0xa0; *(pd) = dat; while( *(pd) != dat ); } この他にも *(pc1) = 0xaaaa; *(pc2) = 0x5555; *(pc1) = 0xa0a0; や *(pc1) = 0x00aa; *(pc2) = 0x5500; *(pc1) = 0x00a0; など、考えられる事は試してみたのですがダメでした。 書いてませんがwhileは20mSで抜ける様に実際には書いてあります。 何か御存じの方が居ましたら御教授頂ければと思います。 宜しく御願いします。 *:アドレス、データ、信号線は動作しているかオシロで確認してます。 また、16ビットアクセスのS-RAM(400000H)は問題なく読み書きできます。
- みんなの回答 (4)
- 専門家の回答
お礼
ありがとうございます。 書込出来ました。 また、読み込み&消去も出来ました。 CPUからの見かけはビットシフトしている様に見えるけど フラッシュ側ではA0にCPUのA1が入っているから奇数アドレスもって事ですよね?!