完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好。我已经用PIC18LF46J50原型战斗了好几天,现在试图让I2C可靠地工作。对于测试用例,我的微控制器连接到微芯片MCP79410-I/SN RTCC。我使用MSSP1,总线组件由3.3V供电,在SCK和SDA上有1k欧姆的外部上拉。下面给出的代码成功地发出了序列:Start,0xDE,0x00,restart,0xDF,“read”Stop。然而,我被要求忽略太多的数据表,以至于现在我不确定我的代码是否正确,或者只是幸运地等待灾难的到来。我邀请评论,以便其他人可以避免我通过尝试从数据表中得到的痛苦。而且,在之前编写了I2C函数(XMEGA)之后,我记得在从EEPROM读取数据块时需要发出NAK。任何人都可以在PIC18LF46J50上确认如何正确地执行此操作吗?请允许我清楚地说明i2cTest()代码确实是使I2C读取工作的一种尝试。一旦我确信这是正确的方法,我会写适当的例行公事。非常感谢。
|
|
相关推荐
4个回答
|
|
这是任何I2C系统都适用的。当读取时,在发送STOP序列之前,主机必须用NAK而不是ACK响应最后一个字节。如果没有,并且从机发送的下一个字节以0开始,您将根本无法发送STOP。您究竟发现了什么错误?这个数据表是什么?
|
|
|
|
非常感谢QHB。当你说“这是任何I2C系统的现场”时,你是指用NAK响应最后一个字节,还是我的代码在原则上是正确的?我曾经历过多次对PIC18F46J50数据表的挫折感。这是奇怪的,因为我成为了PIC 8位微型机多年的球迷,由于信息和明确的文件。我在PIC18F46J50数据表上遇到过一些错误,但大多数情况下我的抱怨是措辞模糊,让读者有疑问。例如:在第313页,第19.5.11章讨论了I2C主模式接收。重要的注释告诉我们,在RCEN被设置之前,MSSP模块必须处于非活动状态。如果能告诉我们如何测量MSSP模块处于非活动状态,那么这个语句将更有帮助。此外,我还没有找到任何文本来解释确定接收操作何时完成的正确方法。这个文本解释了在第8时钟的下降沿之后,设置BF标志,清除RCEN标志(尽管没有明确提及),设置SSPxIF标志并暂停BRG。旗帜。从我的代码中可以看出,我发现这种方法失败了,结果导致我的函数“挂起”。可悲的是,文档中充满了这种变幻莫测的东西,如果这是我第一次体验微芯片,我可能再也不敢接近它们了。
|
|
|
|
我对PIC中的I2C功能也有点失望……但是在我的例子中,我使用的是dsPIC30F6012A,并且有芯片差错帮助我。微芯片文档,请使反转更突出!第二,errata(http://www1.micro..com/downloads/en/DeviceDoc/80457C.pdf)#12,启用I2C模块时的I2C总线冲突(产生启动故障)说:在单主机环境中,在启用I2C模块和第一数据传输之间添加延迟。延迟应该等于或大于传输两个数据位所花费的时间。这里举个例子来说明所有区别……下一步是写到I2CTRN并发送设备地址还是用SEN创建“REAL”启动条件(Start Enable)?在多主环境中(以及可能不是无噪声的环境),如果BCL(总线冲突)位被设置了,因为设置启用位实际上导致了总线冲突,那么应该如何恢复该位呢?如果我重置BCL和IWCOL位,可以在多主环境中有效地重置I2C模块吗?
|
|
|
|
嗨,关于ACKDT误命名,这是I2C硬件定义和工作方式的结果。ACKDT实际上设置要在总线上传输的值。几个Ac.、.-Acknowledge Status和Control位是这样的,使用与总线上发信号相同的值。读取I2C hardw如果是文档,你会意识到所有的I2C硬件、ACK和NACK信令都使用反向逻辑。Harmony试图通过反转外围层函数中的所有I2C ACK和NACK信号接口来解决这个问题,只是增加了混淆,使调试更加困难。l释放硬件中的总线,然后重置自身。因此,在多主环境中,您可以等待其他主设备完成通信,清除BCL位,当P位==1和S位==0时,可以再次发送Start信号序列。如果在Start信号或Address写传输期间发生这种情况,则发送是正式的仲裁丢失,并且您的代码应该用新的Start和相同的地址重试传输。如果在数据传输期间发生总线冲突,则除了向应用程序代码或协议驱动程序报告失败的传输之外,没有确定的恢复方法。IWCOL是不同的。获取IWCOL集是主代码内部错误的标志,它不会改变硬件状态机。如果您的主代码以前控制过总线,那么当IWCOL被提升时,它仍然是活动的主代码。因此,当检测到IWCOL时,您应该发出停止序列的信号。
|
|
|
|
只有小组成员才能发言,加入小组>>
5166 浏览 9 评论
2000 浏览 8 评论
1929 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3175 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2227 浏览 5 评论
736浏览 1评论
619浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
507浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
633浏览 0评论
530浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 04:09 , Processed in 1.254270 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号