完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我以前在PIC32MZ或HARMony中没有使用过I2C。查看PIC32MZ-EF系列错误表,硅问题#6影响所有硅修改,I2C外围设备有一些问题。虽然给出了一些解决方案,但是勘误表建议在各种情况下使用位绑定。查看v2.01b的和谐发布说明和内容,我发现I2C状态为Alpha,附注说明了外围或位绑定实现的各种限制。我必须选择:静态或内容基于I2C、PIC32MZ-EF和Harmony的经验,这些设置的一个组合看起来比另一个“更好”吗?我需要谈谈从我的PIC32 MZ和谐项目MC23017系列(I2C)16 GPIO扩展器。更新速率不会太快,所以我会尝试保持通信& lt=100千赫兹,以尽量减少错误的问题。
|
|
相关推荐
17个回答
|
|
|
对于100Khz以下的短数据长度的EFH芯片,使用HW外围设备没有任何问题。但是在正常的CPU速度下,它也可以位爆。在我看来,和声驱动器过于复杂,其中一些仍然有缺陷。我不使用它们,所以不能告诉你哪一个是最好的。对于代码的一部分,在一个I2C总线上一次使用一个外围设备,您可以使用静态。它将代码复制到项目中。然后,如果需要,可以修改代码,但是和声看起来更像动态。可以处理发送不同总线的代码的多个部分。沟通是复杂的,没有很好的记录。因此,请看示例代码。触摸屏控制器是I2C。
|
|
|
|
|
|
谢谢你的详细答复。我同意和谐驱动程序是复杂的,但至少他们的设计是一致的。我选择使用什么——例如,我不使用USAT驱动程序,但我成功地使用了SPI驱动程序。更不用说TCP/IP和USB,这真的很难没有和谐。噢,顺便说一句,即使在动态模式下,我也可以修改代码——我在“种子”项目中执行所有代码生成和实验,但我真正的固件是一个单独的目录,在这里我只手动复制必要的Harmony文件。这就像使用“独立项目”选项,除了它是按照我想要的方式策划和组织的,并且都在修订控制之下,所以对Harmony文件的自定义更改不会丢失。这是一个很大的工作,但我有100%个控制。归结为一个陡峭的学习曲线和耐心。但是以这种方式做事,我成功地运用了Harmony的很好的部分。无论如何,我很高兴听到HW外围设备为你工作(触摸屏是I2C)。这增加了我的信心水平。-)我决定继续实验,和IQualI2C驱动程序一起测试,看看是否能让MC23017工作。我将尝试50千赫兹,并在一个单独的I2C事务中一次发送一个寄存器,以避免可能的硬件问题。现在我正在编写代码来发送所有正确的比特到MC23017…我很快就会把我发现的关于I2C的帖子贴上去。再次感谢。
|
|
|
|
|
|
这就是我到目前为止发现的关于Harmony I2C驱动程序:传输函数填充队列,队列的定义大小为7。在排队6个项目之后,所有对传输函数的进一步调用失败。驱动程序似乎不会导致硬件外设实际传输任何东西,因此队列永远不会被清空。这可能是一个错误,在我的事情结束,或一些奇怪的驱动程序代码。我正在调查。使用的设置是:动态驱动程序,使用外围硬件(非比特敲击),中断模式。我需要验证MHC生成正确的中断处理程序代码,等等,哦,还有一件事…没有“发送完成”回调,我可以注册,就像SPI驱动程序一样。所以我正在查询DRVIII2CYSTATUSER(),看看写是否完成,但有东西告诉我,这可能是错误的检查方式。
|
|
|
|
|
|
你看到这些了吗?C:Microchip和谐 V2Y0BBApple 示例外设 I2CI2CyBuffTc:Microchip 和谐 V2Y0BBApp\驱动程序 I2CI2CYRTCCC: Microchip和声 V2YO0BAppGFXLCC
|
|
|
|
|
|
我看到了RTCC的例子,而不是另外两个。我会看看那些。到目前为止,我已经切换到位邦和谐驱动程序,因为hw版本似乎都搞砸了。位邦驱动程序充满了bug:1。注册完成后的回调函数时,上下文指针没有返回。定义了两个不同的上下文指针:一个用于客户端结构,一个用于缓冲区传输。我删除了缓冲区传输的一个,并更改了其他代码来修复上下文问题。2。当调用DRVVII2CX发送器()时,有一个更大的问题:它调用DRVIII2CYMistBuffer-WrreWeste(),其中调用StasTi2C.()。StId2c-()只实际启动I2C(启动定时器和ISR),如果SDA和SCL被拉高。它检查在这两个引脚上使用PLIB_PORTS_PinGet()。在启动并等待回调时,实际上没有启动回调,并且永远不会发生回调。除了重写I2C驱动程序之外,我正在试图找出一种修复此问题的干净方法。在PLIB_PORTS_PinGet()调用周围设置while循环不是一个选项,因为这可能会(而且很可能)无限期地阻塞。并且它不是只返回错误代码的选项,因为队列现在有一个项,并且这个驱动程序只处理队列中的0或1项。如果队列中还有其他问题,那么queueEmptyTest在DRV_I2C_MasterBufferWriteXE()中将失败。既然我试图使用此I2C驱动程序,那么我不得不同意您的看法,它是一团糟。实现过程很混乱,显然充满了bug,事情的状态可能陷入某种边缘,永远不会恢复。
|
|
|
|
|
|
嗨,欢迎来到这个俱乐部,我一直在尝试整理由MCC为PIC18和PIC32 MX设备生成的I2C驱动程序。一个好的、健壮的I2C驱动程序实际上需要相当多的注意细节和大量的测试。从一个上电复位开始,并不是那么复杂。一个I2C驱动程序在随机看门狗超时重置后工作,或者在I2C总线上热插拔一个设备的干扰,在一个10位和7位寻址的多主环境中工作,是一个完全不同的任务。来自飞利浦/NXP的CiStudio,涵盖了很多软件需要注意的窍门。
|
|
|
|
|
|
这听起来并不令人鼓舞。这是著名的:“我想做的就是和MC23017通话,打开和关闭iOS!”现在似乎是一个奥德赛只是为了让我的这部分工作。我们没有使用MCP23 S17(它是基于SPI的),因为我们的六个SPI通道都被其他东西占用了!(这块板非常大,非常复杂。)鉴于这两个部分(MCP23017和MCP23S17)都是已经存在多年的微芯片部件,并且它们作为GPIO扩展器很有用,所以令人惊讶的是没有可用的应用说明代码可以并入应用程序。有一份关于MCP23017的应用说明,但是它只是解释了零件的特性,没有提供任何示例代码来与任何家族的PIC进行交流。必须重新发明车轮是令人沮丧的。幸运的是,在我们的设计中,这是唯一的I2C零件,我们将从重新上电开始。集合。我们没有热插拔,多主机,甚至多奴隶。此外,我们的代码使用状态机逻辑来完成使用MCP23017之前的设置序列:我们在启动时将MCP23017RESET管脚低速驱动1ms,然后将其高速驱动,然后在开始正常操作之前配置其寄存器。因此,即使是棕色的复位,看门狗复位,或其他固件重新启动的情况应该是好的。听起来很简单!糟糕的是它不起作用。(然而)
|
|
|
|
|
|
当遇到I2C故障时,我总是建议一个简单、实用、有点颠簸的选项…总是工作!
|
|
|
|
|
|
嗯,你知道一个SPI大师可以和多个奴隶一起使用吗?
|
|
|
|
|
|
单个SPI主机可以与多个奴隶和多个芯片选择一起使用。但他有董事会,正如我指出的,你可以写你自己的I2C潜水员。硬件类似于任何其他PIC。和声驱动程序将向您展示对硬件的PLIB类型调用。或者你可以去登记册。只需输入你喜欢的、工作的、I2C代码你已经使用了很多年,或者你可以逆向设计和谐驱动程序。找出它们应该如何使用,然后调试它们。你的选择。
|
|
|
|
|
|
嗨,用I2C硬件外围模块进行I2C操作的简单原语,在现在遗留的Plib功能集合中,PIC32MX实际上存在两个变体。一组功能与PIC24和dsPIC设备的类似功能兼容,一组功能更针对c。创建一个更通用的非阻塞驱动程序。这些原语的源代码已从编译器发行版中禁止,并且可以作为单独的下载标记为Legacy Plib获得。更糟糕的是,相应的:plib_.,既不能与编译器一起获得,也不能在PARATE库下载,XC32 V1.31后的某个时间。并不是说它们曾经是优秀代码的示例,但是它们足够简单以便理解和使用。这些函数集合和示例都没有移植到PIC32MZ。作为Harmony的一部分,一些用于阻塞/非阻塞的字节级函数的原语在某个时间被定义,但是已经甚至比他们打算替换的功能更加不一致。更加混乱的是,PIC32MZ硬件被滑块错误所阻碍。其中一些已经通过牺牲一个I2C模块来补救中间的修改,以使硬件的其他部分工作。这使得一个I2C模块只能用于BITBUG。Mysil,
|
|
|
|
|
|
和谐有自己的图书馆。V1.09版本的I2C工作很好,我没有问题。V2.xx应该有一个完整的重写它们。对2版的快速测试表明他们工作了。如果你有自己的和声代码,我不会麻烦你。他们需要太多的清洁来建立坚实的基础。这当然是我个人的看法。
|
|
|
|
|
|
嗯,是的,我意识到了。但是设计者们决定利用所有SPI信道,因为这允许六个信道同时通信。
|
|
|
|
|
|
我认为选择是明确的:写我自己的Bang-Band功能,并完成它。和谐代码是残暴的,但我不责怪和谐开发者,因为他们告诉你它是“alpha”状态。无论如何,我给了它一个机会,希望它能对我起作用,因为我知道我可能需要调试/修复/重写它。
|
|
|
|
|
|
是的。:)
|
|
|
|
|
|
我确实责怪他们。多年来它一直是阿尔法。它成为一个借口,而不是仅仅做正确的事。你可以让我们看看HW。我有这两个和BITBAR因为EC芯片有更坏的问题。该芯片足够快,以100kHz或更快的BITBANG。
|
|
|
|
|
|
在Web上搜索,您可以很容易地找到免费的BIT-BANG I2C实现,可以很容易地适应您的设备。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1122浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:44 , Processed in 1.640412 second(s), Total 104, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1246