ST意法半导体
直播中

李皓圳

8年用户 1179经验值
私信 关注
[问答]

使用SPI读取磁编码器芯片的数据,正常来说只有几us,为什么使用HAL_SPI_TransmitReceive()多了20多us?

使用SPI读取磁编码器芯片的数据,正常来说,只有几us,为什么使用HAL_SPI_TransmitReceive()多了20多us,改成寄存器读时间就正常了,但是读的数据有问题;配置代码如下:
void MX_SPI3_Init(void){
/[i] USER CODE BEGIN SPI3_Init 0 /
/[i] USER CODE END SPI3_Init 0 /
/[i] USER CODE BEGIN SPI3_Init 1 /
/[i] USER CODE END SPI3_Init 1 /hspi3.Instance = SPI3;hspi3.Init.Mode = SPI_MODE_MASTER;hspi3.Init.Direction = SPI_DIRECTION_2LINES;hspi3.Init.DataSize = SPI_DATASIZE_8BIT;hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;hspi3.Init.CLKPhase = SPI_PHASE_2EDGE;hspi3.Init.NSS = SPI_NSS_SOFT;hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi3.Init.TIMode = SPI_TIMODE_DISABLE;hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi3.Init.CRCPolynomial = 7;hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;hspi3.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;if (HAL_SPI_Init(&hspi3) != HAL_OK){Error_Handler();}/[i] USER CODE BEGIN SPI3_Init 2 /
/[i] USER CODE END SPI3_Init 2 /
}
uint8_t H_SPIByte(uint8_t d){uint8_t receivedData = 0;
HAL_SPI_TransmitReceive(&ENC_SPI, &d, &receivedData, 1, 10);return receivedData;}



更多回帖

发帖
×
20
完善资料,
赚取积分