Seeeduino XIAO (ATSAMD21G18) のCRCエンジン

DMACに含まれているCRCエンジンを調べてみた。とりあえずDMACとは関係なく使えるようなので試してみたら以外に使いやすくてソフトウェアで計算するよりはかなり速いことがわかった。
さらにDMACと組み合わせるとmemcpy()の半分程度の時間でメモリコピーとCRC生成が同時実行できてしまう。これは使わないと損だということで、まずは、CRCエンジン単体のライブラリを作ってみた。
DMACを使わない場合はソフトウェアでデータを読み取る時間がかかるものの、それでもmemcpy()と同程度の時間でCRC(16/32)生成が出来てしまうなんて素晴らしいというしかない。

【サンプル・スケッチ】

【修正履歴】
2020-05-20
型名を変更。

【ライブラリ】