现场总线技术 CH8B-CAN应用与实验系统设计

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

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

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

资源描述

现场总线技术第八章CAN应用与实验系统设计教材:现场总线CAN原理与应用技术作者:绕运涛、邹继军、郑勇荟主讲教师:张有忠中国矿业大学机电工程学院2007-11中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术28.3CAN实验系统设计K1:点对点发送K2:广播发送此处与非门最适宜中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术374HC244-Octalbuffer/linedriver;3-state1G2G中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术474LS164–8BitSerialIn/ParallelOutShiftRegisterFeaturesGated(enable/disable)serialinputsFullybufferedclockandserialinputsAsynchronousclearTypicalclockfrequency36MHzTypicalpowerdissipation80mW中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术5DS1232-MicroMonitorChipFEATURESHaltsandrestartsanout-of-controlmicroprocessorHoldsmicroprocessorincheckduringpowertransientsAutomaticallyrestartsmicroprocessorafterpowerfailureMonitorspushbuttonforexternaloverrideAccurate5%or10%microprocessorpowersupplymonitoringEliminatestheneedfordiscretecomponentsSpace-saving,8-pinmini-DIPOptional16-pinSOICsurfacemountpackageIndustrialtemperature-40°Cto+85°CavailablePINDESCRIPTIONPBRST-PushbuttonResetInputTD-TimeDelaySetTOL-Selects5%or10%VCCDetectGND-GroundRST-ResetOutput(ActiveHigh)RST-ResetOutput(ActiveLow,opendrain)ST-StrobeInputVCC-+5VoltPower中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术6ST24C08-8KbitSerialI2CBusEEPROM中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术78.3CAN实验系统设计K1:点对点发送K2:广播发送此处与非门最适宜中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术8CAN实验系统软件设计报文收发返送,任意节点收到报文,将该报文返送回发送站点接收报文数显示,0~9通讯波特率,40KBps双滤波器模式广播ID:0000H,按该ID发送的数据所有站点都接收K1按键,按键K1启动一次点对点发送,发送ID由244外接的拨码开关设定K2按键,按键K2一次,启动一次广播发送ID设定P0口读入高半字节,点对点通讯时接收方的ID低半字节,自身的ID系统代码:can_practice.asm中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术9地址标号定义;//89C51晶振为12MHZ;//74LS244片外存储器地址为0100H;***与课本不一样(0200H有误)IDADDREQU0100H;//CAN控制器SJA1000片外存储器起始地址为0200H(***0100H有误,与课本不一样)MODEEQU0200H;//模式寄存器CMREQU0201H;//命令寄存器SREQU0202H;//状态寄存器IREQU0203H;//中断寄存器IEREQU0204H;//中断使能寄存器BTR0EQU0206H;//总线时序寄存器0BTR1EQU0207H;//总线时序寄存器1OCREQU0208H;//输出控制寄存器ALCEQU020BH;//仲裁丢失捕捉寄存器ECCEQU020CH;//错误代码捕捉寄存器EWLREQU020DH;//错误报警限额寄存器RXERREQU020EH;//RX错误计数寄存器TXERREQU020FH;//TX错误计数寄存器TXBEQU0210H;//写,发送缓冲区首地址RXBEQU0210H;//读,接收缓冲区首地址中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术10地址标号定义(续)RXCMDEQU0215H;//扩展帧时接收缓冲区数据第一字节,十进制21RTRDLCEQU0210H;//包括RTR,DLC的字节ACREQU0210H;//复位时:滤波码,十进制16AMREQU0214H;//复位时,屏蔽码,十进制20RMCEQU021DH;//RX报文计数器,十进制29RBSAEQU021EH;//RX缓冲区起始地址,十进制30CDREQU021FH;//时钟分频器,十进制31;//******程序运行所需存储器及标志位******CBFRTPEQU30H;//CPU接收或发送报文缓冲区首地址FRNUMEQU40H;//接收报文数RECOKBIT00H;//接收报文标志,RECOK为1表示接收到一帧报文RFRMBIT01H;//回送报文标志,RFRM为1表示该帧接收的;//报文应该回送PUSHK1BIT02H;//按K1键标志,PUSHK1为**0**表示K1键按下PUSHK2BIT03H;//按K2键标志,PUSHK2为**0**表示K2键按下中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术11程序模块、子程序列表0、系统初始化程序MAIN1、主监控程序MLOOP2、CAN控制器初始化子程序CANINI3、CAN控制器查询接收子程序CANREC4、CAN控制器发送程序TDATA5、按设定ID值向指定节点发送一帧报文TSDATATDATA6、向CAN总线上其他节点发送一帧广播报文TBDATATDATA7、向发送报文节点返回接收到报文TRDATATDATA8、读按键子程序KEYIN9、20mS、1mS延时程序D20MSDELAY10、显示当前接收报文数DISP中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术12MAIN-系统初始化程序;//******系统初始化程序******ORG0000HLJMPMAINORG0030HMAIN:MOVSP,#6FHMOVR0#6FHCLRA;//清零片内RAM,初始化变量和标志CLAIR:MOV@R0,ADJNZR0,CLAIR;//00~6FH全部清零LCALLCANINI;//SJA1000初始化,P230页尾MOVP1,#0FFH;//读P1前写1,P1外接K1,K2MOVIE,#00H;//采用查询标志方式工作,关闭所有中断MOVSCON,#00H;//串行口方式0,移位寄存器方式,1*7段LED显示中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术13MLOOP-主监控程序流程MLOOP:LCALLKEYIN;//按键扫描,两个按键的状态在PUSHK1;//和PUSHK2中,=0键按下JBPUSHK1,LOOP1;******//与课本不一样LCALLTSDATA;//K1键按下,发送一帧点到点报文SETBPUSHK1;//******与课本不一样LOOP1:JBPUSHK2,LOOP2;******//与课本不一样LCALLTBDATA;//K2键按下,发送一帧广播报文SETBPUSHK2;******//与课本不一样LOOP2:LCALLCANREC;//**无键按下,从CAN总线查询接收JNBRECOK,LOOP3LCALLDISP;//数码管显示+1后的接收报文数CLRRECOKJNBRFRM,LOOP3LCALLTRDATA;//返回接收到的报文CLRRFRM;//回送报文标志LOOP3:SJMPMLOOP中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术14CANREC-CAN控制器查询接收子程序CANREC:MOVDPTR,#SR;//状态寄存器MOVXA,@DPTRANLA,#0C3H;//读取总线关闭、错误状态、接收溢出、有数据等状态位JNZPROCRET;//无上述状态,返回PROC:JNBACC.7,PROCIBUSERR:MOVDPTR,#IR;//IR中断寄存器,出现总线关闭MOVXA,@DPTR;//读中断寄存器,清除中断位MOVDPTR,#MODE;//方式寄存器地址MOVA,#08HMOVX@DPTR,A;//将方式寄存器复位请求位清0RETPROCI:MOVDPTR,#IR;//总线正常,IR中断寄存器MOVXA,@DPTR;//读取中断寄存器,清除中断位JNBACC.3,OTHEROVER:MOVDPTR,#CMR;//数据溢出,命令寄存器CMRMOVA,#0CH;//00001100BMOVX@DPTR,A;//在命令寄存器中清除数据溢出和释放接收缓冲区RET中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术15CANREC-CAN控制器查询接收子程序(续1)OTHER:JBACC.0,RECE;//IR.0=1,接收缓冲区有数据LJMPRECOUT;//IR.0=0,接收缓冲区中无数据,退出接收RECE:MOVDPTR,#RXB;//读取并保存接收缓冲区的数据MOVR1,#CBFRTP;//CPU片内接收缓冲区首地址MOVXA,@DPTR;//读取数据帧格式MOV@R1,A;//保存ANLA,#0FH;//截取数据场长度ADDA,#4;//+ID字节数MOVR6,ARDATA0:INCDPTRINCR1MOVXA,@DPTRMOV@R1,ADJNZR6,RDATA0;//循环读取与保存;//若接收到ID前两个字节为5555H,表明是对方返回的报文,RFRM保持清0,接收报文不回送MOVA,CBFRTP+1CJNEA,#55H,RDATA1MOVA,CBFRTP+2CJNEA,#55H,RDATA1SJMPRDATA2中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术16CANREC-CAN控制器查询接收子程序(续2)RDATA1:SETBRFRM;//若接收ID前两个字节不是5555H;//则应返回该帧报文,RFRM置1RDATA2:INCRFNUM;//接收报文数+1MOVA,FRNUMCJNEA,#10,ADATA3MOVFRNUM,#0;//接收报文数满10时,从头开始计数RDATA3:SETBRECOK;//接收报文标志置1MOVDPTR,#CMR;//MOVA,#04H;//释放CAN接收缓冲区MOVX@DPTR,ARECOUT:MOVDPTR,#ALC;//释放仲裁丢失捕捉寄存器和错误捕捉寄存器MOVXA,@DPTRMOVDPTR,#RCC;//MOVXA,@DPTRRET中国矿业大学机电工程学院-张有忠©版权所有2007-11V2.0现场总线技术17TDATA-CAN控制器发送程序TDATA:MOVDPTR,#SR

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

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

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

×
保存成功