現在、別のマイコンとKL17内蔵のUART ROMブートローダーを使ってKL17のマイクロコントローラをプログラムしようとしています。少なくとも紙の上では、pingと消去は完了しましたが、KL17へのデータ書き込みに苦戦しています。データシートの例(43ページ)には、これらのバイト(CRC16バイトとメモリ書き込みコマンドパケットを除くフレーミングパケット)について、次のように記載されています。
0x5A, 0xA4, 0x0C, 0x00, 0x04, 0x00 , 0x00, 0x02, 0x00, 0x04, 0x00, 0x20, 0x64, 0x00, 0x00, 0x00CRC16バイトは0x06 0x5Aになります。しかし、27ページに記載されているCRC16アルゴリズムでは、私の環境では0x2b 0x56が出力されます。また、CRC16の計算方法のさまざまなバリエーションを含む様々なCRC16カリキュレータをオンラインで試しましたが、どれも出0x06 0x5Aはありませんでした。
Noay_0-1790003799652.png
私の推測では、計算に含めるべきバイトが欠けているのかもしれません(どのバイトかは分かりません。なぜなら、その後のデータパケットはすべてそれぞれCRC16バイトが割り当てられているからです)。あるいは誰かがデータシートを誤ったのかもしれません(これもまたKL17サブファミリ参照マニュアルにまさに同じ例なので可能性は低いです)。
こんにちは、 @Noay さん。
投稿ありがとうございます。リファレンス・マニュアルの「0x06 0x5A」値は誤りで、おそらくドキュメントの問題だと思います。ご提供いただいた情報に基づくと、CRC計算結果の「0x2B 0x56」は正しいようです。
blhostツールを使ってブートローダーコマンドのデバッグは可能です。パラメータ「-d」を指定すると、ホストとターゲット間のすべての通信プロセスが提供されます。
KL27ボードでこの機能を試してみました。下のスクリーンショットをご覧ください。
KL17のEVBボードは入手できません。同じ方法をKL17デバイスで試してみて、どんな結果が得られるか試してみませんか?
ドキュメントの誤りをお詫びします。この件を社内チームと共有し、それに応じて文書を更新するよう提案します。
BR
セレステ