完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有麻烦让I2C总线在PIC18F47 K42上工作。我正在从PIC18F46K20处理器升级,那里一切都运转正常。在工作中,我们使用CCS作为编译器。使用新的处理器,I2C将无法工作。如果把i2c放在软件模式下,一切正常。为了测试I2C总线,我还用微芯片的XC8编译器编写了一个小程序。我使用MCC在引脚RC3和RC4上配置I2C1。当我用SurvioSCOP测量信号时,两个引脚都保持高电平。什么都没有发生。下面是我的代码:有人指出我做错什么了吗?谢谢!
|
|
相关推荐
3个回答
|
|
谢谢你的快速回答。ANSELC被写到0xE7。这给了我们二进制11100111。所以我猜PI3 C3和C4被设置成数字模式?我附上生成的代码,因为如果我尝试把它们放在内联中,我会得到一个错误。我猜这些引脚被设置为数字模式。我将检查我用CCS编译的代码是否也有这个引脚设置为数字模式。还有其他建议吗?提前感谢!
|
|
|
|
我看到代码中唯一错误的地方是:您已经将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。
|
|
|
|
谢谢你的回复。把针脚放在排水口(OD)里就行了。现在,I2C总线正在使用XC8编译器。现在我知道问题必须是CCS编译器。我会检查CCS论坛,并在那里寻求帮助。谢谢你的帮助。
|
|
|
|
只有小组成员才能发言,加入小组>>
5160 浏览 9 评论
1998 浏览 8 评论
1927 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3170 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2225 浏览 5 评论
729浏览 1评论
613浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
503浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
628浏览 0评论
526浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:10 , Processed in 1.110116 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号