【ST NUCLEO-U5A5ZJ-Q开发板测评】SPI DMA如何配置传输
这里我遇到了问题,后面用逻辑分析仪分析时序,发现只传了一个字节就停止了。后面找到了官方的例程分析了一下,找到的原因。现在就配置记录如下:
还有就是需要重写中断回调函数:
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{
/* Set the SSD1306 state to ready */
SSD1306_Disp.state = SSD1306_STATE_READY;
}
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
{
SSD1306_Disp.state = SSD1306_SPI_ERROR;
}
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi) /* Derogation MISRAC2012-Rule-8.13 */
{
/* Prevent unused argument(s) compilation warning */
//SSD1306_Disp.state = SSD1306_STATE_READY;
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_SPI_TxHalfCpltCallback should be implemented in the user file
*/
}
这样就解决问题了,但是,在中断传结束之后,如果不延时1毫秒,就会卡死,这样有点影响性能: