何種類かのW25Qを入手したのですが、どれも同じだろうと思っていたところ、結線は問題ないのに初期化に失敗するものがありました。チップの刻印をみてもわからず、とりあえず、こちらのSTM32向けのコードを走らせたところ、
JEDEC ID : EF 70 17と識別されていました。(作者の方に感謝します。)そこでこれをもとに検索すると、どうやらW25QJVでも_IMで終わるものだそうです。ここまでわかれば、あとはソースコードで識別できるようにするだけでよさそうなので、以下の変更を加えると、無事、初期化・書込・読出ができました。
$ diff -urN drivers/mtd/w25.c.orig drivers/mtd/w25.c --- drivers/mtd/w25.c.orig 2020-09-21 00:09:41.000000000 +0900 +++ drivers/mtd/w25.c 2021-03-23 08:17:30.523539700 +0900 @@ -102,6 +102,7 @@ #define W25Q_JEDEC_MEMORY_TYPE_A 0x40 /* W25Q memory type */ #define W25Q_JEDEC_MEMORY_TYPE_B 0x60 /* W25Q memory type */ #define W25Q_JEDEC_MEMORY_TYPE_C 0x50 /* W25Q memory type */ +#define W25Q_JEDEC_MEMORY_TYPE_D 0x70 /* W25Q memory type */ #define W25_JEDEC_CAPACITY_8MBIT 0x14 /* 256x4096 = 8Mbit memory capacity */ #define W25_JEDEC_CAPACITY_16MBIT 0x15 /* 512x4096 = 16Mbit memory capacity */ @@ -363,7 +364,8 @@ (memory == W25X_JEDEC_MEMORY_TYPE || memory == W25Q_JEDEC_MEMORY_TYPE_A || memory == W25Q_JEDEC_MEMORY_TYPE_B || - memory == W25Q_JEDEC_MEMORY_TYPE_C)) + memory == W25Q_JEDEC_MEMORY_TYPE_C || + memory == W25Q_JEDEC_MEMORY_TYPE_D)) { /* Okay.. is it a FLASH capacity that we understand? If so, save * the FLASH capacity.以上、短いですが備忘録として本稿を挙げてみました。今回は以上です。それでは。
コメント
コメントを投稿