发 帖  
原厂入驻New
[问答] PIC18F47K42的I2C问题
75 I2C 处理器
分享
我有麻烦让I2C总线在PIC18F47 K42上工作。我正在从PIC18F46K20处理器升级,那里一切都运转正常。在工作中,我们使用CCS作为编译器。使用新的处理器,I2C将无法工作。如果把i2c放在软件模式下,一切正常。为了测试I2C总线,我还用微€€芯片的XC8编译器编写了一个小程序。我使用MCC在引脚RC3和RC4上配置I2C1。当我用SurvioSCOP测量信号时,两个引脚都保持高电平。什么都没有发生。下面是我的代码:有人指出我做错什么了吗?谢谢!
0
2020-4-1 09:32:53   评论 分享淘帖 邀请回答

相关问题

3个回答
谢谢你的快速回答。ANSELC被写到0xE7。这给了我们二进制11100111。所以我猜PI3 C3和C4被设置成数字模式?我附上生成的代码,因为如果我尝试把它们放在内联中,我会得到一个错误。我猜这些引脚被设置为数字模式。我将检查我用CCS编译的代码是否也有这个引脚设置为数字模式。还有其他建议吗?提前感谢!
2020-4-1 09:53:37 评论

举报

我看到代码中唯一错误的地方是:您已经将SCL和SDA设置为输出,但是您还需要设置它们的Open Drain位,以便从机可以在适当的时候驱动线路。在pin_manager.cNow中CONC=0x18,已经说过,我将添加,不检查“OD”框将导致通信失败(因为Master是硬驱动SCL和SDA,所以Slave不能响应),但是您仍然应该看到SCL和SDA行上的一些活动以及您发布的代码d.既然你报告你的SCL和SDA线路上什么也没看到,我想知道你的PIC是否正在运行。我想你的装置需要一个4MHz的水晶连接到你的设备上。你确定它在工作吗?也许你可以改变你的主循环,只是重复地切换你设置为输出的RA2线路,以确保PIC实际运行。或者……也许你可以改变你的系统模块设置为HFINTOSC在4MHz,看看是否发生了什么事情。(我就是这样做的)底线:我把您的代码带入了我的PIC18F25K42项目(在消除了对于我的28针设备不存在的寄存器的引用之后),并且我看到了SDA和SCL的适当摆动。(在“自由”模式下)用XC8版本1.45编译。我在SDA和SCL上使用2.2K的PULLUPS。没有发布的勘误表表明您的设备或我的设备上的I2C有任何问题,所以我希望您的经验与我的相同。(但是,由于微芯片不发布任何类型的BugZILA或其他bug跟踪信息,人们永远不会知道,是吗?)也就是说……由于我没有设备来响应命令字节,所以主循环只需要每两秒钟在SDA行上重复发送0x78,SCL以200kHz进行切换(以及来自不存在设备的NACK)。通过使i2c1_writeNBytes()返回成功写入的字节数,以便应用程序代码能够检测到无响应。这就是我在我的(非MCC)代码中所做的。除此之外,MCC的东西看起来像广告一样工作,虽然我还没有用这个设备测试MCC。
2020-4-1 09:59:32 评论

举报

谢谢你的回复。把针脚放在排水口(OD)里就行了。现在,I2C总线正在使用XC8编译器。现在我知道问题必须是CCS编译器。我会检查CCS论坛,并在那里寻求帮助。谢谢你的帮助。
2020-4-1 10:19:20 评论

举报

只有小组成员才能发言,加入小组>>

102个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表