
HAL_I2C_Mem_Write(&hi2c1,0x80,HDC2080_DI_REG,1,data1,1,100); while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY); if (HAL_SPI_GetState(&hspi2) != HAL_SPI_STATE_READY) { // SPI ???,????????? Error_Handler(); } HAL_SPI_Transmit_DMA(&hspi2, new_wave, sizeof(new_wave)); 现象:当data1=0x00 时,SPI+GPDMA正常发送,当data1不等于0x00 时比如0x01等,GPDMA并不能使能。把IIC代码注释了,能够正常发送SPI+GPMDA。IIC确实是能通信的。 |
分享一个PWM+DMA的BUG
STM32G070CBT6使用硬件SPI无法读出W25Q128的ID
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
ST25R3916有快速读取吗?
PWM+DMA求助
STM32U3系列的定位是怎样的?
STM32H743使用EXIT0触发SPI的DMA发送数据
STM32F373 SDAC1+DMA,数据只能更新一次?
STM32G473 定时器事件触发DMAburst传输错位?
STM32H743VIT6 HAL 串口DMA发送掉帧
从你描述的情况来看,SPI的DMA使能本来跟I2C是没有关系的,只是基于你现在的代码逻辑流程,
由于I2C的启动执行没能正常运行,导致程序没法往下走,给你感觉SPI的DMA启动不了。
你现在调用的HAL_I2C_Mem_Write()是个阻塞式的写函数,直到写完或发生异常才会退出。
你在这里对data1是地址指针,给它赋值00应该意味空指针,一会0一会1,怎么感觉你在随心所欲地给它赋地址?