CAN控制器局域网目录1、J1939协议:协议数据单元PDU和参数组编号PGN2、整车控制器FreescaleMC9S12XE及MSCAN硬件结构3、CAN总线报文收发过程CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。其典型的应用协议有:SAEJ1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA2000等。1、SAEJ1939协议20世纪80年代初德国BOSH公司为解决现代汽车众多控制单元、测试仪器之间实时交换数据而开发的一种串行通讯协议,经多次修订,于1991年9月形成技术规范2.0版本,该版本包括2.0A(11位标准帧格式)和2.0B(29位扩展帧格式)两部分.美国的汽车工程学会SAE于2000年以CAN2.0B为基础,提出J1939通讯协议.J1939协议是以CAN2.0B规范为基础制定的,它利用CAN扩展的29位标识符制定出J1939协议的编码系统.2.0A标准数据帧2.0B扩展数据帧SAEJ1939协议是通过协议数据单元ProtocolDataUnit(PDU)实施和封装的PDU由共7部分组成优先级P(3bit)保留位R(1bit)数据页DP(1bit)协议数据单元格式PF(8bit)特定协议数据单元PS(8bit)源地址SA(8bit)数据域DATA(64bit)J1939PDU协议数据单元PRDPPFPSSADATA311888641.优先级(P)这三位仅在总线传输中用来优化消息延迟(即总线仲裁),消息优先级可从最高0(000)设置到最低7(111).所有控制消息的缺省优先级是3(011).其他所有信息、专用、请求和ACK消息的缺省优先级是6(110).2.保留位(R)保留此位以备今后开发使用,所有消息应在传输中将SAE保留位置0.3数据页(DP)数据页位选择参数组描述的辅助页.置位0或1.J1939PDU协议数据单元PRDPPFPSSADATA311888644PDU格式(PF)(8bit)共定义了两种PDU格式:PDU1格式和PDU2格式PDU格式PF域PS域PDU10----239目标地址PDU2240----255组扩展5特定PDU(PS)特定PDU是一个8位域,它的定义取决于PDU格式,根据PDU格式它可能是目标地址或者组扩展。若PDU格式(PF)域的值小于240,特定PDU域是目标地址。若PF域的值在240和255之间,特定PDU包含组扩展(GE)值。J1939PDU协议数据单元PRDPPFPSSADATA311888646源地址(SA)源地址域8位。网络中一个特定源地址只能匹配一个设备。因此,源地址域确保CAN标识符符合CAN协议中的唯一性要求。地址管理和分配在SAEJ1939中已定义,以防止源地址重复。J1939将29bit的ID分成了6部分,理论上讲J1939可以表示229种消息类型,但它并没有这样使用29bit的ID对信息进行分类,而是采用了PGN的概念对整车信息进行分类管理PGN(ParameterGroupNumber参数组序号)是24位的值,用来具体标识CAN数据帧的数据域属于哪个参数组,包括:保留位、数据页位、PDU格式域(8位)和组扩展域(8位)。每个固定的参数组编号对应的数据是固定的。若PF240,PGN的低字节置0;否则,将其值设为组扩展域的值。SAEJ1939-71中规定了整车应用层中所有的报文内容,及报文中各个参数的意义,我们可以根据PGN号来查找报文。SAEJ1939-71只规定了一部分PGN,专门留下一些PGN区间以便各个制造商自己定义。ID2:0x1818D0F31100000011000110100001111001111000000110001101000011110011PDUP=6R=0DP=0PF=24240PS=208=DASA=243000000000001100000000000PGN=0x001800或者6144编号节点名称缩写地址分配1整车控制器VMS208/D02仪表ICU23/173电池管理系统BMS243/F34电机控制器MCU239/EFID1:0x0CFB00D00110011111011000000001101000001100111110110000000011010000PDUP=3R=0DP=0PF=251240PS=0=GESA=208000000001111101100000000PGN=0x00FB00或者64256编号节点名称缩写地址分配1整车控制器VMS208/D02仪表ICU23/173电池管理系统BMS243/F34电机控制器MCU239/EFID3:0x18FEEF001100011111110111011110000000011000111111101110111100000000PDUP=6R=0DP=0PF=254240PS=239=GESA=0000000001111111011101111PGN=0x00FEEF或者652632、整车控制器FreescaleMC9S12XE2、整车控制器FreescaleMC9S12XEMSCANMC9S12XETJA1050CAN控制器(片内)CAN高速收发器CANHCANL0121516171819邮箱初始化报文接收报文发送MSCAN控制寄存器0(CANCTL0)MSCAN控制寄存器1(CANCTL1)MSCAN总线计时寄存器0(CANBTR0)MSCAN总线计时寄存器1(CANBTR1)MSCAN接受标志寄存器(CANRFLG)MSCAN接受中断使能寄存器(CANRIER)MSCAN接受标识符寄存器(CANIDAR)MSCAN标识符掩码寄存器(CANIDMR)•报文储存模式►各信息在接收后被写入到后台接收缓冲器中。►只有当CPU达到标识符接收和标识符掩码寄存器中规定的标准时,CPU才会被通知读取信息。发送控制相关寄存器发送器标志寄存器发送器中断使能寄存器发送器报文中止请求寄存器发送器报文中止确认寄存器MSCAN--发送结构发送缓冲器选择寄存器0表示相关报文缓冲区不被选择;1表示选择相关的缓冲区谢谢!