Nucleo-L452につなげたQSPI Flash (MX25R6435F)の動作確認をしました。
QSPI Flashの操作のためのコードは、CubeL4に含まれているSTM32L496G-Discovery用のBSPのコード(stm32l496g_discovery_qspi.c)を流用しました。PIN割り当てを変更すればいいだけのようなものです。BSPのAPIには初期化、Read, Write, Eraseといった基本操作が用意されているので、それらをシェルから使えるようにして、動作確認です。
![](https://blogimg.goo.ne.jp/user_image/13/cb/fe0e971a077aff73cb23194366e1c5dc.png)
先頭の256バイトの部分しか試していませんが、消去、書き込み、読み出しができることを確認。BSPのコードは割り込みを使っておらず、書き込み終了もポーリングで検出しているのですが、今回の用途にはこれでも十分に用が足りるので、このまま使うつもりです。
一旦、データの書き込みができれば、QSPIの動作モードをMemory mappedに変更してやると、0x90000000以降のメモリ空間で内容が読み出せるようになります。以下、Map前メモリダンプ、Map操作、そしてMap後のメモリダンプです。
![](https://blogimg.goo.ne.jp/user_image/42/69/3c0ee8c369223be8547966015b978aa2.png)
![](https://blogimg.goo.ne.jp/user_image/5f/7f/8b70c1f8c581c43bfeeb91557c34202e.png)
![](https://blogimg.goo.ne.jp/user_image/09/06/0d35e26750e9d45d68f1699d88c69219.png)
イメージとしては理解してましたが、実際に動かしてみるととっても簡単に使えて便利そう。
QSPI Flashの操作のためのコードは、CubeL4に含まれているSTM32L496G-Discovery用のBSPのコード(stm32l496g_discovery_qspi.c)を流用しました。PIN割り当てを変更すればいいだけのようなものです。BSPのAPIには初期化、Read, Write, Eraseといった基本操作が用意されているので、それらをシェルから使えるようにして、動作確認です。
![](https://blogimg.goo.ne.jp/user_image/13/cb/fe0e971a077aff73cb23194366e1c5dc.png)
先頭の256バイトの部分しか試していませんが、消去、書き込み、読み出しができることを確認。BSPのコードは割り込みを使っておらず、書き込み終了もポーリングで検出しているのですが、今回の用途にはこれでも十分に用が足りるので、このまま使うつもりです。
一旦、データの書き込みができれば、QSPIの動作モードをMemory mappedに変更してやると、0x90000000以降のメモリ空間で内容が読み出せるようになります。以下、Map前メモリダンプ、Map操作、そしてMap後のメモリダンプです。
![](https://blogimg.goo.ne.jp/user_image/42/69/3c0ee8c369223be8547966015b978aa2.png)
![](https://blogimg.goo.ne.jp/user_image/5f/7f/8b70c1f8c581c43bfeeb91557c34202e.png)
![](https://blogimg.goo.ne.jp/user_image/09/06/0d35e26750e9d45d68f1699d88c69219.png)
イメージとしては理解してましたが、実際に動かしてみるととっても簡単に使えて便利そう。