CH582M的I2C接口使用指南是否有误以及遇到的问题

问题1.

1653623919108828.png

这段内容实际发送的地址的最低位是1。




1653623919134318.png

这段内容实际发送的地址的最低位是0.




问题2.

1.使用主机模式读取数据时,在发送读地址后使用while(!I2C_GetFlagStatus(I2C_FLAG_RXNE))会一直卡在这.


2.使用下面的代码是能接受到数据,但是没法在最后一个数据接收后回NAK以及发送停止信号,从寄存器读取到的数据跟实际接收的不对应,读到的寄存器数据都是D1.

1653624661130016.png

连续读监控.png

不懂问题出在哪,附件附带了程序。

CH582M的I2C接口使用指南是否有误?能不能提供IIC读取一些比较常见器件的例程

I2C接口指南核实有笔误,感谢您的反馈,我们会在后续更新中更改。

SDA和SCL是否加了上拉电阻呢?建议先使用软件模拟I2C,提供一篇博客以供参考。

模拟I2C主机(CH579 CH573 CH582) - debugdabiaoge - 博客园 (cnblogs.com)


能否提供一下邮箱,这边找了相关代码以供参考。


icon_rar.gifCH582M_MPU6050.zip



抱歉我忘记上传工程了,工程在楼上。I2C上拉了,模拟I2C我自己能实现


就图片中的代码块来说

第一个问题应该是while(!I2C_GetFlagStatus( I2C_FLAG_RXNE ));最后没有加“;”(已注释掉的一行)

第二个问题应该在倒数第二个字节接收完成后使能NACK和STOP,而不是最后一个字节接收完成之后

我这边在用硬件IIC调试设备,写一点外设代码以供客户参考,如果您还需要的话可以留下邮箱获取


这是问题2.1修改后的函数以及逻辑分析仪的监控,还是卡在这,没法验证接下去的,希望能完善对CH58X系列I2C的使用说明。

我的邮箱:个人信息保护,已隐藏

卡住函数.png

卡住函数监控.png


MPU6050回了ACK主机没有动作。

补充:模拟I2C可以正常读取MPU6050数据。


image.png

这个标志中的“接收”换成“发送”。


@TECH_JW

可以帮我发一份实际工作的主机模式的I2C 代码吗? 我看SDK里的例程转到自己的程序还没有调通.谢谢!

我的邮箱:个人信息保护,已隐藏



@Guoguo 您好,CH582M的硬件IIC主机可以直接参考博客:

以MPU6050为例的硬件IIC的使用 - JayWell - 博客园 (cnblogs.com)

硬件IIC的7位从机地址查询方式读写参考代码 - JayWell - 博客园 (cnblogs.com)


只有登录才能回复,可以选择微信账号登录