微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线工作原理

CAN总线工作原理

时间:12-12 来源:互联网 点击:
CAN是控制器局域网络(Controller Area Network, CAN)的简称。CAN总线有两条信号线构成,分别是CANL和CANH。相比于RS485总线构成的网络,CAN总线构成的网络更有优势。

CAN的报文格式
在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。
在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

如上图所示,帧格式包括扩展帧和标准帧两种。帧类型包括数据帧和远程帧。数据部分最大长度共8个字节。在编程时,如下的数据结构可以用来描述一个CAN消息:

  1. typedefstruct
  2. {
  3. uint32_tid;/**<29bitidentifier,itdependon"format"value
  4. -ifformat=STD_ID_FORMAT,idshouldbe11bitidentifier
  5. -ifformat=EXT_ID_FORMAT,idshouldbe29bitidentifier
  6. */
  7. uint8_tdataA[4];/**
  8. uint8_tdataB[4];/**
  9. uint8_tlen;/**
  10. -0000b-0111b:0-7bytes
  11. -1xxxb:8bytes
  12. */
  13. uint8_tformat;/**
  14. -STD_ID_FORMAT:StandardID-11bitformat
  15. -EXT_ID_FORMAT:ExtendedID-29bitformat
  16. */
  17. uint8_ttype;/**ission,shouldbe:
  18. -DATA_FRAME:thenumberofdatabytescalledoutbytheDLC
  19. fieldaresendfromtheCANxTDAandCANxTDBregisters
  20. -REMOTE_FRAME:RemoteFrameissent
  21. */
  22. }CAN_MSG_Type;

另外,还有如下图所示的参数可以进行设置。如CAN总线的波特率,工作模式,过滤器里的内容等。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top