首页 > 编程知识 正文

can通信和485通信区别,can通信电平

时间:2023-05-04 15:09:24 阅读:172584 作者:3669

CAN通信细节概念KEL15和KEL30:KEL30是指提供基本功能性的电源电压,此电源模式下功能较少: KEL15指提供多功能的电源电压。 其中KEL15也被称为“IG ON”。 终端电阻)信号传输会产生回波、反射(驻波)等噪声,因此终端电阻的目的是消除噪声。 约120欧元(线束的阻抗为120欧元)。 ECU不等间隔分布是为了减少驻波。 驻波是什么? 在CAN矩阵中在各个节点处接收许多消息,这些消息用于检测通信丢失。 数据帧:需要8个字节。 这是在CAN网上传输的数据的长度。 can帧:标准帧、远程帧和数据帧。 远程框中没有数据字段。 标准帧是11比特标识符,扩展帧是29比特标识符。 数据帧格式: typedef struct{uint32_t StdId; //发送标准帧ID、扩展帧时。 无论uint32_t ExtId如何,希望发送//扩展帧ID、标准帧时。 uint8_t IDE; //你想发送标准帧还是扩展帧? uint8_t RTR; //您想发送数据帧还是远程帧? uint8_t DLC; //要发送的数据的长度。 uint8_t Data[8]; //要发送的数据。 } CanTxMsg; 如何向标准帧ID或扩展帧ID发送数据? 首先,我们知道STM32有14个滤波器组,每个滤波器组包括两个32比特可配置寄存器。 每个节点配置自己的过滤器组,以过滤不希望接收的标准帧ID和扩展帧ID。 过滤有两种方法。

屏蔽模式: CAN_FxR1和CAN_FxR2两个寄存器最后一个字节的1、2位(从0开始)为11 ) CAN_FxR1用于设定一致位,CAN_FxR2用于设定屏蔽位。 例如,如果CAN_FxR2的第二位为1,则表明只有接收到的ID与CAN_FxR1的第二位相匹配,您才有权对该节点进行质询。 如果CAN_FxR2的第三位为0,则表示即使接收ID与CAN_FxR1的第三位不匹配也可以访问节点。 其中节点表示设备。

列表模式: CAN_FxR1和CAN_FxR2这两个寄存器的最后一个字节的1、2比特(0开始)表示00:CAN_FxR1,CAN_FxR2这两个寄存器分别代表两个ID,这两个寄存器中的每一个

CAN控制器:用于将收发的信息转换为符合CAN标准的CAN帧信号,转换为CAN帧的步骤由软件完成,然后通过CAN收发器在CAN_bus上发送信号。

CAN收发器:将CAN控制器的逻辑电平转换为CAN总线的差分电平。

CAN总线上的逻辑电平:普通总线是隐性的(逻辑1 )。 显性优先顺序高于隐性。

逻辑电平0、1不是由对地决定的,而是由两条线上的电压差决定的。 逻辑0表示显性,逻辑1表示隐性。

优性(逻辑0 )是指CAN_H3.5v/CAN_L1.5v。

隐性(逻辑1 )是指CAN_H2.5v/CAN_L2.5v。

帧类型的数据帧由以下七个内容构成:1.帧开始SOF (低电平)2.仲裁区域3 .控制区域4 )数据区域5.CRC区域6.ACK区域7 )。 其中仲裁域表示帧的优先级,RTR比特为隐性级别; 控制字段(6bit )表示预约位长和数据长; ACK字段(2比特)表示1帧信号被正常接收,发送侧发送2比特的低电平,接收侧在正常接收时将slot比特设为高电平来发送1帧的信号;

错误帧:指示传输错误,并由can硬件发送; 过载帧:节点发出表示没有准备号码数据; 远程帧:各接收单元请求每个发送单元发送消息,其仲裁域的RTR比特处于优先级等级。 大小:大字节(Motorola )位于内存的低地址。

小字节序(Intel ) :低字节位于内存的低地址。

对齐上的处理由硬件处理,在ram中无论大小的边缘,在flash中只有大小的边缘。

