|
使用两个板子,在例程I2C_TwoBoards_RestartComIT代码上进行修改: 主机调用HAL_I2C_Mem_Read_IT函数,发送内存地址16位后读10个数据; 从机调用HAL_I2C_Slave_Seq_Receive_IT接收内存地址后再调用HAL_I2C_Slave_Seq_Transmit_IT发送10个数据; 现象: 从机正常接收,给主机发送第1个数据正常,到第2~10个数据时每次第八个时钟拉低了500多个ms才拉高,也就是延时了500多ms才回ack。不知道什么原因? 现在把HAL_I2C_Mem_Read_IT替换成查询模式HAL_I2C_Mem_Read,就没有以上时钟被拉低很久的现象。 这说明HAL_I2C_Mem_Read_IT函数封装哪里有问题?求指导 主机调用代码:
从机调用代码:
从机回调函数:
|
STM32G071C8的ADC问题,测量6路交流信号,端口使用PA2-PA7,信号来自电流互感器次级用20欧电阻转为电压信号,并联T4,通过1K,104滤波后到ADC引脚,个别芯片出现PA3结果是固定值,即使直接把引脚对地短短接,结果也是2000多个数,可能是什么原因
STM32G030F6P6TR 48MHz下Flash擦写必HardFault?官方库疑似有坑,求勘误或替代方案
stm32g071的rtc初始化后会直接进入中断怎么办?
STM32G030死机问题
A Guide to Mastering Slope
STM32G0B1
无源晶振开关电路设计
STM32G031F8P6开启读保护后,数据全变成0?
stm32g030f6p6的LL库,ADC多通道,DMA错位问题请教
STM32G030x6/x8被淋雨进水了但未通电,风险如何?怎么处理?
微信公众号
手机版
注意到代码又改变了~~
库里面有个例程,可以参考一下。
STM32Cube_FW_G0_V1.5.0\Projects\STM32G081B-EVAL\Examples\I2C\I2C_TwoBoards_ComIT\
已经找到原因,对比更新最新的G0代码时漏了开接收中断。
HAL_I2C_Mem_Read_IT函数最后调用I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT);
在I2C_Mem_ISR_IT里检测TC标志的地方需调用I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT);I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT);
主机没开接收中断,没有读RXDR就会拉低时钟线