• 关于瑞萨R7 的CANFD切换为经典CAN


            首先,R7的CANFD是兼容CAN通讯的,在R7芯片他们公用相同的寄存器,至于发出来的帧是CANFD还是CAN取决于协议的不同。

           CANFD是可变速率数据段为可变长度,扩展到64Byte,仲裁段和数据段的速率不相同。CANFD新增了FDF,BRS,ESI。FDF表示是CAN报文还是CANFD报文,为隐性时速率可变;BRS为位速率转换;ESI表示错误状态,主动错误发送显性位。

      在兼容性方面,CANFD兼容CAN。

            

             如上图所示为CAN的电平图一个位是由多个段的多个Tq组成,Tq多少由寄存器决定(8个Tq到25个Tq),CAN 电平为差分信号,绘制后的位为上述图1所述。

            关于速率和波特率的关系,现在市场上主流汽车的波特率还是500khz。

            正常情况下,大多数的CAN寄存器的波特率和采样点的关系如下

            波特率:波特率 = CAN总线时钟频率 / (1 + Time Segment1 + Time Segment2)

            采样点:采样点 =( 1 + Time Segment1)/ (1 + Time Segment1 + Time Segment2)

    这两个公式同时提到了Time Segment1和Time Segment2,所以说我们同时在寄存器中配置这两个段就可以满足,我们对总线波特率和采样点的要求,同时关于采样点我们一共有,同步段(sync_seg)、传播时间段(prop_seg)、相位缓冲时间段1(Time Segment1)、相位缓冲时间段2(Time Segment2)。同时注意还有一个段SJW(synchronization jump width)同步跳转宽度,是用来限定延长相位缓冲时间段1(Time Segment1),或者缩短相位缓冲时间段2(Time Segment2),所以一般SJW小于相位缓冲时间段2(Time Segment2),同步段(sync_seg)为一个Tq。

            在设置R7的CAN模式必须处于全部复位模式(Global reset mode),然后再发送和接收Buffer寄存器中对 FDF,BRRS位做隐性处理,此处设置寄存器的时候关于RCMC的位设置仍为1

            此时,关于数据段和和仲裁段的设置,当CANFD 的FDF,BRRS的设置取消后,关于数据段的波特率将不再使用,比如此时CAN总线时钟为40M,同步段1设置为59,同步段2设置为20,则波特率为500Khz,采样点在80%,设置经验值20个Tq的同步跳转段。

          

  • 相关阅读:
    企业管理的基本知识有哪些?如何梳理企业流程管理?
    C++学习笔记(17)
    图像数据噪音种类以及Python生成对应噪音
    Web3中文|元宇宙在商业中的最佳应用
    【附代码】使用Shapely计算点面关系
    java计算机毕业设计销售人员绩效管理系统源码+系统+数据库+lw文档(1)
    Spark案例实际操作
    自定义Maven Archetype模板工程
    【Koltin Flow(二)】Flow操作符之末端操作符
    行为设计模式之状态模式
  • 原文地址:https://blog.csdn.net/weixin_39807914/article/details/127948941