完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在研究一个单线协议的CRC,所以它只是一个第八阶多项式和8位数据宽度。而且为了更容易,CRC只剩下7或8个字节。所以阅读文档DS70346B,直到CRC结束,一切看起来都相当简单。该文档指出——“当计算完成时,模块将清除GO位并设置CRC中断标志(如果CRCISEL=0)。”到目前为止,我还没有使用中断,所以我只是在GO位上旋转,这与模块没有清除文档相反。有没有使用CRC模块的经验?如果能奏效的话,那就太好了。谢谢你的帮助。
|
|
相关推荐
4个回答
|
|
谢谢。所以我现在等待中断标志,而不是GO位,是的,这给了我一个结果。我说结果不是我所期望的,所以我把配置搞乱了。必须重新阅读,看看问题是什么。
|
|
|
|
因此,我已经指出了ISR标志,它正确地指示了CRC计算的完成。然而,由PIC CRC发动机计算出的CRC并不好。我正在使用一个单线标识符,这里我有:CRC|序列号|Family code0x05 0x00 0x08 0x03 0x72 0xc8 0x92 0x10。http://www.sunshine2k.de/coding/javascript/crc/crc_js.htmlBasic我选择“Input Reflected”和“Output.”放入一个定制的8位多项式0x31中,并输入数据字符串:0x10 0x92 0xc8 0x72 0x03 0x08 0x00Result 0x05I,将在这里粘贴一些测试代码。这是非常重复的,因为我试图计算1字节、2、3、4、5、6、7的CRC,以及完整的One Wire ID,包括One Wire设备中的CRC,所以它应该和零。只有一个字节被正确地相加。我以为我一定是把字节错误地装入了FIFO,但是文档指出:“输入数据被馈送到CRCDATL和CRDATH寄存器。根据DWIDTH位的配置,配置了CRCDATL和CRDATH寄存器的宽度。对于小于或等于16位的数据宽度,只需使用CRCDATL寄存器,并且忽略对CRDATH寄存器的任何操作。”凹陷):
|
|
|
|
谢谢du00001的回复,我知道我不太可能是对的,但是我确实认为描述CRC的文档中有一个错误,它不在Errata中。davekw7x确认的事实让我想到,也许我发现了RTFM不能工作的地方,因为手册是错误的。这只是一句话:“当计算完成时,模块将清除GO位并设置CRC中断标志(如果CRCISEL=0)。”UITE清晰,直,但它不是发生什么。无论如何,感谢DavkW7X它现在都在工作!再次感谢您的回复。
|
|
|
|
DavkW7X我欠你一些美味的饮料。这是最简单的事情,但我从来没有想过。当我试图写一个8位字节的时候,关于编译器编写一个16位值,到16位寄存器的要点是关键。然后用0x00字节结束。这两点就是为什么当我尝试用一个正在工作的字节进行CRC时,因为我在写8位字节后跟着0x00,完全出于偶然。所以就这些了,强制编译器写8位并加零,但是就像我说的,如果没有你的帮助,我肯定不会搞砸的。非常感谢你的帮助!
|
|
|
|
只有小组成员才能发言,加入小组>>
5238 浏览 9 评论
2028 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3204 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
774浏览 1评论
664浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
592浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
674浏览 0评论
574浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:20 , Processed in 1.353561 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号