完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我现在在项目的通信部分。我计划使用I2C总线与EEPROM和一些外围设备进行通信。我在考虑使用高级功能。在我以前在PICBASIC PRO上开发的项目18F中,我们有这样的功能,I2CcDead。我们只需要指定要传输的从地址和数据,一切都是自动完成的。我现在使用带有XC16的24F,并且试图不重新发明轮子,但是24FRM库示例在位级别上工作,而MCC生成(像往常一样!)吨功能解密!是否有一个高级函数相当于我的旧的和非常方便的I2Ccript?谢谢你的帮助。
|
|
相关推荐
19个回答
|
|
|
嗯,编写自己的代码并不难,我想你可以在这个论坛或者从老PLIB的源代码中找到很多类似的代码。或者,正如我总是重复的那样,采用一个有点混乱的I2C解决方案。
|
|
|
|
|
|
嗨,实际上每次都这样做有点困难。我在PIC16、PIC18、PIC32MX和PIC32MM上用了半年的时间做类似的事情。我想我可能在一周内有PIC24的东西。至于现在,我认为MCC生成的代码可能仍然存在。最好的起点。即使MCC生成的代码也有几个缺点,但是如果您的程序没有更好的事情可做,那么等待I2C硬件传输数据,然后等待EEPROM完成其内部写操作,它可能工作。rpose是I2Cx_MasterWrite,函数名的第一部分可以是I2C_、I2C1_、I2C2_或I2C3_这取决于硬件以及您在MCC菜单中做了哪些设置。莫里,当有数组要传输时,这很愚蠢。这不但会花费比需要的时间更多的时间,而且会造成EEPROM单元上的更多磨损。那么真正的硬件EEPROM内存的限制是,每次只能在一页内进行写入。这就需要一些算法和测试。g在写之前在EEPROM地址上。不要被MCC生成的那些您不需要的函数所耽搁。像所有通用库代码一样,总有比您需要使用的函数更多的可用函数。因为MCC将代码复制到程序源目录中,而不是加载。从库存档文件中预先编译的对象,它更为可见。由于这些函数存在于项目源中,所以链接器可以创建关于未被调用的函数的警告,假设它是您出于使用目的而创建的,但是由于输入错误或其他原因而丢失的。注释,或者删除您不需要的功能。如果您曾经为PC编写过任何类型的程序,那么就不需要1000倍的功能。
|
|
|
|
|
|
CinziaG,Mysil,非常感谢你的回答。这个项目的一个主要元素是时间。开发时间第一:我没有时间去探索I2C中的所有东西。许多工作要做,包括电子、机械,而且在6月份之前一切都必须准备好。因此,即使重写和优化驱动程序在智力上是有趣的,我还是喜欢使用已经可用的东西。执行时间:我必须写到EEPROM,并且从EEPROM读取非常少的字节(100?)这不是时间的关键。但有时我必须读取I2C总线上的传感器,同时我必须处理每隔10微秒就会出现的高优先级中断!很多乐趣和时间花在调试这个。Mysil,MCC接缝是最好的方式。这有点可怕,我不能理解每一个细节,但结构很好,可能是我在网上发现的所有东西中最好的。这是一个很好的开始的基础。我让你了解我的进步。
|
|
|
|
|
|
好啊!即使您的I2C任务每10uS被中断,也不会有问题,因为I2C是同步协议(您是主协议)
|
|
|
|
|
|
几年前,我用I2C读写了EEPROM,挣扎了2个星期。无法使I2C子系统在PI24芯片上工作,因此我改为采用位爆炸式方法,并在不到一天的时间内使工作正常。Bit-bang还有一个优点,它在各种硬件上都能工作……也许这些帖子和线程可以帮助解决主模式下的位ban.I2C:I2C问题。我的EEPROM是如何连接到PIC24只使用2个引脚和2个电阻:我的代码可以在这个剪辑从我的源文件中看到:
|
|
|
|
|
|
这个论坛是浪费时间!花了30分钟准备一个帖子,得到了“拒绝访问”!简言之,PIC 24 I2C确实起作用,,
|
|
|
|
|
|
嗨,Les,看起来不错,但是这些函数是在哪里定义的呢?凯尔特
|
|
|
|
|
|
同样的问题
|
|
|
|
|
|
在我的BITBANG建议中,你有:这就是写和读EEPROM芯片所需要的一切……
|
|
|
|
|
|
像以前一样,我把它都打字了,然后提交,只是为了得到“拒绝”,这么长的帖子丢了!!!!我再试一次,但可能缺了一些。我不是一个程序员,我是一个通常被称为“制造商”的人,我的C是c**p,我知道,但它可以工作……这是针对PIC24FV32KA302的。
|
|
|
|
|
|
我通常反对为家庭作业或大学相关课程免费赠送礼物,因为我总是熬夜试图做每一件可能的小事。老实说,如果你阅读了关于这些东西的用户手册,它会告诉你实现I2C需要做的一切,但是没有代码。您的寄存器标识符/名称可能不同,就像PIC24F的不同风格一样。而且,并非所有的I2C设备接口都相同,您需要查阅EEPROM数据表作为示例。大多数EEPROM都非常简单,只有高字节地址和低字节地址,而其他EEPROM可能有页面,这变得更加困难,因为您需要对齐内存并跟踪您在地址空间中的位置。
|
|
|
|
|
|
大家好,很高兴看到这些贡献!现在的困难是做出选择。坦白地说,我不喜欢有点混乱的解决方案。我已经支付了所有这些PIC寄存器!格林先生:我想用它们!更严重的是,应该验证打包的和/或集成的解决方案,因此为用户提供较少的缺陷机会。当然,我并不是说其他解决方案不能奏效。只是感觉和经验的问题。(抱歉,没有长白胡子的笑脸…)MCC提供这种东西,但是我不能轻易地读这种C。对我来说太微妙了。所以我选择从Microchip建议的库开始。由于一些没有用的宏,所以它有点晦涩,不能带来真正的附加值,但是一旦被更传统的代码所取代,它看起来就更好更全面了。它现在开始工作了。然而,SCL和我的逻辑分析器看起来很奇怪(很少转换)。我需要更深入地研究这个问题。我会随时通知你的。
|
|
|
|
|
|
下载参考文件。代码很小。这就是她写的全部内容。
|
|
|
|
|
|
嗯,我必须承认官方产品也有缺点,并不像他们应该的那样可靠。人们可能会认为Micrcohip Library的功能在PIC 24F上可以毫无问题地工作。至少在我的情况下,情况并非如此。我花了几天时间试图正确阅读EEPR。使用PIC(24FJ64GA102)进行OM(24AA08)。我发现了与几个成员相同的问题:只有从EEPROM接收的FFh,在读数结束时没有停止条件,并且解锁情况所需的硬件复位。Mastergets函数当然是关键,但是我没有更多的时间去挖掘。再看看到底发生了什么,所以,没有办法去图书馆。我有一个非常吸引人的解决方案。BobAGI。我要试试看。
|
|
|
|
|
|
我以前没有在这里写过它,但是我使用bit bang I2C的原因是我花了一个多星期的时间试图让外围库工作。看起来,I2C子系统在我部分内部有一些硅错误(PIC24FJ256GB206)。然后,当我获得到上面显示的位爆炸页面的链接时,我让它在大约一天的时间内工作。短延迟。存在一个编译器内置的延迟函数,可以替代使用:u._us(1);它要求文件顶部的include语句包含这个(对于C30编译器):include
|
|
|
|
|
|
它起作用了!非常感谢大家和BobAGI。安装了几分钟。按照我的建议,我已经用库中的官方延迟函数代替了延迟函数。我必须在I2C模块的顶部定义我的工作频率:定义FCY16000000UL,我的情况是16MHz。我现在要设置SPI通道。我希望它不会那么困难,但通常是简单的。
|
|
|
|
|
|
LOL:LOL:
|
|
|
|
|
|
我已经在以下条件下做了一些频率测量:-FCY=16MHz-和_u._us(1)或_u delay32(12)的延迟函数(同样的)得到的SCL频率是285kHz。我不知道它是否适合我的应用。我需要进一步了解我的发展。当用Nop()替换_u._us(1)时,SCL的一个频率达到500kHz,但我怀疑一些读/写错误。如果需要更高的频率,需要更精确地检查。Kelt
|
|
|
|
|
|
谢谢分享测量。我以前没有使用内置的延迟宏,现在我没有硬件来测试它几天。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 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 09:12 , Processed in 1.120645 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3606