|
我最近使用IIC来读写EEPROM,每给一次写命令,会想EEPROM中存1000个左右的16位参数,程序如下:
图1
图2
图3 先简单说一下程序的执行流程,图1和图2两部分程序是连着的,在同一个写函数中,该函数每2ms执行一次,一次执行两个DMA写函数HAL_I2C_Master_Transmit_DMA(),I2C_BUFFERSIZE大小是4,DMA长度配置的是byte,用的是circular模式。 图3中是IIC中断服务函数,周期性的初始化IIC和DMA通道。 我的问题是: 我不停的给写命令(每次写完1000个参数后接着手动给下一次写命令),偶发(不是每次写1000参数都会碰到)在写某一个参数时会写失败。 我通过仿真器看了一下,发现是在第二次HAL_I2C_Master_Transmit_DMA处失败,进入到该函数发现是HAL_DMA_Start_IT返回的状态不正确,再进入HAL_DMA_Start_IT发现是IIC的发送DMA处于忙状态。 我不懂为什么是忙的状态,因为每次IIC传送完毕,我都会abortDMA,应该在执行完第一个HAL_I2C_Master_Transmit_DMA后DMA的状态会被初始化为ready才对啊,没搞懂DMA的执行流程,再加上这个问题不是每次都能出现,就更迷惑了,麻烦各位大神帮我看看,谢谢了 |
STM32G431的电机驱动代码的FOC中断触发相关问题。
fdcan通信内部回环正常,换成正常模式收不到数据
G474的opamp失效症状。有大佬遇到相同的症状吗
STM32G474RBT6使用Keil工程通过仿真器下载程序时,程序量超过64K时,就会下载失败,求教。
Motor Control Workbench六步算法显示硬件不支持电流检测,同一套硬件FOC算法就显示支持;硬件为B-G431B-ESC1
STM32G474VET6如何配置HRTIM的中心对齐模式
STM32G474RBT6芯片,hal库默认设置为双bank模式,怎样修改为单bnak模式?使用STM32CubeMX工具生成工程时,只能选双bank模式,不能选单bank模式!
STM32G474 HRTIM 推挽模式下 关闭死区 在比较寄存器较小的情况下,存在输出脉宽直接到100%
最近在做单极倍频SPWM
stm32G474RBT3的flash擦除寿命是多少?
微信公众号
手机版