STM32CubeMX工具配置SPI的CRC时数字和表达式转换

本文详细介绍了STM32 SPI模块中CRC校验配置的方法,特别是如何将多项式表达式转换为STM32CubeMX工具中所需的数值,以及如何在代码中正确设置CRC多项式的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在进行SPI配置时,教程中指导要配置为7,如下所示:

SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC 值计算的多项式

但是STM32CubeMX中选择时,是一个类似如下的表达式:

这两个之间是怎样对照的呢?鼠标点击后,会如下图提示:

结合其他CRC教程,不难猜出a,b,c为对应的bit位,比如X1+X3,则代表bit1和bit3的值为1,也就是1010,十进制就是10,这里要写7,故表达式为X0+X1+X2,尝试输入该表达式,发现没有报错,生成源代码,确实是7的值:

static void MX_SPI2_Init(void)
{

  /* USER CODE BEGIN SPI2_Init 0 */

  /* USER CODE END SPI2_Init 0 */

  /* USER CODE BEGIN SPI2_Init 1 */

  /* USER CODE END SPI2_Init 1 */
  /* SPI2 parameter configuration*/
  hspi2.Instance = SPI2;
  hspi2.Init.Mode = SPI_MODE_MASTER;
  hspi2.Init.Direction = SPI_DIRECTION_2LINES;
  hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi2.Init.NSS = SPI_NSS_SOFT;
  hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_ENABLE;
  hspi2.Init.CRCPolynomial = 7;
  if (HAL_SPI_Init(&hspi2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SPI2_Init 2 */

  /* USER CODE END SPI2_Init 2 */

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值