|
以下24C02的驱动好像不稳定,不更换24C02时,读写都正确,但是更换一个24C02,数据就读写不正确,在把之前的正常的24C02重新焊上去,也读写不正确,我已确认过24C02肯定是没问题的,硬件也没问题,请高手看看到底是那个出现了问题?驱动程序是我在当时AVR单片机移植过来的。 驱动程序请看附件。。 |
at24c02.pdf
下载49.63 KB, 下载次数: 9, 下载积分: ST金币 -1
微信公众号
手机版
如果24C02没问题的,硬件也没问题,那就还是程序问题。
IO必须用OD模式,不需要切换方向,只需要输出1即可从输入寄存器读回实际IO的输入状态。注意IO的默认输出状态是0还是1,默认配置为全输入状态;如果要输出的话,首先全输出1,然后再按照I2C的流程来;如果只挂一个I2C设备的话,不涉及I2C总线锁死的问题。
评分
查看全部评分
为什么不用切换方向呢??我记得IIC通信时,SDA方向很重要呀
评分
查看全部评分
不需要再解释了吧,这句话看到句号那里了吗?
我的程序就是没有切换IO口方向的,直接读回输入寄存器实际IO的输入状态。如果加了IO口切换方向后,读写都不能成功
你好,程序能发我看看吗??
评分
查看全部评分
用模拟I2C时, 有两种方法
1, SDA 配置为OD 外加上拉电阻, 无需切换IO方向
2, SDA 配置为PP 外加上拉电阻, 接收时需要切换IO方向
而楼主是属于错误的第三种方法
你说之前用的24C02是可以的, 那可以告诉你的, 它(之前的24C02)之所以行, 是因为它在读取ACK时,它把一输出为高的IO硬生生的把它拉低,这种情况等同于两个输出的IO, 一个输出高另一个输出低, 接一块, 结果是高是低那是看运气吧
评分
查看全部评分
建议用现成原子的程序测试下,然后再这个基础上改。 尤其是那个检测24c02是否工作的程序。
评分
查看全部评分