第07章CAN总线(4)_第1页
第07章CAN总线(4)_第2页
第07章CAN总线(4)_第3页
第07章CAN总线(4)_第4页
第07章CAN总线(4)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7.6 PeliCAN功能7.6.1扩展数据帧7.6.1扩展数据帧7.6.1扩展数据帧Start of FrameData Field8N (0 N 8)Identifier11 msbReserved Bits4 bitsDataLengthCodeCRC15 bitsCRCField16DelAckFieldACK2DelControl Field6R0DLC3DLC0R1RTRID28Arbitration Field32ID18SRRIDEID17ID0Identifier18 lsb7End ofFrame01 10 0 01 1 1 1 1 1 1117.6.2扩展Start of

2、 FrameIdentifier11 msbReserved Bits4 bitsDataLengthCodeCRC15 bitsCRCField16DelAckFieldACK2DelControl Field6R0DLC3DLC0R1RTRID28Arbitration Field32ID18SRRIDEID17ID0Identifier18 lsb7End ofFrame01 11 0 01 1 1 1 1 1 1117.6.3 SJA1000 PeliCanPeliCan相关寄存器相关寄存器nSJA1000 PeliCan模式下的内部地址划分(1)模式寄存器(MOD)(地址0、可读写)

3、n用于改变CAN控制器的行为方式n57位:保留n4位SM:睡眠模式( 1:睡眠;0:唤醒)n3位AFM:验收滤波器模式(1:单向32位;0:双向16位)n2位STM:自检模式(1:自检;0:正常)n1位LOM:只听模式(1:只听;0:正常)n0位RM:复位模式。(1复位:检测到复位请求后,进入复位; 0正常:此位接到一个下降沿后回到工作模式)(2)命令寄存器(CMR)(地址1、只写)n启动CAN控制器传输层的工作n57位:保留n4位SRR:自动接收请求 (1接收当前,0空缺)n3位CDO:清除数据溢出(1清除数据溢出状态位,0无作用)n2位RR:释放接收缓冲器(1释放RXFIFO,0无作用)n

4、1位AT:中止发送(1忽略发送请求,0无作用)n0位:发送请求(1报文被发送,0无作用)(3)状态寄存器(SR)(地址2、只读)n反应CAN控制器的状态n7位BS:总线状态(1关闭,0开启) n6位ES:出错状态(1出错,0正常)n5位TS:发送状态(1发送,0空闲) n4位RS:发送状态(1发送,0空闲)n3位TCS:发送完毕状态(1完成,0未完成)n2位TBS:发送缓冲器状态(1释放,0锁定)n1位DOS:数据超载状态(1超载,0未超载)n0位RBS:接收缓冲状态(1满,0空)(4)中断寄存器()中断寄存器(IR)(地址)(地址3、只读)、只读)n反应CAN控制器的中断原因。读时,除接收中

5、断位外的所有位被复位置0。n7位BEI:总线错误中断(IER中的总线错误中断使能) n6位ALI:仲裁丢失中断(IER中的仲裁丢失中断使能) n5位EPI:错误认可中断( IER中的错误认可中断使能) n4位WUI:唤醒中断( IER中的唤醒中断使能) n3位DOI:数据溢出中断( IER中的数据溢出中断使能) n2位EI:错误报警中断(IER中的出错报警中断使能)n1位TI:发送中断(IER中的发送中断使能)n0位RI:接收中断( IER中的接收中断使能)(5)中断使能寄存器(IER)(地址4、可读写)n允许或禁止不同类型的中断源产生中断。n7位BEIE:总线错误中断使能 n6位ALIE:仲

6、裁丢失中断使能 n5位EPIE:错误认可中断使能 n4位WUIE:唤醒中断使能n3位DOIE:数据溢出中断使能 n2位EIE:出错报警中断使能n1位TIE:发送中断使能n0位RIE:接收中断使能(6)仲裁丢失捕捉寄存器()仲裁丢失捕捉寄存器(ALC)(地址)(地址11、只读)、只读)n获取仲裁丢失位置信息。n7位5位:保留,取0 n4位0位:数值对应仲裁丢失的位置 仲裁丢失位编码举例仲裁丢失位编码举例(7)错误代码捕捉寄存器(ECC)(地址12、只读)n获取总线的各种错误类型和位置。n7位 ERRC16位ERRC0:错误类型 00:位错; 01:格式错; 10:填充错;11:其他类型错误 n5

