查看: 8401|回复: 13

[其他] 关于FlexRay头帧CRC计算方式

[复制链接]

该用户从未签到

9

主题

38

帖子

0

新手上路

Rank: 1

积分
96
最后登录
1970-1-1
发表于 2011-5-24 20:56:47 | 显示全部楼层 |阅读模式
因为FlexRay头帧CRC是需要事先计算好的,我自己试了一下,结果不对,请懂的大侠帮忙解释一下。谢谢!
我知道答案 目前已有13人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    373
    最后登录
    2023-8-16
    发表于 2011-5-25 10:04:55 | 显示全部楼层

    RE:关于FlexRay头帧CRC计算方式

    CRC是由硬件计算的,不需要人为计算,是不是可以把数据发出来看看,具体说明一下。
    该会员没有填写今日想说内容.

    该用户从未签到

    9

    主题

    38

    帖子

    0

    新手上路

    Rank: 1

    积分
    96
    最后登录
    1970-1-1
     楼主| 发表于 2011-5-26 08:43:58 | 显示全部楼层

    RE:关于FlexRay头帧CRC计算方式

    作为FlexRay的发送节点,其FlexRay的头部段CRC是由用户在线下自行计算的。因为在设计之初,头部段已经完全确定了,所以由通信控制器自行反复计算是在浪费硬件资源。
    按照FlexRay协议V2.1上的计算方法是可行的,只是vNextbit的意义在示例代码中不同位置的意思是不一样的。我昨天终于明白了。呵呵

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    0
    最后登录
    1970-1-1
    发表于 2011-8-11 15:24:29 | 显示全部楼层

    回复:关于FlexRay头帧CRC计算方式

    回复第 3 楼 于2011-05-26 00:43:58发表:
    作为FlexRay的发送节点,其FlexRay的头部段CRC是由用户在线下自行计算的。因为在设计之初,头部段已经完全确定了,所以由通信控制器自行反复计算是在浪费硬件资源。
    按照FlexRay协议V2.1上的计算方法是可行的,只是vNextbit的意义在示例代码中不同位置的意思是不一样的。我昨天终于明白了。呵呵
    你好,能说详细一点儿吗?谢谢,我也在为头部CRC校验困扰着,谢谢啊。
     

    该用户从未签到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    15
    最后登录
    1970-1-1
    发表于 2012-11-26 13:21:46 | 显示全部楼层

    RE:关于FlexRay头帧CRC计算方式

    那KeySlot头部的CRC是不是也要自己计算啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    7
    最后登录
    1970-1-1
    发表于 2013-9-23 22:17:47 | 显示全部楼层

    回复:关于FlexRay头帧CRC计算方式

    能否详细的讲解一下如何计算的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    7
    最后登录
    1970-1-1
    发表于 2014-7-11 11:40:28 | 显示全部楼层

    回复:关于FlexRay头帧CRC计算方式

     int main(void)
    {
             unsigned int vCrcReg =0x1A;
             unsigned int vNextBit=0;
             unsigned int vCrcNext =0;
             unsigned int vCrcSize =11;
             unsigned int vCrcPolynomial =0x385;
             unsigned int mask=1;
             unsigned int vCrcRegTemp=0;
             unsigned value = 0x00809;  //s1=0,s2=0,FID=9,payloadlenth=16 
             int i=0;
             for(i=0;i=0)
             {
                     vNextBit = (value &(0x01u >i;
                     vCrcNext = (vNextBit)^((vCrcReg & (0x01u (vCrcSize-1));
                     vCrcReg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    4
    最后登录
    2014-11-16
    发表于 2014-11-16 15:22:00 | 显示全部楼层
    jizhouyou 发表于 2014-7-11 11:40
     int main(void)
    {
             unsigned int vCrcReg =0x1A;

    我也遇到了同样问题。我感觉Flexray那个算法有问题?能否给帮我分析下那个算法?谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    16
    最后登录
    2021-4-9
    发表于 2021-4-8 22:43:20 | 显示全部楼层
    大家好,方便把flexray header crc 完整源码发出来吗?谢谢
    NXP官方文档就不是给人看的。发个代码很简单的事,非搞得那么复杂。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    16
    最后登录
    2021-4-9
    发表于 2021-4-9 10:43:53 | 显示全部楼层
    unsigned int MyFlexrayCrc(unsigned int shData , unsigned char bBitCount , unsigned int vCrcSize , unsigned int vCrcReg , unsigned int vCrcPolynomial  )
    {
        int iLoop = 0x00;
        unsigned int vNextBit = 0;
        unsigned int vCrcNext = 0;

        for(  iLoop = 0x00 ; iLoop < bBitCount ; ++iLoop )
        {
            vNextBit = ( ( 0x00000001 << (bBitCount - 1 - iLoop) ) & shData ) >> (bBitCount - 1 - iLoop);
            //qDebug("Corrent Bit[%04d]:%d",iLoop + 1,vNextBit);

            vCrcNext = vNextBit ^( ( ( 0x00000001 << (vCrcSize - 1) ) & vCrcReg ) >> (vCrcSize - 1)  )  ;

            // Shift the CRC register left by one bit
            vCrcReg = vCrcReg << 1 ;

            // Apply the CRC polynomial if necessary
            if( vCrcNext != 0x00 )
               vCrcReg = vCrcReg ^ vCrcPolynomial ; // end if
        } // end while loop
        return vCrcReg;
    }
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-4 11:12 , Processed in 0.139659 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表