打印
[其它应用]

MODBUS协议 485通讯问题

[复制链接]
769|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenjunt|  楼主 | 2020-12-1 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SH79F3283 用了计算法和查表法来进行CRC校验,但是两种方法都没有的到我想要的结果

使用特权

评论回复
沙发
lium| | 2020-12-1 23:03 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
chenjunt|  楼主 | 2020-12-1 23:10 | 只看该作者
uint16_t getcrc16(uint8_t *puchMsg, uint8_t usDataLen)   
{
        unsigned short tmp = 0xffff;
        unsigned short ret1 = 0;
        int n, i;
        for(n = 0; n < usDataLen; n++)
        {
                tmp = puchMsg[n] ^ tmp;
                for(i = 0; i < 8; i++)
                {
                        if(tmp & 0x01)
                        {
                                tmp = tmp >> 1;
                                tmp = tmp ^ 0xa001;
                        }
                        else
                                tmp = tmp >> 1;
                }
        }
        ret1 = tmp >> 8;
        return (ret1 | (tmp << 8));
        
//    uint8_t uchCRCHi = 0xFF ;
//    uint8_t uchCRCLo = 0xFF ;
//    uint8_t uIndex = 0;
//    uint16_t crc_data;   
//      
//    while (usDataLen--)
//    {   
//        uIndex = uchCRCHi ^ *puchMsg++;
//        uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];   
//        uchCRCLo = auchCRCLo[uIndex] ;
//    }   
//        crc_data = uchCRCHi;
//        crc_data =  crc_data << 8;
//    return (uint16_t)(crc_data | uchCRCLo) ;
}        
我输入的数据是uint8_t    rx_buff[8] = {0x01,0x03,0x00,0x01,0x00,0xd5,0xca};
返回的数据应该的是01 03 02 03 E9 79 3A 才对,但是两个方法的返回值的第一位分别为04和02,其他的都能对应上,数组也没有超限

使用特权

评论回复
地板
llia| | 2020-12-1 23:13 | 只看该作者

01 03 00 01 00 D5 CA
输入7字节。
Modbus CRC16校验(查表)计算结果:D4C8

使用特权

评论回复
5
chenjunt|  楼主 | 2020-12-1 23:17 | 只看该作者
我只是对前5位校验,可是为什么校验完了之后第一位数据会被改变?

使用特权

评论回复
6
zhuhuis| | 2020-12-1 23:20 | 只看该作者
溢出造成的?

使用特权

评论回复
7
chenjunt|  楼主 | 2020-12-1 23:27 | 只看该作者
我将数组扩大了好几倍,应该不会是溢出造成的

使用特权

评论回复
8
happy_10| | 2020-12-1 23:31 | 只看该作者
不知道是哪里错了

使用特权

评论回复
9
chenjunt|  楼主 | 2020-12-1 23:35 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

7868

帖子

5

粉丝