LoginSignup
3
1

More than 5 years have passed since last update.

STM32マイコンでFSMCを使用する際のアドレスについて

Last updated at Posted at 2017-11-15

STMマイコンを使用して液晶ディスプレイ(LCD)などを制御する際に、FSMC (Flexible Static Memory Controller)を使用すると制御を簡単にできます。16-bitモードの時には、アドレスが1ビットシフトするので注意が必要です。
image.png

下記設定を考えます。
- 使用するマイコンはSTM32F407 (メモリマップは下記)
- FSMCのbank1を使用する
- LCDのRS (制御コマンドとデータ通信の切り替え信号)をA16に割り当てる
- ビット幅は16-bitモード

image.png

このとき、制御コマンドのためにRS = 0とするには、0x60000000にアクセスすればOKだとメモリマップからわかります。一方、データ通信のためにRS = 1とするには、0x60020000にアクセスする必要があります。

A16をRSに割り当てたので、ベースアドレス(0x60000000) + 2^16で0x60010000が対象アドレスだと思ってしまいがちですが、データシートをよく見ると下記のような記載がありました。つまり、1ビットシフトされるのです。そのため、実際にアクセスすべきアドレスは0x60020000となります。

In 16-bit mode, data address issued to the memory is HADDR[25:1] >> 1

このパワポに、もう少し詳細を記載しています。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1