完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
经过数小时的工作,在论坛上阅读了所有的文档和tpoics之后,我很高兴地宣布,我得到了(这里有些咒语)正在运行的东西。(给我几个小时)为什么单字节的进食只能用一个看起来很模糊的PoTcCask呢?为什么16位或32位CRC的最后一个字节必须手动计算,不能通过硬件?为什么不存在CRC硬件的简单重置?谁只运行无用的软件例子?绕过以上几点,结果在速度和内存消耗方面都很好,如果可能的话应该使用它。这是我的源代码,到目前为止一切都运行得很好。这是头文件“YourNamedCRCWhatEver.h”的代码,或者把它放在第二部分前面。EST:请使用此代码不伤害任何人或动物,生活在和平中!最好的选择
|
|
相关推荐
13个回答
|
|
|
我认为MCC可能会为此生成代码,您可以尝试一下,看看它是否相同。另外,我还记得过去有一篇帖子,上面报道了工作代码。如果你想搜索。
|
|
|
|
|
|
在您的代码中可以看到这个注释……“CRC引擎只能处理16位,所以只能处理偶数数量的数据。”这对于PIC33FJ来说是(某种程度上)正确的,但是PIC24(增强型CRC)能够用字节数据执行16位CRC poly。奇数字节……用于Modbus CRC。T Yorky。
|
|
|
|
|
|
我自己从来没有用过它,但我对以前关于这个主题的线程的“iffy”记忆是,只有当计算与其他操作重叠时(例如,计算CRC,同时传输字节),才能从H/W获得真正的速度优势。在闭锁回路中单纯地执行CRC比S/W的优势小。
|
|
|
|
|
|
NKurzman,谢谢你的提示,我不知道MCC能够工作得那么深。我生成了代码,并且可以验证它是否对CRC32执行了正确的计算。我喜欢用状态机生成的代码,并与我的生成时间相比较:-)生成的co确实比我做的更好,避免了最后的手动换档。我很快就会理解这个过程,希望很快更新我的解决方案,但是产生的代码的内存使用不太好。负责非优化设置,输出列表如下,总计1605字节。这比我用于CRC 8、16和32的三个函数总共使用的数量要多,即1287。T Yorky:对不起,我关于16位输入的快速演讲。我在CRC8实现中显示了8位输入。我的理解是(但是上面说错了)数据宽度与多项式长度的关系更密切。Chris A:在我的测试中,我也想到了这一点,即“.”循环用于其他任务,可以提高整个系统的速度。为了验证这个想法,我在所有的循环中放置了“CNTWAIT+++”语句。令人惊讶的是,它最终以“2”的数量结束。这可能是在不同的振荡器频率,比我的大约10MHz。
|
|
|
|
|
|
如果你喜欢你的代码的大小,比使用他们的代码来修复你的代码。克里斯可能是正确的,如果你阻止进程,外围设备可能比软件解决方案慢。
|
|
|
|
|
|
在NKurzman发布之前,考虑到他的建议,我能够使用MCC生成代码中建议的技术改进代码。只有定义必须从我的OP。好消息是一个增加的速度,大约价格。与我最小的版本相比,100个单词的每个代码都有较大的代码。其思想是将16位的数据明智地馈送给fifo,但是如果给定了奇数数量的数据,则通过修改fifo宽度来区别对待最后一个字节。这将CRC计算量从大约850/s增加到1040/s。所以再次感谢大家的帮助!
|
|
|
|
|
|
有人能支持我让这个代码运行得好吗?我用这个代码做CRC32,但是结果与CRC计算器不匹配。如果我使用多项式0xFFFFFFFF和数据0xFFFFFF,结果必须是0x00000000。但是我得到的是0x11ABD912。mic是PIC24FJ256GA705。
|
|
|
|
|
|
嗨,TK50,我想你的define CRC32_INIT_NONDIRECT0x46AF6449是错误的。0xFFFFFF的“非直接”值可能是0x80000000,正如http://www.zorc.breitbandkatze.de/crc.html所说。希望这能有所帮助。问候Ekkehard
|
|
|
|
|
|
你是如何计算出0x800万的?编辑:好的,我明白了。但是无论如何,我的结果仍然是错误的。我现在得到的值是0xA000 000,0.0x800万是错误的。非直接值是1,然后我得到了正确的结果。所以我必须每次计算非直接值,当我使用另一个POLY时!?
|
|
|
|
|
|
TK50,不幸的是,是的,您必须使用“非直接”值,并且由于这个值取决于Polynom和Initial值,所以如果其中一个值发生变化,您必须重新计算这个值。注释。如果Polynome和Initial值在运行时没有改变,“non.”-Value的强制用法非常烦人,但最终是可以接受的。问候Ekkehard
|
|
|
|
|
|
嗨,当你使用其他数据和其他的多项式时,结果是否每次都匹配?比较一下withhttp://www.zorc.breitbandkatze.de/crc.html,我总是得到不同的值。
|
|
|
|
|
|
例如:uint32_t值=0xEFEFEFEFEF;value=CRC32HW(&值,4,0xABCDABCD);数据是0xEFEFEFEFEFEF;多项式是0xABCDABABEFCD;结果是0xABA556F1在CRC计算器中,它表示D207ED2B或6049E6A0(没有反向)。数据为0xFFFFFFF;多项式为0xFFFFFFF;结果为0x00亿;在CRC计算器上表示不同的值,见下面的PIC。
|
|
|
|
|
|
HKTK50,给定网站上的数据输入是一个普通的文本字符串。随后,你的输入“FFFFFFF”被转换成十六进制序列0x46/0x46/0x46,…与标记输出中指示的8个数据字节的量。Greetings Ekkehard
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 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 03:54 , Processed in 0.860492 second(s), Total 62, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1504