欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第09章 CAN控制器模块(26-27).pdf

    • 资源ID:70321960       资源大小:2.85MB        全文页数:54页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第09章 CAN控制器模块(26-27).pdf

    29.1 CAN总线技术概述9.1 CAN总线技术概述9.2 CAN总线控制器模块概述9.2 CAN总线控制器模块概述9.3 邮箱9.3 邮箱9.4 9.4 CAN总线控制寄存器总线控制寄存器9.5 9.5 CAN总线状态寄存器总线状态寄存器9.6 9.6 CAN总线的中断总线的中断9.7 9.7 CAN模块的配置模块的配置9.8 CAN控制器应用9.8 CAN控制器应用第9章CAN控制器模块第9章CAN控制器模块39.1 CAN总线技术概述9.1 CAN总线技术概述测控系统向着网络化方向发展。CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种现场总线协议。CAN(Controller Area Network)总线是德国Bosch(奔驰)公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换开发的串行数据通信协议。第9章CAN控制器模块第9章CAN控制器模块4CAN总线问世以来,以高效率、低成本和快速性等特点迅速在汽车电子、测量仪器、控制系统得到广泛的应用。CAN协议一般用来管理控制器、传感器、执行器和人机接口之间的数据传输。由于协议本身的优点,总线上的数据绝对不会发生冲突、数据遗失等现象,使得CAN广泛用于环境恶劣的工业现场和自动化生产线。第9章CAN控制器模块第9章CAN控制器模块5CAN总线是一种多主总线,通信介质可以是绞线、同轴电缆或光导纤维。CAN协议用于分布式测控,已成为IS011898标准,特性如下:(1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。(2)CAN是一种有效支持分布式控制和实时控制的串行通信网络。第9章CAN控制器模块第9章CAN控制器模块6(3)CAN可以多主模式工作,网络上任意一个节点均可在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活。(4)CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。(5)CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据。第9章CAN控制器模块第9章CAN控制器模块7(6)CAN的直接通信距离最远可达10km(传输速率为5Kbps);最高通信速率可达1Mbps(传输距离为40m)。(7)CAN上的节点数实际可达110个。(8)CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。可满足通常工业领域中控制命令、工作状态及测试数据的一般要求,同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。第9章CAN控制器模块第9章CAN控制器模块8(9)CAN每帧信息都有CRC校验及其它检错措施,有效地降低了数据的错误率。(10)CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。(11)信号调制解调方式采用NBZ(非归零)编码解码方式,并且采用插入填充位(位填充)技术。第9章CAN控制器模块第9章CAN控制器模块9CAN协议支持用于通信的4种不同的帧类型:?数据帧:从发送节点到接收节点传送数据。?远程帧:主要用于请求信息,当节点A向节点B发送一个远程帧,如果节点B中的数据帧信息与节点A有相同的标识符,节点B将做出应答,并发送相应的数据帧到总线上。?错误帧:在总线检测错误时,任意一个节点所发送的帧。?过载帧:在前后两个数据帧或远程帧之间提供一个额外的延时。第9章CAN控制器模块第9章CAN控制器模块10CAN标准数据帧包含44到108位,而CAN扩展数据帧包含64到128位,另外,多达23个填充位可以插入到一个标准数据帧中,多达28个填充位可以插入到扩展数据帧中,这要根据数据流的代码来定。标准数据帧的最大长度为131位,扩展数据帧的最大长度为156位。第9章CAN控制器模块第9章CAN控制器模块11数据帧包含如下内容:第9章CAN控制器模块第9章CAN控制器模块12CAN总线所具有的卓越性能、极高的可靠性,设计独特,特别适合工业设备测控单元相连。因此,备受工业界的重视,并已被公认为工业界最有前途的现场总线之一。第9章CAN控制器模块第9章CAN控制器模块139.2 CAN总线控制器模块概述9.2 CAN总线控制器模块概述LF240 x为第一个具有片上CAN控制模块的DSP芯片,给用户设计分布式或网络化运动控制系统提供了方便。CAN控制器是一个16位的外设模块,具有以下特性:(1)完全支持CAN2.0B协议。(2)提供6个邮箱给对象,其数据长度为0-8个字节。(3)针对邮箱0、1和2、3有局域接收屏蔽寄存器。第9章CAN控制器模块第9章CAN控制器模块14(4)可编程波特率。(5)可编程中断配置。(6)可编程的CAN总线唤醒功能。(7)自动回复远程请求。(8)当发送出现错误或仲裁丢失数据时能自动重发。(9)总线错误诊断功能。(10)自测试模式。(11)两引脚通信,即CANTX和CANRX。第9章CAN控制器模块第9章CAN控制器模块15第9章CAN控制器模块第9章CAN控制器模块CAN控制器结构框图16第9章CAN控制器模块第9章CAN控制器模块179.3 邮箱9.3 邮箱?邮箱ram邮箱ram?邮箱标志符邮箱标志符?邮箱控制域寄存器邮箱控制域寄存器?信息缓冲器信息缓冲器?写访问邮箱ram写访问邮箱ram第9章CAN控制器模块第9章CAN控制器模块18第9章CAN控制器模块第9章CAN控制器模块?邮箱配置邮箱配置?CAN接收滤波器CAN接收滤波器?发送邮箱发送邮箱?接收邮箱接收邮箱?远程帧的处理远程帧的处理19第9章CAN控制器模块第9章CAN控制器模块20第9章CAN控制器模块第9章CAN控制器模块219.4 9.4 CAN总线控制寄存器总线控制寄存器CAN总线总共有15个控制寄存器,这些寄存器控制着CAN的位定时器、邮箱的发送和接收使能、错误状态及CAN的中断等。第9章CAN控制器模块第9章CAN控制器模块22第9章CAN控制器模块第9章CAN控制器模块?邮箱方向/使能寄存器邮箱方向/使能寄存器?发送控制寄存器发送控制寄存器?接收控制寄存器接收控制寄存器?主控制寄存器主控制寄存器?位配置寄存器位配置寄存器23第9章CAN控制器模块第9章CAN控制器模块CAN的位定时249.5 9.5 CAN总线状态寄存器总线状态寄存器第9章CAN控制器模块第9章CAN控制器模块?错误状态寄存器错误状态寄存器?全局状态寄存器全局状态寄存器?错误计数寄存器错误计数寄存器259.6 9.6 CAN总线的中断总线的中断下列事件能引起中断:?邮箱操作?确认放弃?写拒绝?唤醒?接收报文丢失?总线关闭?被动错误?报警界限第9章CAN控制器模块第9章CAN控制器模块26第9章CAN控制器模块第9章CAN控制器模块?CAN中断标志寄存器CAN中断标志寄存器?CAN中断屏蔽寄存器CAN中断屏蔽寄存器279.7 9.7 CAN模块的配置模块的配置?初始化位配置寄存器BCR1和BCR2初始化位配置寄存器BCR1和BCR2?初始化邮箱中的寄存器初始化邮箱中的寄存器第9章CAN控制器模块第9章CAN控制器模块28位配置寄存器的初始化第9章CAN控制器模块第9章CAN控制器模块299.8 CAN控制器应用9.8.1 CAN控制器的操作步骤9.8 CAN控制器应用9.8.1 CAN控制器的操作步骤CAN控制器的操作分成以下三大步:1初始化CAN控制器2信息的发送3信息的接收第9章CAN控制器模块第9章CAN控制器模块309.8.2 CAN控制器扩展硬件接口9.8.2 CAN控制器扩展硬件接口CAN控制器扩展硬件接口如下图所示,DSP需要通过一个CAN收发器连接到CAN总线上。DSP片内CAN控制器模块CAN收发器芯片CAN总线CANTXCANRXCAN控制器扩展硬件接口框图第9章CAN控制器模块第9章CAN控制器模块31第9章CAN控制器模块PCA82C250芯片第9章CAN控制器模块PCA82C250芯片32第9章CAN控制器模块第9章CAN控制器模块硬件接口硬件接口339.8.3 CAN程序实例9.8.3 CAN程序实例1、CAN模块发送一个远程帧请求1、CAN模块发送一个远程帧请求第9章CAN控制器模块第9章CAN控制器模块34第9章CAN控制器模块第9章CAN控制器模块35第9章CAN控制器模块第9章CAN控制器模块36第9章CAN控制器模块第9章CAN控制器模块37第9章CAN控制器模块第9章CAN控制器模块38第9章CAN控制器模块第9章CAN控制器模块39第9章CAN控制器模块第9章CAN控制器模块40第9章CAN控制器模块第9章CAN控制器模块41第9章CAN控制器模块2、CAN模块自动应答一个远程帧请求第9章CAN控制器模块2、CAN模块自动应答一个远程帧请求42第9章CAN控制器模块第9章CAN控制器模块43第9章CAN控制器模块第9章CAN控制器模块44第9章CAN控制器模块第9章CAN控制器模块45第9章CAN控制器模块第9章CAN控制器模块46第9章CAN控制器模块第9章CAN控制器模块47第9章CAN控制器模块第9章CAN控制器模块483、CAN控制器的程序设计(C语言)程序如下:1建立中断向量表(汇编).ref _nothing,_c_int0,_GRIS5;声明在其他程序中定义;并在本程序中需要使用的变量或标号.sect.vectors;定义主向量段RSVECTB _c_int0;复位向量INT1B _nothing;中断向量1INT2B _nothing;中断向量2INT3B _nothing;中断向量3INT4B _nothing;中断向量4INT5B _GRIS5;中断向量5INT6B _nothing;中断向量6RESERVED B _nothingSW_INT8 B _nothing SW_INT31 B _nothing第9章CAN控制器模块第9章CAN控制器模块492C语言程序#include f2407_c.h /引用头部文件int CAN_FLAG;/定义标志寄存器void sytem_init();/声明在程序中需要用到的函数void CANMBX_ISR();void CAN_INIT();void inline disable()/中断屏蔽子程序asm(setc INTM);void inline enable()/中断使能子程序asm(clrc INTM);第9章CAN控制器模块第9章CAN控制器模块50(1)主程序main()sytem_init();/系统初始化程序CAN_FLAG=0X00;/清CAN用户标志,/CAN_FLAG=01表示接收到数据CAN_INIT();/CAN初始化程序enable();/中断使能for(;)*TCR=0X20;/MBX3请求发送while(*TCR&0X2000=0)/等待发送应答continue;第9章CAN控制器模块第9章CAN控制器模块51*TCR=0X2000;/清 TA3 和MIF3标志位while(CAN_FLAG=0)continue;/等待接收数据CAN_FLAG=0;/清接收到标志*MDER=0X0000;/邮箱不使能*MCR=0X0140;/CDR=1,数据改变请求*MBX3A=*MBX2A+1;/邮箱2中数据加1用来更新邮箱3中的数据*MBX3B=*MBX2B+1;*MBX3C=*MBX2C+1;*MBX3D=*MBX2D+1;*MCR=0X04C0;/DBO=1,CDR=0,ABO=1,STM=1*MDER=0X04C;/ME2=ME3=1,MBX2接收,MBX3发送第9章CAN控制器模块第9章CAN控制器模块52(2)系统初始化子程序void sytem_init()asm(setc INTM);asm(setc SXM);asm(clrc OVM);asm(clrc CNF);*IMR=0 x0010;/开中断优先级5*IFR=0 xFFFF;/清中断标志位*SCSR1=0 x81FE;*WDCR=0 xE8;第9章CAN控制器模块第9章CAN控制器模块53(3)CAN初始化子程序void CAN_INIT()*MCRB=*MCRB|0X0C0;/设置IOPC6、IOPC7 为 CANRX,CANTX*CAN_IFR=0XFFFF;/清所有CAN中断标志*LAM1_H=0X7FFF;/设置邮箱2、3的屏蔽ID寄存器*LAM1_L=0XFFFF;/0则ID必须匹配*MCR=0X1040;/CCR=1 改变配置请求while(*GSR&0X0010=0)continue;/当CCE=1 时即可配置 BCR2,BCR1 寄存器*BCR2=0X01;/波特率预分频寄存器*BCR1=0X033;/波特率设置为1M*MCR=*MCR&0XEFFF;/CCR=0 改变配置结束请求while(*GSR&0X0010!=0)continue;/只有当CEE=0时,BCR2,BCR1 寄存器配置成功*MDER=0X040;/不使能邮箱,邮箱2设为接收方式*MCR=0X0143;/CDR=1,数据区改变请求*MSGID2H=0X2447;/设 置 邮 箱 2 的 控 制 字 及 ID,IDE=0,AME=0,/AAM=0,标准方式为MSGID2H12-2第9章CAN控制器模块第9章CAN控制器模块54*MSGID2L=0XFFFF;*MSGCTRL2=0X08;/设置控制域,数据长度DCL=8,RTR=0 数据帧*MBX2A=0X0000;/邮箱2信息初始化*MBX2B=0X0000;*MBX2C=0X0000;*MBX2D=0X0000;*MSGID3H=0X2447;/设置邮箱3的标识符*MSGID3L=0XFFFF;*MSGCTRL3=0X08;/RTR=0,DCL=8*MBX3A=0X2211;/邮箱3信息初始化*MBX3B=0X4433;*MBX3C=0X6655;*MBX3D=0X8877;*MCR=0X04C0;/DBO=1,ABO=1,STM=1设置为自测试模式*MDER=0X4C;/ME3=1,MBX3 发送,ME2=1 接收*CAN_IMR=0XF7FF;/中断MBX3 不使能,MBX2使能,低中断优先级*CAN_IFR=0XFFFF;/清全部中断标志第9章CAN控制器模块第9章CAN控制器模块55(4)中断程序void interrupt GRIS5()/中断入口程序 switch(*PIVR)case 64:CANMBX_ISR();/邮箱2接受到相应信息则进入中断服务子程序break;void CANMBX_ISR()/邮箱2接收中断服务子程序*RCR=0X040;/复位 RMP2 和 MIF2CAN_FLAG=1;/置用户接收标志void interrupt nothing()/假中断程序 第9章CAN控制器模块第9章CAN控制器模块

    注意事项

    本文(第09章 CAN控制器模块(26-27).pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开