« コンテスト観戦 | トップページ | 求人...なんだが »

2016年8月 1日 (月)

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も十分おすすめかもしれない。

|

« コンテスト観戦 | トップページ | 求人...なんだが »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: stm32f429で外部バス接続:

« コンテスト観戦 | トップページ | 求人...なんだが »