打印

求助:PIC18F K83系列单片机I2C读写EEPROM,太难了!

[复制链接]
527|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lee18198|  楼主 | 2020-3-12 18:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人正在使用PIC18F26K83的I2C读写24LC系列EEPROM,指定地址读出总是无法实现,已被当在这里很多天了,实在痛苦啊!
以前用过其他18F单片机的MSSP读写过,没有问题,但是换到K83以后,直接玩不转了,太难了!
MCC生成的代码没有文档,不知道咋用啊!
求大侠帮忙提供些相关资料或教程,万分感谢!!!

使用特权

评论回复
沙发
CoolSilicon| | 2020-3-13 12:00 | 只看该作者
这个跟芯片型号有什么关系??一点关系都没..
通过I2C读外部EEPROM, 你拿示波器量一下波形, 看看是I2C没发出来波形?
还是I2C地址搞错了?
还是EEPROM没有ACK?

使用特权

评论回复
板凳
奔波儿熊| | 2020-3-13 12:16 | 只看该作者
第一步先看地址字节后面有没有ack, 没有后面都是白扯.

使用特权

评论回复
地板
lee18198|  楼主 | 2020-3-14 09:15 | 只看该作者
CoolSilicon 发表于 2020-3-13 12:00
这个跟芯片型号有什么关系??一点关系都没..
通过I2C读外部EEPROM, 你拿示波器量一下波形, 看看是I2C没发出 ...

芯片型号不一样,实现的方式不一样,寄存器设置也不一样。

使用特权

评论回复
5
lee18198|  楼主 | 2020-3-14 09:30 | 只看该作者
奔波儿熊 发表于 2020-3-13 12:16
第一步先看地址字节后面有没有ack, 没有后面都是白扯.

现在实现当前地址读,就是不指定特定地址的读没有问题。但是当指定地址以后,得不到EEPROM的ACK,有时候I2C的S位还不自动清零。后来在发送完两个地址字节后,加入了一段延时,得到ACK了,然后就可以了。
但是后来把这段代码封装成一个函数在main()中调用时又出现了前面的状况,总之给人感觉很不稳定。
所以现在的问题是:
在main()函数中正常运行的程序,为什么换成程序调用就不行了呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