7、位 DIR 方向 1:接收时发生的错误; 0:发送时发生的错误。n4位0位:各种组合代表不同含义 PeliCanPeliCan相关寄存器相关寄存器n(8)错误报警限额寄存器(EWLR)(地址13、复位可写,正常工作只读)n定义错误报警限额。默认96n(9)RX错误计数寄存器(RXERR)(地址14、只读)n反映接收错误计数的当前值。复位时可写,一般初始化时为0。n(10)TX错误计数寄存器(TXERR)(地址15、只读)n反映发送错误计数的当前值。复位时可写。硬件复位初始化时为0。总线关闭时,TXERR被初始化为127来计算协议定义的最小时间(128个总线空闲信号)。这段时间里读TXERR将给

8、出总线关闭恢复的状态信息。n复位时向TXERR写入255,在进入工作状态时会引起总线关闭事件。(11)发送缓冲器(TXB)(地址1628、可读写)n发送信息的缓存TX结构信息(SFF)(地址16)标准帧n位7 FF:帧结构格式(0:标准帧;1:扩展帧)n位6RTR:远程发送请求n位54:保留(取0)n位30:数据长度代码标准帧nTX标识码1(SFF)(地址17)n位70 :对应ID.10ID.3nTX标识码2(SFF)(地址18)n位75 :对应ID.2ID.0TX结构信息(EFF)(地址16)扩展帧n位7 FF:帧结构格式(0:标准帧;1:扩展帧)n位6RTR:远程发送请求n位54:保留(取

9、0)n位30:数据长度代码扩展帧nTX标识码1(EFF)(地址17)n位70 :对应ID.28ID.21nTX标识码2(EFF)(地址18)n位70 :对应ID.20ID.13nTX标识码3(EFF)(地址19)n位70 :对应ID.12ID.5扩展帧nTX标识码4(EFF)(地址20)n位73 :对应ID.4ID.0n位20 :保留(12)接收缓冲器()接收缓冲器(RXB)(地址)(地址1628、可读写)可读写)nRXFIFO中的报文存储RX结构信息(SFF)(地址16)标准帧n位7 FF:帧结构格式(0:标准帧;1:扩展帧)n位6RTR:远程发送请求n位54:保留(取0)n位30:数据长度

10、代码标准帧nRX标识码1(SFF)(地址17)n位70 :对应ID.10ID.3nRX标识码2(SFF)(地址18)n位75 :对应ID.2ID.0RX结构信息(EFF)(地址16)扩展帧n位7 FF:帧结构格式(0:标准帧;1:扩展帧)n位6RTR:远程发送请求n位54:保留(取0)n位30:数据长度代码扩展帧nRX标识码1(EFF)(地址17)n位70 :对应ID.28ID.21nRX标识码2(EFF)(地址18)n位70 :对应ID.20ID.13nRX标识码3(EFF)(地址19)n位70 :对应ID.12ID.5RX标识码4(EFF)(地址20)扩展帧n位73 :对应ID.4ID.0

11、n位20 :保留(13)验收滤波器n验收代码寄存器ACRn(n:03 地址1619 复位时可读写)n验收屏蔽寄存器AMRn(n:03 地址2023 复位时可读写)n接收标准帧报文的滤波器的配置n通过设置模式寄存器MOD.3 AFM (1:单滤波模式 0:双滤波模式)标准帧的单滤波器接收n注意ACR1和AMR1的低4位是不用的,置为1作为无关。扩展帧的单滤波器接收n注意ACR3和AMR3的低2位是不用的,置为1作为无关。标准帧的双滤波器接收n一条接收的报文要和两个滤波器比较来决定是否接收。扩展帧的双滤波器接收(14)RX报文计数器RMC (地址29 只读 复位清0)n反映RXFIFO中有效的报文

