- 1、本文档共90页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1-CAN总线摘要
2)接收子程序 中断方式 unsigned char RXB[10]; void ISR_CAN_RX() interrupt 0 { unsigned char i; unsigned char xdata *p; if(IR0x01)//清除中断标记,如果是接收中断 { p=0xbf14; for(i=0;i10;i++)RXB[i]=*p; CMR=0x04;//释放接收缓冲区 } } 3)发送子程序 //查询方式 unsigned char TXB[10]; CAN_Send() { unsigned char xdata *p; unsigned char i; if(SR0x04)//若发送缓冲器空闲 { p=0xbf0a; for(i=0;i10;i++)*p=TXB[i]; CMR=0x01;//请求发送 } } 引脚介绍 SJA1000引脚图: AD0~AD7 ALE,CS,RD,WR,CLKOUT,INT,RST XTAL1,XTAL2,MODE,VSS1,VSS2,VSS3, VDD1,VDD2,VDD2 RX0,RX1(RX1高代表显性电平=逻辑0) TX0,TX1(可编程分别输出) 引脚图: 一、基本模式下的寄存器地址分配 控制段 系统初始化时对控制段进行编程,以配置通讯参数 微处理器也可通过控制段来控制总线通讯 数据段 报文被发送前,微处理器将报文写入发送缓冲区 成功接收一个报文后 ,写入接收缓冲区 微处理器读接收缓冲区并释放缓冲区 注意:复位模式和工作模式地址分配不同。 5.1.2.4 BasicCAN功能说明 BasicCAN 寄存器地址分配 寄存器地址 功能段 寄存器 工作模式 复位模式 读 写 读 写 0 各 类 控 制 器 控制寄存器 CR √ √ √ √ 1 命令寄存器 CMR FFH √ FFH √ 2 状态寄存器 SR √ × √ × 3 中断寄存器 IR √ × √ × 4 屏蔽码寄存器 ACR FFH × √ √ 6 接收屏蔽寄存器 AMR FFH × √ √ 6 总线定时寄存器0 BTR0 FFH × √ √ 7 总线定时寄存器1 BTR1 FFH × √ √ 8 输出控制寄存器 OCR FFH × √ √ 9 仅用于测试 10~19 发送缓冲器 输出缓冲寄存器 TXB √ √ FFH × 20~29 接收缓冲器 输入缓冲寄存器 RX √ √ √ √ 30 未用 FFH × FFH × 31 时钟分频器 时钟分频寄存器 OCR √ 部分√ √ √ 1、控制寄存器CR(CAN地址0) CR.7 CR.6 CR.5 CR.4 CR.3 CR.2 CR.1 CR.0 保留未用 OIE EIE TIE RIE RR 二、控制段 (1)OIE:超载中断允许位。 (2)EIE:错误中断允许位。 (3)TIE:发送中断允许位。 (4)RIE:接收中断允许位。 (5)RR :复位请求位。 2、命令寄存器 CMR(CAN地址1) CMR.7 CMR.6 CMR.5 CMR.4 CMR.3 CMR.2 CMR. 1 CMR.0 保留未用 GTS CDO RRB AT TR (1) GTS:睡眠命令位。 (2) CDO:清除数据超载状态位。 (3) RRB:释放接收缓存器命令位。 (4) AT:中止发送命令位。 (5) TR:发送请求位。 3、 状态寄存器 SR(CAN地址2) SR7 SR6 SR5 SR4 SR3 SR2 SR1 SR0 BS ES TS RS TCS TBS DOS RBS (1)BS: 总线状态标志,“1”表示处于总线脱离状态。当发送错误计数器超过255的极限时,SJA1000自动将BS置“1”并产生一个错误中断(若允许),同时控制器进入复位工作方式,直到MCU清除BS。 (2)ES: 错误状态标志,当至少有一个错误计数器达到或超过警告极限时该位被置“1”,若允许错误中断还将产生中断。 (3)?TS: 发送状态标志,“1”表示SJA1000正在发送数据。 (4)RS: 接收状态标志,“1”表示SJA1000正在接收数据,若TS和RS同时为“0”,则表明总线空闲。 (5)??TCS: 发送完成标志,“1”表示上次的发送已成功完成。 (6)??TBS: 发送缓冲区状态标志,“1”表示发送缓冲区可写。若该位为“0”时,MCU写发送缓冲区,则写入数据无效且被丢失。 (7)?DOS: 数据超载标志,“1”表示由于RXFIFO没有足够的空间,收到的报文丢失。 (8)RBS: 接收缓冲区状态标志,“1”表示RXFIFO中至少有一个报文。当MCU读取报文后,应给出释放接收缓冲区的命
文档评论(0)