完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我正在尝试使用一个18F44K22和MCC v2.25.2为I2C主机生成的代码在I2C上接口一个MMA8452加速度传感器。到目前为止,这是行不通的。它只返回我想读的寄存器上的0x00。在阅读“MMA8452设备只读取0x00”上的许多帖子时,我发现这主要是由于缺少“I2C重复启动条件”。如果我使用mcc生成的代码,并使用这样的函数:在我的逻辑分析器上,这看起来不错,所有的开始、停止、ack和nak都在那里,但是它不会在中间生成重新创建的开始条件。它是一个停止和开始。在其它设备上,我试过这不是问题,但是MMA8452在接收到I2C停止时重置它的寄存器,并且总是返回0x00。基本上,它使用了更严格的I2C实现,我想……通过i2c.c和i2c.h的挖掘,我无法弄清楚如何使用生成的函数在I2C写操作和读操作之间发送重复开始……有什么想法吗?亲切的问候,UB
|
|
相关推荐
17个回答
|
|
|
TryThis应该自动在读和写之间插入重新启动。
|
|
|
|
|
|
嗨,西蒙格123,谢谢!这真的很成功。我试着使用这些功能,如I2C。H所描述的,但是不知怎么地迷失了方向…亲切的问候,UB。
|
|
|
|
|
|
您好UB,IDK,如果你仍然是一个活跃用户在这里,但你可以更详细地说,你是如何解决这个问题?我有一个相同的,事实上,我用的是同一个MMA845 2 Accel.希望你看到这个
|
|
|
|
|
|
谢谢西蒙格123,你救了我很多时间,我可以确认这与MMA8653。然而,在最后,它仍然返回I2C_Wflag==I2C_MESSAGE_PENDING,如果i2c_state==S_MASTER_IDLEMicro.,则该I2C_Wflag==I2C_MESSAGE_PENDING可以被忽略或清除——请添加MCC生成的函数用于重复启动……
|
|
|
|
|
|
如果使用I2C1_MasterWrite()则通过发送I2C-STOP结束,因此发送I2C-RESTART为时已晚。
|
|
|
|
|
|
嗨,附件是我的一个项目,修改了MCC驱动程序,用于I2C。在API函数中,有一个组合操作:*Start、AddressW、Write data、Restart、AddressR、Read data、Stop*/注意,虽然参数列表与MCC生成的驱动程序兼容,但是I2C_MESSAGE_中有许多变化STATUS类型定义。在I2C_MESSAGE_STATUS类型名称或状态代码中没有通道号或实例号。然后,对状态代码列表进行排序,以便所有指示驱动程序正在工作的状态代码都具有值
|
|
|
|
|
|
仔细观察后,我发现这对我不起作用。在设备地址和寄存器地址写入之后,我没有重启而是停止。接着是一个用ACK读取的设备地址。奴隶不释放SDA,主SCL被卡住高。与BoTi2C1BosixTrgQueLeeSyLoad=1和AMP=2相同,请帮助…
|
|
|
|
|
|
您好,您使用的是什么代码,显示源代码!你实际使用的是什么照片?什么版本的编译器和MCC?要在论坛消息中显示代码,请使用代码标签:
.,但要删除括号之间的所有空格。作为相对新的成员,您可能不允许进行附件。要让生成的I2C MSSP驱动程序进行重新启动序列,您应该执行以下操作:SIL |
|
|
|
|
|
该头文件为GUI中选择的所有模块提供了驱动API的实现。生成信息:产品修订:MPLAB(c)代码配置器-4.15设备:PIC16F1825版本:1.02所生成的驱动程序针对以下内容进行测试:编译器:XC8 1.35 MPLAB:MPLAB X 3.40
|
|
|
|
|
|
您好,已经试验过message#10中的代码和I2C驱动程序的一些变体。当前版本的MCC的I2C驱动程序在如message#9中所建议使用时工作,即:I2C_MasterTRBInsert(2,…然后它将在写和读传输之间执行重复开始信号。但是,如果3 transfer操作在两者之间没有延迟地排队,第二个传输失败。附件是一个使用我修改的I2C驱动程序的程序项目。相同的传输顺序是:I2C_MasterWriteTRBBuild(...);I2C_MasterReadTRBBuild(...);I2C_MasterTRBInsert(2,...);d(writeI2C,1,readI2C,1,&I2C_ADDR_ACCEL,&I2C_WRflag)两者都使用重复启动信号。我在PIC16F1718上运行了示例程序,为PIC16F1825构建了一个配置并在模拟器中启动它,我没有真正的MMA8353加速度计,因此不能正确地测试它。Mysil
|
|
|
|
|
|
Mysil,我还没有让你的代码工作干净。为了更大的代码空间,我迁移到PICF18326。我应该能够以某种方式使用EMASTER SLIV2CYMSSP.ZIP并拥有MCC构建自定义API吗?虽然我并不需要这个项目的全部ISR利益,但我想把它用于未来的项目。我被测试项目卡住了,不能附加它,但是这里有一个临时链接。
|
|
|
|
|
|
嗨,我已经从提供的链接中检索到了您的问题项目,并将对其进行调查。作为一个相对较新的成员,在ForumPIC18326中允许您做什么方面可能存在许多限制,这些限制与14pin包中的其他设备和其家族中的其他设备在许多方面相似。能够将I2C_Master_SSP.c和I2C_Master_SSP.h together与您自己的代码一起使用,并且与MCC生成的代码一起使用。这两个文件用于替换MCC可能生成的i2c.c和i2c.h。但是MCC不能修改I2C_.文件:I2C_Master_SSP.c和I2C_Master_S_S。根据设备之间的差异。一些设备有2个MSSP硬件模块,而有些只有1。在一些设备中,MSSP模块没有作为寄存器名称的一部分的编号,而在其他设备中,MSSP模块编号为1和2。然后一些设备具有PPS,而其他设备具有用于I2C.W的固定引脚。在更换设备时,尤其是从没有PPS的设备更改为需要PPS设置的设备时,让MCC为包括I2C在内的新项目生成代码,然后用消息#11中的项目文件替换i2c.c和i2c.h可能是最容易的。N.MCC.C和CultTyManger-Mr.CrgARDS,Mysil
|
|
|
|
|
|
嗨,这是下一个尝试。我用PIN RC0和RC1介绍了I2C1的PIN设置和PPS设置。驱动程序设置为I2C标准模式100千比特/秒,系统频率为32兆赫。
|
|
|
|
|
|
嗨,Mysil,我下载了你的项目代码,发现你在I2C.c中添加了很多代码。MCC生成的原始代码不能工作?我已经尝试了几个星期来编写I2C扩展器MCP23017,但是仍然不能工作。也许我会回滚到XC8 V1.33并使用旧的库。
|
|
|
|
|
|
嗨,MCC为I2C生成的原始代码如果使用正确和仔细,就可以正常工作。我第一次尝试时,它确实对我有效。但是,如果出现错误,或者在前一次传输完成之前请求新的传输,那么它可能进入一个未解决的锁定。PIC设备类型是什么?使用?MSSP I2C外围设备在大多数8位PIC设备中非常相似,因此可以谨慎地重用I2C代码。有一个带有不同PIC18设备定义的头文件,但是它没有为新设备类型更新。Plib也有用于相同功能的宏定义和功能代码。这可能会导致一些混淆。宏可能更有效,但在调试时更困难和混乱。在PIC中使用I2C代码基本上有两种不同的方式。这通常将占用处理器直到传输完成。Plib函数不检查错误标志,因此任何错误情况下的恢复必须是应用程序代码的一部分。这可能是最容易理解和调试的,并且在本论坛中有几个线程显示这种代码e.不幸的是,许多示例代码在处理错误或干扰时都有捷径和错误。在不需要时阻塞CPU。MCC生成的代码就是这样的驱动程序。应用程序代码仍然必须检查驱动程序的状态,知道何时读取数据可用,知道是否发生了驱动程序无法处理的错误,以及知道何时继续进行进一步的传输请求。调试这样的驱动程序稍微复杂一些。对于某些PIC16和PIC18设备,还有另一个修改I2C驱动程序的线程:http://www.micro..com/for./FindPost/985254大多数代码都是示例,但是对于MCP23017没有特定的示例。
|
|
|
|
|
|
我成功地使用了MCC I2C例程,但是同意需要特别注意,因为每个案例/应用程序可能需要特殊考虑。我发现一个有用的事情是在执行语句时添加超时,比如:如果发生超时,我执行I2C恢复例程并选通scl行。这允许从诸如保持sda或scl低之类的故障中恢复以模拟故障。
|
|
|
|
|
|
嗨,Mysil,RAMaston,谢谢你的帮助。我想用PIC18F14K50从I2C扩展器MCP23017和RTCC MCP97410获得值,并通过USB与PC机通信。我使用最新的MPLAXv4.15和MCC v3.45.1。我的问题是,我们有没有MCC使用I2C的逐步指令?我相信有很多工程师/开发人员需要知道。也许一些教科书或应用笔记会有帮助。我不知道从哪里开始。我的MCU永远在I2C1MaseQueGuang-Purrim.我需要知道在I2C1总线碰撞中我必须放入什么。我花了一个星期的时间在这个网页上搜索,仍然做不到。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:51 , Processed in 1.297806 second(s), Total 104, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2621