以下是内存中大字节序和小字节序数据的分布图。

大结局:

小端序:

疑点CRC检查:数据链路层(CRC检查) CAN通信传输方式:异步传输。 在载波侦听组播/冲突检测(CSMA/CD ) )数据链路层(CRC校验)进行了介绍,这里不再重复,只介绍一种冲突的解决方法。 解决方法有多个。 这里在can线上称为“无损仲裁”。 仲裁机制以标识符为判断依据,标识符二进制数越小、优先级越高,仲裁机制越直接接收优先级高的消息数据。 但是,这里有疑问。 如果红绿灯相撞的话,红绿灯会不会受损? 上述解决方法如何可行?

如果CAN总线信号同步方案(位外)数据中出现多个连续的0或1,如果以波特率每秒对信号进行多次采样,可能会漏掉一个或多个0或1。 使用曼彻斯特编码可以有效地获得准确的信号。 这称为信号同步。 但是,在CAN传输中,曼彻斯特编码的传输速度变慢,所以使用了NRZ编码。 NRZ代码(不归零的代码) 0表示低电平,1表示低电平。 其缺点是不能解决上述同步问题。 于是,我想到了发送数据的方法

时每5位相同电平就插入一位相反电平。

CAN总线信号同步方式(位内):

        分为硬件同步、重同步。

       相关知识:

        接收端是按照约定波特率每秒钟进行多次的采样,也就是每隔一段时间采样一次将采样的结果作为当时状态。接收时检测每一位的时间是灵活的,在下文中说明。

        位时序:每1秒可以发送多位数据,是由波特率决定的。每一位由多个时间片(time quantum)组成,是由晶振除以波特率决定的。将一位中的时间片分为4个段,顺序是:同步段(SS)、传播延时段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2)。1__同步段(1Tq):发送节点和接收节点都是从同步段开始,正常情况下该段一定是上升沿和下降沿所处位置。  2__传播延时段:由于总线协议中的非破坏性仲裁机制以及帧内应答机制的规定,要求网络中的所有节点要同时接收到发送过来的显性位,但是由于每个节点到发送节点的位置不同和接收器、发送器的延时不同,导致不同的节点收到该显性位的延时是不同的,所以需要人为的配置该位。   3__相位缓冲段1、2在后文重同步中说明。

        1Bit接收时间:正常情况(上升沿或下降沿出现在同步段)每一位的接收时间是固定值。也就是一段时间后,接收器就认为这一位接受时间完了,立即开始下一位的接受。

        采样点:检测到上升沿或下降沿之后1Bit接收时间的x%时间的逻辑电平值作为这一位的逻辑电平值。因为每个节点的晶振可能不同,导致时间片的长度不一致,如果约定的采样时间不恰当可能导致采样的结果与实际值不一致,约定的采样点是经过多种实验计算出来的。

        正题:

        硬件同步: 硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。

        重同步:正常情况 ->检测该位的时间开始,上升沿或下降沿正常出现在同步段,不需要重同步处理,采样点正常采样。

        非正常情况1 ->上升或下降沿出现在同步段和采样点之间。若此时上升或下降沿与同步段相差x时间,接收器就会使相位缓冲段1增加同样x时间,这使得接受一位的时间变长了,当然这个增加的x时间是有上限的,这个上限称为重同步跳转宽度SJW。

        非正常情况2 ->上升或下降沿出现在采样点之后,接收器就缩短相位缓冲段2到上升沿或下降沿出现的地方,相当于让这一位的接收时间立即结束,认为下一位的接收时间才是才是这个信号接收的正确值,使这个上升或下降位于下一位的同步段。

                              

时间术语 TDiaEnable:从 KL15 打开到 DTC 控制器能检测到DTC的时间,该值只能取所有节点中的最大值TCanAck:从接收到CAN初始化触发事件到节点可以接收报文的时间TCanInit:从接收到CAN初始化触发事件到发送第一帧报文的时间(此时,CAN硬件、软件初始化完毕,可以发送和接收报文)TMsgStart:从接收到CAN初始化触发事件到该节点所有的周期性报文至少被发送一次的时间

     

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。