開発のヒント

周辺機能、I/O、メモリ

SPIのCRC(巡回冗長検査)多項式

SPIには、独立したCRC生成/検査機能があります。その生成多項式は、転送データ長に合ったCRC-8/CRC-16が使えます。

CRC-8/CRC-16が固定の製品もありますが、比較的新しいシリーズ(STM32F4シリーズなど)では、ユーザが任意の生成多項式を設定できます。

具体的には、SPI CRC 多項式レジスタ(SPI_CRCPR)を設定します。STM32CubeMXでは、Pinoutタブの左欄でSPIを選択して、モードを設定します。次にConfigurationタブからSPIを選択して、Parameter SettingsでData Sizeを設定し、Advanced Parameters欄でCRCをEnableにします。するとCRC Polynomial欄が出ます。デフォルトはX1+X3になっているので、希望する生成多項式を上書きします。

例えばCRC-8(X8+X2+X+1)の場合、X2+X1+X0と書き込みます。これでコード生成すると「hspiy.Init.CRCPolynomial = xxx;」(yはSPIの番号、xxxは生成多項式の十進表示)という記述ができます。

過去の開発のヒントはこちら