stm32L011,硬件spi cubemx生成代码。由于使用的是单线半双工模式,所以采用单独的收发函数。
HAL_SPI_Transmit(&hspi1,&temp,1,1000);
HAL_SPI_Receive(&hspi1,&temp1[0],1,1000);
使用中发现,发送正常。但是接收的时候 ,clock会多出一组8个。
如图,我用读取函数HAL_SPI_Receive(&hspi1,temp1,1,1000);读了1个字节,然而却出来2组clock。
同样的,如果我读2个字节HAL_SPI_Receive(&hspi1,temp1,2,1000); 则clock是3组,永远比读的多了一组。
spi配置如下:
/* SPI1 init function */
void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_1LINE;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
|