有没有速度快的四线crc16的算法|已解决
sd卡在四线写的时候,要在最后在每一条线上发送每条数据线对应数据的crc16.我只有单线crc16的代码,需要把发送的数据按发送格式分别写到四个缓冲区里,再分别计算对应crc16。有没有比这个方法快的2025/1/26:方法在下面的帖子里
针对模拟SDIO中的CRC算法优化 - 其他技术交流 国芯技术交流网站 - AI32位8051交流社区
能否详细说说你的痛点?
你指的是CRC16算法太麻烦?还是这128次循环太麻烦?为什么要把数据这样排列呢 VCC 发表于 2024-11-15 00:19
能否详细说说你的痛点?
你指的是CRC16算法太麻烦?还是这128次循环太麻烦?为什么要把数据这样排列呢 ...
就是128次太麻烦了,不知道有没有一次就可以算完的 zrl 发表于 2024-11-15 00:41
就是128次太麻烦了,不知道有没有一次就可以算完的
大概推演了一下,你代码里是把每4个字节重新排列成了新的4个字节
8051指令集里确实并没有这样的指令可以一键完成这件事。但你的代码仍然有一些优化空间
例如可以将左右移运算符替换为按位逻辑与,结合if else运算符。8051在执行这个操作时会快一些
例如在重复处理arr0~arr3时,提前将数据存入8051的bdata区,将数据按位直接访问处理 有点好奇, 既然要求按每一路求 CRC16, 那么最后求出的 CRC0~CRC3 , 如何再发送出去? 难道再次打乱组合成 单路串行模式 发送?
本帖最后由 soma 于 2024-11-15 07:33 编辑
STC8H2K32U系列有硬件CRC16应该比较快 LAOXU 发表于 2024-11-15 05:37
有点好奇, 既然要求按每一路求 CRC16, 那么最后求出的 CRC0~CRC3 , 如何再发送出去? 难道再次打乱组合成 单 ...
不用,算出来就直接用对应数据线发送就好了,dat0发crc0,dat1发crc1 zrl 发表于 2024-11-15 10:13
不用,算出来就直接用对应数据线发送就好了,dat0发crc0,dat1发crc1
芯片用什么型号?
用 51没啥好方法再优化, 楼上的 转存 位寻址RAM中, 依靠位判断, 能提速, 但有限.
如用 251, 依靠算法, 能有较大幅度的提速.
神农鼎 发表于 2024-11-16 12:59
神农鼎老师,您没有审题,
他问的是CRC运算之前的QSPI数据预处理过程的优化
而不是CRC运算的优化
{:5_284:}
页:
[1]
2