stm32f429で外部バス接続
F4xx系での外部バス接続を実装。とりあえずSRAM。
外部バスコントローラー(FMC)には、これまたたくさんの設定項目がある。
SDRAM、NAND FLASHやPC CARD I/Fも、当たり前のように実装されている。
SRAM、というか基本のバスタイミングはどれだ...
メモリマップ上の外部バスは、全部で6バンクある。
それぞれにチップセレクト(*NCEn)が出ていて、サイズは64MB。
バンク2,3がNAND FLASH バンク4がCARD。
で、SDRAM専用にバンク5,6。
バンク1(0x60000000~0x6fffffff)がさらに4つに分かれていて、
それぞれに又チップセレクトがある。(こっちは*NEn)
ここいらが、SRAMとかNOR FLASH用に割り当てられている。
なので、NCE1という信号は無いわけか。(全体が分からないと、意味が分からない)
バンク番号は1から始まるようだ。
できたら、バンクのナンバーも、ゼロオリジンにしてもらったほうが、気持ち悪くないんだけど。
選択されるメモリ種別によって、同じアドレスのタイミング設定レジスタの機能が変わるので、リファレンスマニュアルの記述が回りくどい...
こまごましたタイミングを指定できるようで、こういったものは従来、外部ロジックでタイミングを作っていたような。
ペリフェラルで設定できるのはありがたいけれど、自分で設計した回路と違って、どのように動くのか、実際やってみないとはっきりしないようにも思う。
というわけで、テスト実装を進める。
今のところ、うまく動いているように見える。
------
8ビットバスのSRAMを接続してみているけれど、バスアライメントについてはフレキシブルのようだ。
データとしてアクセスする分には、4バイト境界に捕らわれずに、奇数アドレスからでもワードアクセスできている。
ちゃんと4バイト分のデータが読み書きされている。
普通はバスエラーが発生するか、下位アドレスは無視されそうなもんだけど。
メリットは...あるかな?
24ビット/ピクセルとかのグラフィックデータのアクセスには便利かな。
まあ実行されるプログラムコードは、4バイトアライメントにないとダメかもしれないけど(未調査)
------
Cortex-M以前のARMだと、外部WAITピンがなかったりとか、いろいろ難もあった。
さすがにこの世代になると、WAIT関連も、ありとあらゆる設定ができるようだ。
世代ごとに都度使ってみないと、ついていけなくなりそうだ。
------
そして、今回の試作中に気付いたが、STM32F4xxの日本語リファレンスが上がっている。
1700ページ以上の大容量だけど。
http://www.st.com/resource/ja/reference_manual/dm00031020.pdf
内容も、ちゃんとした日本語になっている。
公式だからという訳ではないけれど、非公式ドキュメントとかではありがちな、かえって読みづらい日本語、のようなこともない。
マウスの界隈では、ドキュメントが日本語、ということでルネサスのプロセッサが人気だったりするけれど、STM32も十分おすすめかもしれない。
| 固定リンク | 0
コメント