STM32H743I-EVAL 試し始めた。
ソフトウェアを書き換えた後でデフォルトプログラム(demoソフト)に戻すため、書き込みバイナリファイル(実際はHEXファイルだった)を探した時からの独り言です。
##ダウンロード
-
STM32H743I-EVAL紹介ページにアクセス
https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-eval-boards/stm32h743i-eval.html -
ページ下部にスクロールし「STM32H743I-EVAL compiled demo binary」をチェックしてダウンロード。
##書き込み
・書き込みアダプタ: ST-LINK/V2 を使用。
・オーソドックスな STM32 ST-LINK utility は使いません。
EVAボードに実装されている外付けNORフラッシュメモリへの書き込みができず、
「“no elf loader found for this operation”.」のエラーメッセージが表示されます。
(※v4.5.0 使用しましたが「External Loader」メニューにメモリ該当型番なし。)
・まず、STM32CubeProg をインストールします。
・ダウンロードしたdemoプログラム格納フォルダの「program_hexfile.bat」を実行します。
書き換えには私のPC環境で12分30秒かかりました。
##ST-LINK V3
つーか普通にST-LINK実装されてますね。それも"V3"が。(マニュアル読まないクセがいかん)
これだと書き換え約3分半。もう"V2"使わない。
※「STM32 ST-LINK utility」では"V3"アダプタ認識せず。たぶん利用不能かと。
マスストレージもしっかり出現しますね。Nucleoライクにbinファイルをポイっと格納できそうですね。
####binファイル生成
(MDK-ARMの場合)
ユーザーオプション設定で
fromelf --bin --output=$H@H.bin $H@H.axf
を設定し、ビルド生成ファイルaxfをbinファイルへ変換。
その後binファイルをマスストレージへドラッグ&ドロップ!
うん。ちゃんと書けました。
##仮想COM
仮想COMポートもあるね。
ショートピン[JP7,8] 2-3、2-3 ショートでRS232C I/Fから仮想COMへ切り替わる。
##USART
これまでSTM32FとかSTM32Lとか使ってきたけどSTM32HのUSARTってレジスタ名とか設定ビット配置変わってるし。機能もいろいろ追加されたんかな。どこの型番からなのかいまいちネットで情報引き出せませんが。
仕方ないリファレンスマニュアル見比べるか。日本語版もあるし。
自分のこれまでのリソースとHALドライバの割り込み処理の相性が悪かったため、割り込みハンドラを自作のに入れ替えてたけど、STM32L版から修正した箇所はざっくり抜粋して次の感じ。
/* ステータスレジスタビット代替定義 */
#ifdef STM32H7
#define USART_SR_TXE USART_ISR_TXE_TXFNF
#define USART_SR_RXNE USART_ISR_RXNE_RXFNE
#define USART_SR_PE USART_ISR_PE
#define USART_SR_FE USART_ISR_FE
#define USART_SR_NE USART_ISR_NE
#define USART_SR_ORE USART_ISR_ORE
#endif
:
:
/* ステータス読み出し */
#ifdef STM32H7
uint32_t isrflags = READ_REG(huart->Instance->ISR);
#else
uint32_t isrflags = READ_REG(huart->Instance->SR);
#endif
:
:
/* 送信レジスタ書き込み */
#ifdef STM32H7
huart->Instance->TDR = txdata;
#else
huart->Instance->DR = txdata;
#endif
:
:
/* 受信レジスタ読み込み */
#ifdef STM32H7
volatile uint8_t txdata = huart->Instance->RDR;
#else
volatile uint8_t txdata = huart->Instance->DR;
#endif
普通に調歩同期でFIFO無し(CubeMX標準生成モード)にて使う限り、この程度の調整で普通に動作した。
##LTDC
STM32Cube MCU Package
https://www.st.com/ja/embedded-software/stm32cubeh7.html
をDLして
.\STM32Cube_FW_H7_V1.8.0\Projects\STM32H743I-EVAL\Examples\LTDC\LTDC_Display_1Layer
をビルドして書き込む。
でもこれ、CubeMXのプロジェクトファイル(.ioc)がない。
またCubeMXでデフォルトで自動生成したソースコードは内部クロック設定のためそのままではLTDCサンプル動作しない。
LTDC_Display_1Layer プロジェクトソースコードと見比べながら以下のようにCubeMXプロジェクトのクロック設定を調整した。
自前のプログラムに組み込んで、とりあえずお花の外国姉さん表示できた。
※随時追記予定。