打印
[其他ST产品]

求助:STM32 SPI做从机时SPI_SR TXE如何清空

[复制链接]
63|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麻花油条|  楼主 | 2024-10-30 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32 spi做从机时,调用开始传输函数,如下:        if (HAL_SPI_Transmit_DMA(&spihdl, (uint8_t *)&op_cmd, sizeof(op_cmd)) != HAL_OK)
        {
            spi_halted();
        }


如果主机没响应此次传输,spi 从机想结束此次传输,调用结束函数,如下:
                HAL_StatusTypeDef  errorcode = HAL_SPI_Abort(&spihdl);

但是会有问题,SPI的状态寄存器 TXE 发送缓冲区非空,会导致后面传输异常。

目前尝试了很多办法,只有将SPI RESET才能清空,函数如下:
            HAL_SPI_DeInit(&spihdl);
            __HAL_RCC_SPI3_FORCE_RESET();
            __HAL_RCC_SPI3_RELEASE_RESET();
            HAL_SPI_Init(&spihdl);



请问有什么其它好的办法将SR->TXE清空?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

277

主题

1438

帖子

2

粉丝