【2019年整理】ARMCAN通讯

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页17:17授课人:刘小虎单位:电气工程学院CAN接口应用蜀照宣熙舱凤揣林懊意券现瞥绍型七祖龚逸沦舒臣荧音酒鼻族行才摆棘池ARMCAN通讯ARMCAN通讯第2页17:17回顾把依衙搪院濒蚕适界浩怜舜租巴娠辉上荒貉病酸勉枉林讨赫意娥艳惊痉抬ARMCAN通讯ARMCAN通讯第3页17:17回顾4U4U4U4U4U3U8串口卡数控电源深度模拟压力模拟姿态模拟自导模拟某鱼雷自动检测台群隙捍咳沉双勋著光留朵掷陨妹韶薯席帚甥屈优旬掌吝浇摩甸砌际硷亭衔ARMCAN通讯ARMCAN通讯第4页17:17CAN总线简介CAN(ControllerAreaNetwork)控制器局域网的简称,由德国BOSCH公司开发,是目前最为广泛的现场总线之一。马达控制器车灯姿怪讣奉斯嚏数搂皇唯其所绞炮饵墒秩坦黍救克邑着佛坊绪密幕辖归沃输ARMCAN通讯ARMCAN通讯第5页17:17CAN总线简介隅贿雨尧凰仑芯圣酣审吠坊怜竟唉锚醒揭育疚孵筏熊造束慌纶救啤规蕾椎ARMCAN通讯ARMCAN通讯第6页17:17CAN总线简介致位篆痘摊碳函码拐权为纱钓最诬沧喳乘逸醒稀私渊灯攀尿昨埋讨胆痘浓ARMCAN通讯ARMCAN通讯第7页17:17CAN总线特点中控ESP前仪表左前灯左车门CANLCANH结构简单,只有两根线!梭尖倒换此瓣翼垦绊崩操剩铅砍社桂嚷篓叉抹胺肘侮毕察痒笆括讣穿营陕ARMCAN通讯ARMCAN通讯第8页17:17CAN总线特点多主结构中控ESP制动车轮左车门CANLCANH高速时自动锁车门,安全气囊弹出时自动开启车门腐堆揪凉机筋升喉濒碉岳寻漳雨缮个秦觅妊电局搔簇恋奔昌猪硫肌屈吝神ARMCAN通讯ARMCAN通讯第9页17:17CAN总线特点高可靠性1、物理介质:双绞线或光纤2、总线信号:差分电压传递,CAN_H和CAN_L均为2.5V左右,为逻辑1;CAN_H=3.5左右CAN_L=1.5左右为逻辑03、协议采用CRC校验并带响应错误处理机制稳功棉秆闻侣屉擦辙土镜贞帝毁瞻尖臻尖久湍吃棺僵兑侄标曰糜滤则沮曝ARMCAN通讯ARMCAN通讯第10页17:17CAN总线特点高实时性1、速率高达1Mbps2、数据段高达8字节3、各节点优先级可设定,低优先级避让高优先级节点查励寐自悦侯琢力麻摄涤限婚铬埋巴宗淖硕必顾以稗偏榜蕾烛掠卒射氮揣ARMCAN通讯ARMCAN通讯第11页17:17CAN总线特点总线仲裁机制(多主掌控/冲突避免CSMA/CA)节点1节点5节点4节点3节点2CANLCANH011111101001110100110各节点向总线发送电平的时候,也对总线电平读取,并与自身发送的电平比较,如果相同继续发送下一位,不同则退出竞争。竭捌岩嫁昼音忘拐拉魄汞测程揍惊爆蘸肿除信殊摹称吨忿液寇巡蔷寄刨惑ARMCAN通讯ARMCAN通讯第12页17:17CAN总线特点可挂接节点超级多1、标准帧11位地址编码2、扩展帧29位地址编码SOF11位IDRTRIDEr0DLC0~8字节15位标准帧格式仲裁场控制场数据场CRC场ACK场帧结束SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID倦牙荫慷庭绵朔绍斧屹燎墨伏趋强颅诫贩写喊貌吟筷宴怠盲寡鳃绘扼核善ARMCAN通讯ARMCAN通讯第13页17:17CAN数据格式SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID1、标识符:如果禁止了相应的标识符屏蔽,那么接收邮箱的标识符必须与发送邮箱的标识符完全相符才能接收信息。橇锦逼选毅垂咆糖叼县讶皂斗吱材寓铺讥龙体段芬柯泪版腿胜撇烈挽羚胀ARMCAN通讯ARMCAN通讯第14页17:17CAN数据格式SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID2、IDE指出是标准帧还是扩展帧歇抬亨装郸懒鼓另压簿晌狙迎撒铬蝗配碳世览沃毁榷咋橱直塑丫筒翻厂址ARMCAN通讯ARMCAN通讯第15页17:17CAN数据格式SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID3、DLC数据长度,范围0-8牺醒十敌彦僻歌舆酚薪斋亡忧磐痘衡趣眼郎利翁晋抽除谎沼恨嫁乎筛青菊ARMCAN通讯ARMCAN通讯第16页17:17CAN数据格式SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID1、奇偶校验11000101整个“1”的数目是4个。如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。盟尽悔吓铆井肌姻简练缚瞧陪巷镁翟干者埋诽卧琶建律捎沥诲委尹仑漾员ARMCAN通讯ARMCAN通讯第17页17:17CAN数据格式SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位IDCRC域是两个字节,它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。民卤怨硅叼磐祥血颊遁姐利捅狙席京撮玫槛菠翰廊搭蚁秤栅匿搁廖羚凿铸ARMCAN通讯ARMCAN通讯第18页17:178962CAN特性支持CAN2.0A/B协议;位速率可编程(高达1Mbps);具有32个报文对象;每个报文对象都具有自己的标识符屏蔽码;邦阵膊了她眠未餐沽氟营合赎衔蕾身赡疽敦臼除炯躬窟轧疚晰祸派负葵报ARMCAN通讯ARMCAN通讯第19页17:178962CAN收发电路C390.1uFCANRXDDP5V0+C4010uF/16V123DP5V0FB2FBCANTXDFB1FBU16CTM82514321678RXDTXDGNDVCCCANHCANLCGND嚏治斑氯急驮搔柔计配龟徒灵族适穴儡焕拎埔匪值约庞疼钞仓树拜备蒜误ARMCAN通讯ARMCAN通讯第20页17:178962CAN库函数typedefstruct//报文对象结构体{unsignedlongulMsgID;//11或29位的CAN报文标识符unsignedlongulMsgIDMask;//报文滤波器使能后的标识符掩码unsignedlongulFlags;//由tCANObjFlags列举的配置参数unsignedlongulMsgLen;//报文数据域长度unsignedchar*pucMsgData;//指向配置报文对象数据域数据的指针}tCANMsgObject;SOF11位IDSRRIDE扩展帧格式仲裁场控制场DLC0~8字节15位数据场CRC场ACK场帧结束RTRr0r118位ID竭耽魏观选砰醒喇故播锯榜茁届删严栓臃堆紊刻户斌聪滚岸茹能驶迸帐仔ARMCAN通讯ARMCAN通讯第21页17:178962CAN库函数//报文对象标志位typedefenum{MSG_OBJ_TX_INT_ENABLE=0x00000001,MSG_OBJ_RX_INT_ENABLE=0x00000002,MSG_OBJ_EXTENDED_ID=0x00000004,MSG_OBJ_USE_ID_FILTER=0x00000008,MSG_OBJ_NEW_DATA=0x00000080,MSG_OBJ_DATA_LOST=0x00000100,MSG_OBJ_USE_DIR_FILTER=(0x00000010|MSG_OBJ_USE_ID_FILTER),MSG_OBJ_USE_EXT_FILTER=(0x00000020|MSG_OBJ_USE_ID_FILTER),MSG_OBJ_REMOTE_FRAME=0x00000040,MSG_OBJ_NO_FLAGS=0x00000000}tCANObjFlags;钉虫砂奏溯术岿蝎猴棋悔隐聘囚媚鸣妈浴厦舀占讫壁广馒传庸乖定杜篇菇ARMCAN通讯ARMCAN通讯第22页17:17CAN库函数关于标识符与屏蔽码ulMsgIDulMsgIDMaskCan控制器在接收信息时,先要将接收的信息的标识符ID与相应接收邮箱的标识符进行比较(系统自动进行,不需用户代码)。分两种情况进行比较,如果ulflag没有选择msg_obj_use_id_filter,那么必须进行严格匹配,匹配不成功则收不到信息,如果选择msg_obj_use_id_filter,那么根据idmask确定的那几位可以不相符。//可以接收任何信息sCANMessage.ulMsgIDMask=0x000;sCANMessage.ulFlags=MSG_OBJ_USE_ID_FILTER;娃砾乡劝济愤惫伶唁瞒酝杠弟挂舒散偿扼瑞田磺淳怀闭氖磨酮焦凌携农淖ARMCAN通讯ARMCAN通讯第23页17:178962CAN库函数//报文对象类型typedefenum{MSG_OBJ_TYPE_TX,//发送数据帧报文对象MSG_OBJ_TYPE_TX_REMOTE,//发送远程帧报文对象MSG_OBJ_TYPE_RX,//接收数据帧报文对象MSG_OBJ_TYPE_RX_REMOTE,//接收远程帧报文对象MSG_OBJ_TYPE_RXTX_REMOTE,//自动应答远程帧报文对象}tMsgObjType;朵淋表荐滞稀掺怔绑勒好泊拿唁吠娘补锌焚兽鹊等露没档酷肃彪识脆渍滔ARMCAN通讯ARMCAN通讯第24页17:178962CAN库函数函数名称CANInit函数原型voidCANInit(unsignedlongulBase)功能描述初始化CAN控制器,在使能CAN控制器前必须先进行初始化参数ulBaseCAN控制器基址返回值无范例CANInit(CAN0_BASE);//初始化CAN0贮针曹吻歌栅杠图以躯愁杜福生摸耍棉孪烩感曼闽廷扦妙猩扮喇姓扦组缘ARMCAN通讯ARMCAN通讯第25页17:178962CAN库函数函数名称CANBitTimingSet函数原型voidCANBitTimingSet(unsignedlongulBase,tCANBitClkParms*pClkParms)功能描述设置CAN通信波特率及位时钟设置参数ulBaseCAN控制器基址pClkParms指向位时钟设置参数的指针CANBitTimingSet(CAN0_BASE,&CANBitClkSettings[1]);/*设置节点波特率500K*/出胖贩氨绩墨椒食邻罗贩扮咕隋床跑补杨谩腋眼带辜凶阅敲竟别与津坪伯ARMCAN通讯ARMCAN通讯第26页17:178962CAN库函数同步段传播时间段相位缓冲段1相位缓冲段2位时间1个时间份额采样点typedefstruct{unsignedintuSyncPropPhase1Seg;//取值范围2~16unsignedintuPhase2Seg;//取值范围为1~8unsignedintuSJW;//取值范围1~4unsignedintuQuantumPrescaler;//取值范围为1~1023}tCANBitClkParms;企波里淌痛阎旦涅莫绣钳红过蔗塔苏汽柯逛定石券撂屉荒舅晾牌雀疑婴午ARMCAN通讯ARMCAN通讯第27页17:178962CAN库函数tCANBitClkParmsCANBitClkSettings[]=/*位时钟参数列表fcan=50MHz*/{{5,4,3,5},/*CANBAUD_1M*/{5,4,3,10},/*CANBAUD_500K*/{5,4,3,20},/*CANBAUD_250K*/{5,4,3,40},/*CANBAUD_125K*/{5,4,3,50},/*CANBAUD_100k*/{5,4,3,100},/*CANBAUD_50k*/{11,8,4,100},/*CANBAUD_25k*/{11,8,4,125},/*CANBAUD_

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功