Microchip
直播中

高敏兰

7年用户 147经验值
私信 关注
[问答]

如何使用一个外部RTC连接到PIC18F26J50通过I2C

嗨,每个人都使用一个外部RTC(DS1308)连接到PIC18F26J50通过I2C。但我不能让这个工作。我将解释:RTC代码与DS1307类似,最初我把它编程为18F2550,RTC连接到它,并且运行良好。对于每个寄存器,我只能得到0。我的第一个想法是它没有正确地写入寄存器,但是DS1308的配置寄存器(0x08)正在被成功写入,并且当它在SQW上切换1hz的输出时我重新检查。E 18F26J50是一个3,3V设置。RTC可以低至1.8V,但在所有情况下都以5V设置运行。I2C线路都通过靠近RTC引脚的4K7电阻器被拉到VDD。我甚至试着把4K7拉引线靠近MCU引脚(这是5V容忍),但仍然没有什么:(这里发生了什么?)我真的很感激在3.3V上工作的任何投入。谢谢和问候。

回帖(4)

丁亚念

2020-5-5 08:32:42
你能确定问题是不同的PIC还是不同的RTC?更新的图片通常有更多的模拟输入。你确定I2C管脚是数字模式的吗?您的I2C代码在每次写入之后检查ACK状态吗?
举报

余英姿

2020-5-5 08:39:38
你好,RicThanks。我感觉到它的PIC(18F26J50)。我设置了一个详细的例程来编写I2C寄存器,并报告一个错误情况,比如超时,没有ack等等。虽然所有东西都在mcus(18F2550和18F26J50)中再次完美地写入,但只有18F2550显示设置(和计数)的时间。D 18F26J50只显示了0000000…我不知道这里发生了什么。我不能说I2C不工作,因为RTC的配置寄存器被写入。
举报

余英姿

2020-5-5 08:49:17
你好,RicThanks。我感觉到它的PIC(18F26J50)。我设置了一个详细的例程来编写I2C寄存器,并报告一个错误情况,比如超时,没有ack等等。虽然所有东西都在mcus(18F2550和18F26J50)中再次完美地写入,但只有18F2550显示设置(和计数)的时间。D 18F26J50只显示了0000000…我不知道这里发生了什么。我不能说i2c不工作,因为RTC的配置寄存器被写入了。用于检查I2c错误的相同例程用于读取,它显示超时错误。我还附上了信号的范围视图。黄色是数据线,蓝色是时钟线。这里没有看到时钟,所以我想我可以肯定地说,I2c读不工作…
举报

余英姿

2020-5-5 08:59:16
显然,正如微芯片所报告的,硅中有一个缺陷:解决方法是清除LATB4和LATB5,在初始化I2c之前设置TRISB4和TRISB5。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分