
マイコンとフラッシュメモリの接続について
2点質問があります。
質問1
マイコンH8S、フラッシュはスパンションの
http://www.spansion.com/Support/Datasheets/S29AL …
を使用しています。
ワードモードでマイコン側A0-A18、rom側A0-A18で接続したのですが、
どうもワードモードだとマイコン側A1-A19、rom側A0-A18とアドレスを1つ
ずらして接続するのが普通のようなのですが、マイコン側A0-A18、rom側A0-A18では
アクセスできないのでしょうか?必ず1つずらして接続しないとだめなのでしょうか?
実際デバイスIDのコマンドを実行してみたのですが、リードできませんでした。
(*(volatile short *)0x400555) = 0xAA;
(*(volatile short *)0x4002aa) = 0x55;
(*(volatile short *)0x400555) = 0x90;
a = (*(volatile short *)0x400002);
a=0xFFFFとなりました。
質問2
マイコン側A0-A18、rom側A0-A18ではデバイスIDがリードできなかったので、改造して
マイコン側A1-A19、rom側A0-A18としたところ、
(*(volatile short *)0x400aaa) = 0xAA;
(*(volatile short *)0x400554) = 0x55;
(*(volatile short *)0x400aaa) = 0x90;
a = (*(volatile short *)0x400002);
でデバイスID0x22DAを読むことができました。
ここで質問ですが、フラッシュのマニュアル26PだとデバイスIDの4回目のコマンドは、
ワードモードだとX01となっています。
しかし
(*(volatile short *)0x400aaa) = 0xAA;
(*(volatile short *)0x400554) = 0x55;
(*(volatile short *)0x400aaa) = 0x90;
a = (*(volatile short *)0x400001);
としたところ0x400000の製造メーカIDの0x0001がよめるだけでした。
そもそも0x400001だと奇数アドレスなのでH8Sはアクセスできないので
当然な気がするのですが、マニュアルのX01とはどういう意味なのでしょうか?
コンパイラに起因する問題でしょうか?

No.3ベストアンサー
- 回答日時:
No.1,2 です。
>ワードモード、バイトモードの使い分けというか、
ワードモードは16bitマイコン向け、バイトモードは8bitマイコン向けです。
8bitマイコンはバイトモードしか素直に使えません。
16bitマイコンはバイトモードもワードモードも使う事はできます。
16bitマイコンだけどボード内データは8本しか使わないようにしてる、なら
バイトモードにすればいいです。
>それぞれのメリット、デメリットって
ワードモードに関して言えば、
詳細な動作を知らないので多分、ですが
書き込み後の待ち時間、というと少し事情が違って半分とはならないと思いますが、
単純に読み出しで考えればバイトモードは2サイクル要るところがワードモードは
1サイクルで済むのですから所要時間は半分で済むのがメリットです。
が、例えば製品コストを押さえる為に片面基板で配線する必要がある場合、
データが16本もあると配線しにくい(場合によってはできない)とか
ノイズが増えるなどデメリットとして考えられます。
バイトモードのメリット・デメリットはこの逆です。

No.2
- 回答日時:
No.1 です。
>ワードモードだと必ず1つずらして接続しないとだめなのでしょうか?
ずらさず接続すると、ROMの1番地(2バイト)アクセスに不都合を生じます。
例えばマイコンから0番地バイトアクセスすると、ROMは0番地2バイトアクセスされた事になり、
上位バイト値が不定です。
読み出しなら行き場がないだけで大きな不都合はありませんが、書き込みでは
不定データを書き込む事になります。
(マイコンの種類によっては、上位バイトに下位バイトと同じ値が出てくるものもあり、
この場合は不定ではない。ただし任意の値を与えられないので、
よほど限定された用途でないと無意味)
また、ROMの1番地2バイトアクセスを、マイコンが行う方法がありません。
奇数番地からの2バイトアクセスはバイトアクセス2回に分割されたり、
(そもそも16bitマイコンで奇数番地からの2バイトアクセスは1サイクルでは済まない)
マイコンの種類によっては許されていなかったりします。
または、上位バイトは別の経路で与え、マイコンからは常に1バイトアクセスで
ROM に達する時は2バイトアクセスに見せる、というような工夫でも使用可能です。
が有効な効果があるとも思えず、あまり凝っても解りにくくトラブルの元でもあるので、
アドレスをずらす方がシンプルでいいと思います。
ありがとうございます。
難しく考えず、ずらして接続した方がよさそうですね。
最後にもうひとつ疑問なのですが、ワードモード、バイトモードの
使い分けというか、それぞれのメリット、デメリットってなんなんでしょうか?
バイトモードで使っていても、
a = (*(volatile unsigned short *)0x200000);
としたらshort型でよめるわけですし。
ワードモードだとアクセス時間が短くてすむとかということでしょうか?

