Microchip
直播中

张坤

8年用户 180经验值
私信 关注
[问答]

怎么使用PIC24硬件进行CRC计算?

经过数小时的工作,在论坛上阅读了所有的文档和tpoics之后,我很高兴地宣布,我得到了(这里有些咒语)正在运行的东西。(给我几个小时)为什么单字节的进食只能用一个看起来很模糊的PoTcCask呢?为什么16位或32位CRC的最后一个字节必须手动计算,不能通过硬件?为什么不存在CRC硬件的简单重置?谁只运行无用的软件例子?绕过以上几点,结果在速度和内存消耗方面都很好,如果可能的话应该使用它。这是我的源代码,到目前为止一切都运行得很好。这是头文件“YourNamedCRCWhatEver.h”的代码,或者把它放在第二部分前面。EST:请使用此代码不伤害任何人或动物,生活在和平中!最好的选择

回帖(13)

陈晨

2020-4-2 08:33:43
我认为MCC可能会为此生成代码,您可以尝试一下,看看它是否相同。另外,我还记得过去有一篇帖子,上面报道了工作代码。如果你想搜索。
举报

丘素莉

2020-4-2 08:52:00
在您的代码中可以看到这个注释……“CRC引擎只能处理16位,所以只能处理偶数数量的数据。”这对于PIC33FJ来说是(某种程度上)正确的,但是PIC24(增强型CRC)能够用字节数据执行16位CRC poly。奇数字节……用于Modbus CRC。T Yorky。
举报

杨伟

2020-4-2 09:08:30
我自己从来没有用过它,但我对以前关于这个主题的线程的“iffy”记忆是,只有当计算与其他操作重叠时(例如,计算CRC,同时传输字节),才能从H/W获得真正的速度优势。在闭锁回路中单纯地执行CRC比S/W的优势小。
举报

戚银燕

2020-4-2 09:19:00
NKurzman,谢谢你的提示,我不知道MCC能够工作得那么深。我生成了代码,并且可以验证它是否对CRC32执行了正确的计算。我喜欢用状态机生成的代码,并与我的生成时间相比较:-)生成的co确实比我做的更好,避免了最后的手动换档。我很快就会理解这个过程,希望很快更新我的解决方案,但是产生的代码的内存使用不太好。负责非优化设置,输出列表如下,总计1605字节。这比我用于CRC 8、16和32的三个函数总共使用的数量要多,即1287。T Yorky:对不起,我关于16位输入的快速演讲。我在CRC8实现中显示了8位输入。我的理解是(但是上面说错了)数据宽度与多项式长度的关系更密切。Chris A:在我的测试中,我也想到了这一点,即“.”循环用于其他任务,可以提高整个系统的速度。为了验证这个想法,我在所有的循环中放置了“CNTWAIT+++”语句。令人惊讶的是,它最终以“2”的数量结束。这可能是在不同的振荡器频率,比我的大约10MHz。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分