发布网友 发布时间:2022-05-16 12:34
共2个回答
热心网友 时间:2023-10-22 18:37
1、首先确认你的I2C的速率,软件模拟的话就与MCLK直接相关了,自然单片机的速率下降就会正常;如果是硬件I2C的话需要看时钟来源是不是MCLK并作修改。 2、看你的电路并没有进行上拉也就是SDA和SCL需要接4.7K或者10K的电阻至VCC即可。 3、如果你的I2C是等待延时的话建议修改delay参数或者使用返回ACK查询方式。 4、有问题随时hi我,可以给你传一份调试通过的代码!追问软件模拟的,有与stm32通讯的最好。
热心网友 时间:2023-10-22 18:37
1. 对于某款CPU,比如MPC8378,它的datasheet上说了CPU会等待slave放弃对SCK的拉低,然后重新开始toggle。那CPU是无限期的等待,还是说有一个timeout threshold? 如果timeout,CPU会怎么办? 2. 我从datasheet上为什么找不到相应timeout event的状态寄存器? 3. 我们是操作/dev/i2c-0来实现用户态的I2C driver,如果read/write经常return -5(Input/Output problem),是不是一定就是clock stretching的问题? 4. 还有最后一个问题:如果某个设备只有一个8位寄存器,它的读时序只需一个字节:(device address<<1)|(Read bit),写时序只用两个字节:(device