紫ライブラリ進捗とCubeIDEバグ対策

紫ライブラリは前回のリリースから随分時間が経ってしまいましたが、12月末を目標にv1.0.0のリリース準備中です。

10月の末にオーディオ実験ボードを以前作った桐壷基板と互換になるよう変更したのですが、これが基板製造業者のトラブルに見まわれ3週間かかる始末。そして配送完了が海外出張と重なったために取り掛かりが遅れてしまいました。さらに半田のミスで時間をロスし、挙句の果てにCubeIDEのコードジェネレータ・バグに巻き込まれてしまいました。気がつけば基板のGerberを出して40日経過しています。

ちょっとトラブルが続きすぎですね。お祓いをしたほうがよいでしょうか。

なんにせよ、CubeIDEのバグに関してはSTのコミュニティに投稿されているワークアラウンドが有効です。このバグの原因はUSARTの初期化をDMAの初期化の前に行っていることです。DMAの初期化が完了するまでDMA回路はクロックが通っておらず、USART DMAの初期化に失敗するのが原因のようです。

対策は以下のように初期化ブロックの前にあるユーザーコードブロックでDMAの初期化関数を呼ぶことです。この結果初期化関数は2度呼ばれますが、特に問題はありません。ユーザーコードブロックはCubeIDEが上書きしませんので、何度コード生成してもこのワークアラウンドは有効です。


CubeIDE v1.1.0 のコードジェネレータ・バグのためのワークアラウンド

というわけで、再設計したテストボードを使い、Nucleo F722, F746でAudio Talkthroughが問題なく動作しました。じゃじゃ馬だったCubeIDE v1.1.0を飼いならすこともできたので、引き続きリリースに向けて作業を続けます。

新オーディオ実験基板でNucleo F722/F746を試験中

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください