TMF8801红外传感器IIC通讯问题

图片说明
1、主控MCU采用STM32F103RC芯片,模块采用TMF8801模块,采用IIC通讯,收到的IIC波形如下所示,接收不到IIC中从机应答,各位看看怎么回事?
2、以下是发送函数
图片说明
3、等待应答函数如下
图片说明
4、端口定义
图片说明
5、原理图
图片说明图片说明

https://blog.csdn.net/qq_31626741/article/details/80020355

SCL、SDA两个引脚要加上拉电阻

从波形开I2c开始条件都不对,后面怎么做都是浮云

你这个IO似乎配的不大对啊 IIC要求是集电极开路OC(5/6/7) 配上上拉电阻 你这用的是PUSH-PULL(8)吧,

在发完第一个地址时 正常是OC输出高 设备将总线拉低表示ACK
如果是PUSH-PULL 设备不见能把电平拉下来 你自然检测不到ACK

设成OC输出时可以从IDR读回总线电平 所以这里应该把两个IO都设成OC(6)模式 不需要设成INPUT(3)

另外 有好好的IIC外设不用 非要用IO模拟 不知道这里是什么考虑