No.1
- 回答日時:
マイコンの1アドレスは1バイト、メモリデバイスの1アドレスは1ワード
(16bitデバイスなら2バイト)なのが普通で、質問もこれに該当します。
これが理由で接続するアドレスラインは1本ずらします。
>マニュアル26PだとデバイスIDの4回目のコマンドは、
>ワードモードだとX01となっています。
これは ROM のアドレスなので、マイコンから見たアドレスは2倍の値です。
ROM の0番地2バイト←→マイコンの0、1番地の2バイト
ROM の1番地2バイト←→マイコンの2、3番地の2バイト
ROM の2番地2バイト←→マイコンの4、5番地の2バイト
現に、デバイスIDを読めた時のアドレスはそのように指定しています。
>マイコン側A1-A19、rom側A0-A18としたところ、
>(*(volatile short *)0x400aaa) = 0xAA;
>(*(volatile short *)0x400554) = 0x55;
>(*(volatile short *)0x400aaa) = 0x90;
「WORDモードでアドレスX01」と書かれてるなら、
同様にアドレス値2倍の x02 に読み替えればいいだけの事です。
>必ず1つずらして接続しないとだめなのでしょうか
そうでもありません。
8bitデータ幅で使う場合を考慮し、BYTE# という端子を Low に固定し
「バイトモード」にするとアドレスもROM1番地は1バイトとなり、
アドレスラインの接続もずらさずに素直につなげばOKです。
X01はROMから見た番地なのですね。納得しました。
>>必ず1つずらして接続しないとだめなのでしょうか
>そうでもありません。
とのことですが、ワードモードだと必ず1つずらして接続しないとだめなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 場合の数、確率 45 (浜松医科大学) 1 2023/07/29 13:52
- ドライブ・ストレージ M.2 PCI Express 接続 M.2 PCIe Gen4 x4 接続 SAMSUNG PM9 3 2023/03/14 11:35
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- IT・エンジニアリング アドレス空間(メモリマップ)について教えてください。 マイコンには必ずメモリマップが記載されています 3 2022/06/17 09:42
- ドライブ・ストレージ B550M Pro4マザーにM.2_SSD取付に関して 2 2023/04/15 02:07
- 据え置き型ゲーム機 ロックマンX4について。 ロックマンX4のX編の最初のムービーで、シグマとジェネラルが面談しており、 1 2023/02/11 07:48
- BTOパソコン マザーボードのチップセットのレーン数について 3 2022/10/13 19:21
- ビデオカード・サウンドカード PCIeの帯域幅について 1 2022/04/30 14:49
- 英語 short-term は形容詞 のはずなのに、 in the short-term 短期的に のよう 2 2023/05/14 20:22
- TOEFL・TOEIC・英語検定 TOEIC公式問題集7に掲載の英文で質問があります。 どなたか教えていただけますようお願いいたします 6 2022/11/08 05:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バイトの制服の裾上げって自分...
-
ラブホテルでのバイトを考えて...
-
バイト前の食事で、腹が減って...
-
バイトに行く時手ぶらでいきま...
-
バイトの同級生と付き合いたい...
-
タイミーでバイトを雇った際の...
-
昔セブンイレブンのバイトで働...
-
質問です。 バイトを始めてから...
-
バイトの制服を家で洗って返す...
-
クロネコヤマトの早朝仕分けバ...
-
今日6時に起きて8時からバイト...
-
バイトで頑張る人いますか? 所...
-
半年でバイトが10人も辞めるっ...
-
マクドナルドのクローズ作業
-
非常識??
-
左目が腫れてしまいました。 も...
-
バイトについて教えてください ...
-
夕方の4時から10時までバイトの...
-
低カロリーで腹もちする食べ物!
-
最大バイト数を調べるSQL文を教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タイミーでバイトを雇った際の...
-
バイトの制服を家で洗って返す...
-
バイト中ってトイレ行けないん...
-
最大バイト数を調べるSQL文を教...
-
ラブホテルでのバイトを考えて...
-
バイトで頑張る人いますか? 所...
-
“ありますか?”ではなく、“あっ...
-
高校で隠れてバイトしたら学校...
-
バイト始めて2日目ですが休みた...
-
半年でバイトが10人も辞めるっ...
-
夜職以外で陽キャとイケメンが...
-
脈アリか脈ナシか。
-
バイト先で、4日間だけ一緒に働...
-
左目が腫れてしまいました。 も...
-
低カロリーで腹もちする食べ物!
-
バイトの経験がある方にお聞き...
-
短期のバイトで入力しなければ...
-
今日6時に起きて8時からバイト...
-
バイトについて教えてください ...
-
非常識??
おすすめ情報