我正在使用STM32H7A3 nucleo,设法让SPI轮询工作,附上下面的代码,当我尝试实现中断和DMA时,代码编译成功,没有错误,但SPI输出没有信号,SPI从设备是TI ADC。 .我已经设置了SPi全局中断和DMA循环
HAL_StatusTypeDef spi_write(reg, *pData)
{
HAL_StatusTypeDef ret;
uint8_t sendData[2] = {reg, *pData};
HAL_GPIO_WritePin(...); // CS pull low
ret = HAL_SPI_Transmit_IT(&hspi1, sendData, 2, 20);
// ret = HAL_SPI_Transmit_DMA(&hspi1, sendData, 2, 20);
if (ret != HAL_OK)
{
HAL_GPIO_WritePin(..); // CS high
}
代码正在用于轮询....TI ADC 能够读取和发送数据,但不能是中断和 DMA 模式
这两个函数都不是阻塞的,只是设置转换并立即返回。
这意味着他们不会等到过渡完成。
然后在过渡结束之前拉起 CS。
您需要在中断回调中使用它/