can总线数据链路层的特性是什么?
扫描二维码
随时随地手机看文章
数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
CAN总线的报文帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔5种类型。
1、数据帧:用于发送节点向接收节点传送数据,是使用最多的帧类型。
帧起始:表示帧开始的段,只有在总线空闲的时候才会发送;
仲裁段:表示数据优先级的段,从ID的最高位(MSB)开始判断,若连续出现显性电平(逻辑0)个数最多,优先级越高,可以理解为ID越小优先级越高;
控制段:表示数据帧里数据段的字节数即数据长度信息;
数据段:需要发送的数据内容,可一次性发送0–8个字节的数据;
CRC段:检查帧传输错误的帧(检查范围:起始端,仲裁段,控制段,数据段)由15位的CRC顺序和1位的CRC界定符构成;
ACK 段:用来确认是否正常接收。由ACK 槽(ACK Slot)和ACK 界定符2位构成;
帧结束:表示该帧的结束的段,由7个隐形位(逻辑1)组成。
2、远程帧:用于接收节点向某个发送节点请求数据。
3、错误帧:用于当某节点检测出错误时向其他节点通知错误的帧。
4、过载帧:用于接收节点向发送节点通知自身接收能力的帧。
5、帧间隔:用于将数据帧或远程帧与前面的帧分离的帧。
CAN总线上节点没有主从之分,所有节点级别都一样,可以发送也可以接收。只要总线空闲,发送节点就可以发送数据,发送节点不会指定由哪个一个节点接收,而是由接收节点自己过滤选择是否接收含有该标识符ID的数据,就像收音机一样,广播台发出信号都可以被听众收到,但是听众可以选择自己喜欢的台。
回读:节点发送数据的同时,同时也再读取数据,并与自己发送数据对比。
线与:如果同时有几个节点往CAN总线上传递信息,采取线与机制,也就是说除非所有的节点都发送1,总线上才会是1,只要有一个节点发送0,总线上就是0。如果一个节点A发送了1,而其他节点发送了0,那么总线上是0,节点A通过回读就会发现总线上的电平与自己发送的不一致,从而采取相应的措施(退出仲裁,报错等)。需要注意的是1和0由CAN_H和CAN_L两条线差分电压得来,并不是一条线传递1, 另一条线传递0。
仲裁:总线空闲,最先开始发送消息的节点获得发送权,当多个节点同时发送数据,那么需要仲裁,通过线与和回读功能比较数据的标识符(从仲裁段第一位开始仲裁),标识符小的获得仲裁,标识符大的推出仲裁,转变为接收,并且不会在总线再次空闲前发送报文,也就是说当总线空闲时候,推出仲裁的帧才重新发送数据。数据帧和远程帧优先级:假如一个发送节点发送了远程帧请求A发送数据并且同时A节点也正在发送数据,那么二者标识符相同,需要仲裁。RTR为显性位的数据帧具有优先权,可以继续发送。标准格式和扩展格式优先级:从仲裁位开始仲裁,标准格式RTR位显性,牛逼,具有优先权可以继续发送。
数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层应具备如下功能:①链路连接的建立,拆除,分离。②帧定界和帧同步。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。③顺序控制,指对帧的收发顺序的控制。④差错检测和恢复。还有链路标识,流量控制等等。差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测。各种错误的恢复则常靠反馈重发技术来完成。