完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我不能坐公共汽车去做任何事。我已经验证过,我可以手动设置TRIS位以输出和切换作用域上的引脚,所以这不是硬件问题。我所要做的就是一个简单的I2C写入字节到一个地址。和谐的功能在公共汽车上似乎什么也不做。我不知道该打什么,什么时候写。在过去,我曾使用过传统的PLIB图书馆:十年来,它一直完美无缺地工作。到目前为止,我试过这些图书馆,但没有成功。要么不做什么,要么抛出一个例外。最大的问题是我要调用什么函数?我需要先在某处初始化吗?HARMony在静态模式中似乎没有包含任何in it代码,但是仍然有我添加到in it区域中的in it函数,以求获得良好的度量。我觉得我应该只使用这行代码:但是什么也没有发生……我真的需要把这个打包。和谐已经把一个2周的项目变成了2个月的项目。这是进步吗????
|
|
相关推荐
8个回答
|
|
|
通过示例应用程序,那里应该有一些代码。触摸芯片是I2C,可能还有其他一些。注意,引脚设置可能会有一个步骤丢失。您可能需要查看寄存器设置,以确保它们是正确的。我猜想你有拉起。我不使用I2C的和声驱动程序,这总是一个选项。
|
|
|
|
|
|
我仔细查看了样本,这就是代码的长块本质上来自的地方。我不想使用Harmony驱动程序,但我的旧代码都不能工作,因为它是为“遗留”驱动程序编写的,并且我甚至不能让项目在启用它们的情况下进行编译。它抱怨它找不到像“OpenI2C2”之类的功能。硬件不是问题。我已经让这个板在旧的MPLAB非X环境下和旧库一起工作了一段时间,我只是没有让USB MSD工作。但是其他一切都正常,对不同芯片的I2C事务,SD卡的SPI,音频的PWM输出,所有的GPIO等等。2个月后,只是为了让Harmony做点什么。旧的PIC代码使用和读取都很简单。这种新东西太可怕了。它花费了我很多时间和金钱,而且样例应用程序根本没有帮助。所以,如果有人有想法的话,我会问一下。
|
|
|
|
|
|
旧的外围库只是设置寄存器的薄包装。您可以获得PIC数据表,而章节章节将在几小时内重新创建这些功能。使用静态I2C驱动程序构建测试应用程序可以为您提供一些帮助。它将给出和声PLIB函数的名称。旧的PLIB与这些功能之间应该有一定的对应关系。在和声帮助中会有一些关于他们的信息,但并不多。和声驱动程序被设计成处理多个用户和多个奴隶。不是一个用户对一个奴隶。
|
|
|
|
|
|
99%的I2C工作是“一个用户一个奴隶”…
|
|
|
|
|
|
我基本上已经否认了和声和MPLABX在这一点。我回到MPLAB 8.83,它只是工作。我在短时间内得到了在其中工作的代码的USB & GT;MSD的一部分,其余的遗留代码也只是工作。在我的例子中,我确实有2个I2C从程序和1个主程序,但是遗留程序库也非常简单,因为您只需要传入一个地址并告诉它读/写/开始/停止。这就是我想要的全部抽象。我一直是Microchip和PIC生态系统的巨大支持者,因为事情简单而美好,很容易让项目快速启动。现在很可怕。我不知道应用程序的人在那里吸烟,但他们需要削减。不要试图用代码变得可爱,只需制作真正有用的代码即可。
|
|
|
|
|
|
嗨,你用的是PIC32?哪个和声版本?当做
|
|
|
|
|
|
在Plib for PIC32MX中,实际上有两组用于I2C的函数,并且它们易于使用和理解。一组与PIC24及其兄弟姐妹的类似函数兼容的函数。在我看来,用于I2C的Plib函数是有用的,尽管可以直接执行相同的操作,但是可以寻址SFR寄存器。由于库和源代码不再与编译器一起分发,因此可以单独下载。然而,与早期版本的XC32编译器和C32编译器一起,还有一组简单的例子展示了Plib的使用。在单独的Plib下载中,这些例子不再出现!通过定义一些具有与先前Plib类似的功能的阻塞原语和一些非阻塞原语来尝试协调性,但是由于不理解或遵循I2C规范或PIC数据表中定义的术语而搞砸了它。C总线是空闲的,相反,它检查本地控制器是否完成了以前的操作。虽然这是一个有用的函数,但它不是名称的承诺。另一个例子是……函数在一路上被改变,而不是等待,而是在需要更多等待的情况下返回状态。相反,和谐为创建多个I2C通道的非阻塞事务队列驱动程序付出了大量的努力。Quar高质量的驱动程序代码,我的印象是它们还不存在。一个非阻塞的驱动程序可能比简单的阻塞设备访问功能更复杂。Microchip代码配置器(MCC)也适用于几个PIC32 MX设备。MCC没有简单的块。I2C接口。它在I2C上有一个简单的任务队列驱动程序,它在PIC32 MX、PIC24、DSPIC、PIC18和PIC16设备上有相同的API。它确实为我工作,这是我第一次尝试,但是后来我发现了一些缺点。MCC和Orthon对于I2C函数有不同的API名称和参数列表。关于,Mysil
|
|
|
|
|
|
DRVIII2CY传输函数是正确的。但是,它只是将事务放到驱动程序的缓冲区中。在您的示例代码中,接下来要做的是关闭I2C驱动程序。不同之处在于旧代码是阻塞的。如果需要阻塞应用程序直到完成I2C事务,可以简单地等待DRV_I2C_TransferStatusGet函数返回DRV_I2C_BUFFER_EVENT_COMPLETE或DRV_I2C_BUFFER_EVENT_ERROR。允许驱动程序发送命令、读取数据或两者,然后向I2C总线发送一个停止。困难在于,如果阻塞应用程序,那么其他系统状态机都不能获得cpu时间。我希望这能有所帮助。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
454 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3529 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1094浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
460浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 16:23 , Processed in 0.818847 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1769