你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32U3 IIC通信后,SPI+GPDMA 进入循环发送,DMA无法使能 寄存器USEF=1

[复制链接]
OrionJ 提问时间:2025-4-13 19:57 / 未解决

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确实是能通信的。

753a2b4f7e95acf8d4f6b6e63ed6e138_.png
收藏 评论1 发布时间:2025-4-13 19:57

举报

1个回答
xmshao 回答时间:3 天前
我刚才建了个工程,简单看了相应API函数。


从你描述的情况来看,SPI的DMA使能本来跟I2C是没有关系的,只是基于你现在的代码逻辑流程,


由于I2C的启动执行没能正常运行,导致程序没法往下走,给你感觉SPI的DMA启动不了。


你现在调用的HAL_I2C_Mem_Write()是个阻塞式的写函数,直到写完或发生异常才会退出。


你在这里对data1是地址指针,给它赋值00应该意味空指针,一会0一会1,怎么感觉你在随心所欲地给它赋地址?
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版