12、数。每接收一次+1,每释放接收缓冲器-1。n位75:保留置0;n位40:为计数。(15)RX缓冲器起始地址寄存器RBSA (地址30 只读)n反映接收缓冲区窗口存放被接受的报文的第一个字节的内部RAM地址。n内部RAM地址起始为32;nCAN地址=RBSA+32;n地址范围在3263之间;n位76:保留置0;n位50:为地址值(范围031)。(16)总线时序寄存器0(BTR0)(地址6、复位时可读写)n确定波特率预引比例因子(BRP)和同步跳转宽度(SJW)的值。n76位:同步跳转宽度位域SJWntsjw = tclk(2BTR0.7+BTR0.6+1)tsjw:同步跳转宽度。定义了一个周期可

13、以被一次重新同步缩短或延长的时钟周期最大数。tclk:外晶振的振荡周期。n50位:波特率预置位域BRP,定义CAN的系统时钟tsclntscl = 2tclk(BTR0.5 BTR0.0+1)(17)总线时序寄存器1(BTR1)(地址7、复位时可读写)n确定位时间的长度、采样点的位置和在每个采样点欲获取的采样数目。如果复位模式有效,这个寄存器可以被访问(读/写)。n7位:采样位1:3次采样0: 1次采样n64位:时间段2(TSEG2)n30位:时间段1(TSEG1)ntTSEG1 = tscl( TSEG1 +1)ntTSEG2 = tscl( TSEG2 +1)(18)输出控制寄存器(OCR

14、)(地址8、复位时可读写)n建立不同的输出驱动配置。输出控制寄存器允许在软件控制下建立输出驱动器的不同配置。如果复位模式有效,此寄存器可被访问(读/写)。正常工作时,在BasicCAN模式中呈现的是FFH,在PeliCan模式中可读。(19)时钟分频寄存器(CDR)(地址31、可读写)n7位:在BasicCAN模式与PeliCAN模式之间进行选择;n6位(CBP):接收比较器旁路;n5位(RXINTEN):专用的接收中断脉冲在TX1上;n4位:0;n3位:允许使CLKOUT引脚无效;n20位:控制用于微控制器的CLKOUT频率。7.6.3 SJA1000 PeliCanPeliCan编程举例编

15、程举例n;本程序适用于带ALE发生器的新板,是两块板的收发程序n;将模块1上CS0用跳线帽短接,模块2上CS1用跳线帽短接.n;两块模块上的JUMP-4的两个跳线短接在Single侧n;用导线分别对应短接两模块上的CANL和CANH.n;(也可用带水晶头的专用CAN连接线的两头分别插在两模块的插座中而不用导线连接)n;有且只能有一块模块上的A短接到CANL,B短接到CANH.n;接通电源,运行本测试程序,在断点处查看内存单元20H27H中的值是否与30H37H中的值完全对应相等n;如果相等表示模块正常,否则用自检程序分别检测收发模块MODEEQU00H;模式寄存器CMREQU01H;命令寄存器

16、SREQU02H;状态寄存器IREQU03H;中断寄存器IEREQU04H;中断使能寄存器BTR0EQU06H;总线定时寄存器一BTR1EQU07H;总线定时寄存器二OCREQU08H;输出控制寄存器ALC EQU 0BH;仲裁丢失捕捉寄存器ECC EQU 0CH;错误代码捕捉寄存器TXERR EQU 0FH;发送错误计数器ACR0EQU10H;验收代码寄存器0ACR1EQU11H; 1ACR2EQU12H; 2ACR3EQU13H; 3AMR0EQU14H;验收屏蔽寄存器0AMR1EQU15H; 1AMR2EQU16H; 2AMR3EQU17H; 3FINEQU 10H;发送/接收帧信息ID

17、1 EQU11H;发送/接收缓冲区之标示符一ID2EQU12H;发送/接收缓冲区之标示符二DATA1 EQU13H;发送/接收数据首址RBSAEQU1EH;接收缓冲器起始地址寄存器CDR EQU1FH;时钟分频寄存器ORG 4000HJMP STARTORG 4080H;-START: MOV R1,#8 MOV R0,#20HFILL: MOV B,#11H MOV A,R1 MUL AB MOV R0,A INC R0 DJNZ R1,FILLMOV DPH, #0DEHMOV R0, #0AAHLCALL INITCAN ;CAN1初始化(CAN1片选为CS0:0DE00H) MOV D

18、PH, #0DFHMOV R0, #0BBHLCALL INITCAN ;CAN2初始化(CAN2片选为CS1:0DF00H) ;- CAN1发送2桢数据-RETRAN: MOV DPH, #0DEH MOV R0, #20H LCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意) LCALL DELAY;- CAN2接收数据- MOV DPH, #0DFH MOV R0, #30H LCALL RECV NOP ;在此处设置断点,以观察结果 JMP $INITCAN: MOVDPL,#MODE;初始化子程序,DPH、R0为入口参数MOVA,#0

19、9HMOVX DPTR,A;模式寄存器,单验收滤波器,进入复位模式MOVDPL,#CDRMOVA,#88HMOVXDPTR, A;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOVDPL,#IERMOVA,#0DHMOVX DPTR,A;中断使能寄存器,开溢出、错误、接收中断MOVDPL,#BTR0MOVA,#03HMOVXDPTR,A;总线定时寄存器一MOVDPL,#BTR1MOVA,#0FFHMOVX DPTR,A;总线定时寄存器二,6MHz晶振,波特率30KbpsMOVX A, DPTRMOVDPL,#OCRMOVA,#0AAHMOVXDPTR,A;输出控制寄存器MOVDPL,#

20、ACR0MOVA, R0MOVXDPTR,A;验收代码ACR0MOVDPL,#ACR1MOVA,#0FFHMOVX DPTR,A;无关INCDPTRMOVXDPTR,A;无关INCDPTRMOVXDPTR,A;无关MOVDPL,#AMR0MOVA,#00HMOVXDPTR,A;验收屏蔽寄存器AMR0=00HINCDPTRMOVA,#0FFHMOVXDPTR,A;AMR1INCDPTRMOVXDPTR,A;AMR2INCDPTRMOVXDPTR,A;AMR3验收屏蔽:只有ACR0是相关项MOV DPL, #RBSAMOV A, #00HMOVX DPTR, A;接收缓冲器FIFO起始地址为0MO

21、V DPL, #TXERRMOVX DPTR, A;清除发送错误计数器 MOV DPL, #ECCMOVX DPTR, A;清除错误代码捕捉寄存器 MOVDPL,#MODEMOVA,#08HMOVX DPTR,A;单滤波方式,返回工作方式RETSEND: MOV DPL,#SR;状态寄存器MOVX A,DPTR;从SJA1000 读入状态寄存器值JB ACC.4,SEND;判断是否正在接收正在接收则等待SEND0:MOVX A,DPTRJNB ACC.3,SEND0;判断上次发送是否完成未完成则等待发送完成SEND1:MOVX A,DPTRJNB ACC.2,SEND1;判断发送缓冲区是否锁定

22、锁定则等待SEND2: MOV DPL,#FIN;SJA1000 发送缓存区首址MOV A, #08HMOVX DPTR, AINC DPLMOV A, #0BBHMOVX DPTR, AINC DPLMOV A, #0FFHMOVX DPTR, AINC DPL MOV R2, #08HSEND3:MOV A, R0;R0为发送数据首址MOVX DPTR, AINC R0INC DPLDJNZ R2, SEND3MOV DPL,#CMR;命令寄存器地址MOV A,#01H;发送请求MOVX DPTR,A;启动SJA1000 发送RETRECV: MOV DPL,#SR;状态寄存器地址MOVX

23、 A,DPTRANL A, #0C3H;读取总线脱离、错误状态、接收溢出、有数据等位JNZ PROCRET ;无上述状态,结束PROC: JNB ACC.7, PROC1BUSERR: MOV DPL, #IR;IR中断寄存器,出现总线脱离 MOVX A, DPTR;读中断寄存器,清除中断位 MOV DPL, #MODE MOV A, #08H MOVX DPTR, A;将方式寄存器复位请求位清0 RET NOPPROC1: MOV DPL, #IR;总线正常 MOVX A, DPTR;读取中断位 JNB ACC.3, OTHEROVER: MOV DPL, #CMR;数据溢出处理 MOV A, #0C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论