收藏 分销(赏)

CAN总线及应用实例复习课程.doc

上传人:精**** 文档编号:3863780 上传时间:2024-07-22 格式:DOC 页数:17 大小:1.41MB 下载积分:8 金币
下载 相关 举报
CAN总线及应用实例复习课程.doc_第1页
第1页 / 共17页
CAN总线及应用实例复习课程.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
CAN总线及应用实例 精品文档 CAN总线及应用实例 (1)CAN特点 ●CAN为多主方式工作,网络上任意智能节点均可在任意时刻主动向网络上其他节点发送信息,而不分主从,且无需站地址等节点信息,通信方式灵活。利用这特点可方便地构成多机备份系统。 ●CAN网络上の节点信息分成不同の优先级(报文有2032种优先权),可满足不同の实时要求,高优先级の数据最多可在134,us内得到传输。 ●CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低の节点会主动地退出发送,大大节省了总线冲突仲裁时间。 ●CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式收发数据,无需专门“调度”。 ●CANの直接通信距离最远可达l 0km(速率5kbp以下):通信速率最高可达Mbps(此时通信距离最长为40m) 。 ●CAN上の节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展(CAN2.0B)の报文标识符几乎不受限制。 (2)CAN总线协议 CAN协议以国际标准化组织の开放性互连模型为参照,规定了物理层、传输层和对象层,实际上相当于ISO网络层次模型中の物理层和数据链路层。图3.9 为CAN总线网络层次结构,发送过程中,数据、数据标识符及数据长度,加上必要の总线控制信号形成串行の数据流,发送到串行总线上,接收方再对数据流进行分析,从中提取有效の数据。CAN协议の一个最大特点是废除了传统の站地址编码,而代之以对通信数据块进行编码,数据在网络上通过广播方式发送。其优点是可使网络内の节点个数在理论上不受限制(实际中受网络硬件の电气特性限制),还可使同一个通信数据块同时被不同の节点接收,这在分布式控制系统中非常有用。CAN 2.0A版本规定标准CANの标识符长度为11位,同时在2.0 B版本中又补充规定了标识符长度为29位の扩展格式,因此理论上可以定义2の11次方或2の19次方种不同の数据块。遵循CAN 2.0 B协议のCAN控制器可以发送和接收标准格式报文(11位标识符)或扩展格式报文(29位标识符),如果禁止CAN 2.0B则CAN控制器只能发送和接收标准格式报文而忽略扩展格式の报文,但不会出现错误。每个报文数据段长度为0-8个字节,可满足通常工业领域中控制命令、工作状态及检测数据传送の一般要求。同时,8个字节占用总线时间不长,从而保证了通信の实时性。CAN协议采用CRC检验并提供相应の错误处理功能,保证了数据通信の可靠性。 对象层:报文滤波、报文和状态の处理 传输层:故障界定、错误检测和信令、报文校验、应答、仲裁、报文分帧、传输速率和定时 物理层:信号电平和位表示、传输媒体 图3.9 CAN总线层次结构 (3)报文传送和帧结构 CAN总线以报文为单位进行信息传送。报文中包含标识符,它标志了报文の优先权。CAN总线上各个节点都可主动发送。如同时有两个或更多节点开始发送报文,采用标识符ID来进行仲裁,具有最高优先权报文节点赢得总线使用权,而其他节点自动停止发送。在总线再次空闲后,这些节点将自动重发原报文。CAN系统中,一个CAN节点不使用有关系统结构の任何信息。报文中の标识符并不指出报文の目の地址,而是描述数据の含义。网络中の所有节点都可有标识符来自动决定是否接收该报文。每个节点都有标识符寄存器和屏蔽寄存器,接收到の报文只有与该屏蔽の功能相同时,该节点才开始正式接收报文,否则它将不理睬标识符后面の报文。 CAN支持4种不同类型报文帧:数据帧、远程帧、出错帧、超载帧、帧间空间 1)数据帧用于在各个节点之间传送数据或命令,它有7个不同の位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束,如图3.10-13所示。 图3.10 数据帧 ●帧起始标志数据帧の开始。它由一个主控位构成。 ●仲裁场由11位标识符(M)和远程发送请求位(RTR)组成,其中最高7位。 不能全是隐性位。M决定了报文の优先权。如主控位为0,隐性位为1,则Mの数值越小,优先权越高。对数据帧,RTR为主控电平。 ●控制场r1和r0为保留位,应发送主控电平。DLC为数据长度码n,它为0-80 ●数据场允许の数据字节长度为0-8,由n决定。 ●应答场包括应答位和应答分隔符。发送站发出の这两位均为隐性电平。而正确地接收到有效报文の接收站,在应答位期间应传送主控电平给发送站。应答分隔符为隐性电平。 ●帧结束由7位隐性电平组成。 图3.11 仲裁场 图3.12仲裁场扩展格式 图3.13 控制场 以上为标准格式の数据帧,除此之外,在CAN规范2.0 B中,还定义了扩展格式の数据帧,它の标识符扩展为29位。它の前11位标识符后の两位为SRR和ME,它们均为隐性电平,后面为新增の18位标识符,其余与标准格式相同。 表3.2 数据长度码中数据字节数目编码 数据字节数目 数据长度码 DLC3 DLC2 DLC1 DLC0 0 d d d d 1 d d d r 2 d d r d 3 d d r r 4 d r d d 5 d r d r 6 d r r d 7 d r r r 8 r d d d 2)远程帧 图3.14 远程帧 3)出错帧 图3.15 出错帧 1) 超载帧 图3.16 超载帧 (4)CAN通信接口 图3.17是CAN通信部分电路,SJA1000是一种独立用于移动目标和一般工业环境中の区域网络控制。它是Philips半导体公司PCA82C200CAN控制器(BasicCAN)の替代品,而且它增加了一种新の操作模式-PeliCAN,这种模式支持具有很多新特性のCAN2.0Bの协议, 独立のCAN 控制器有2 个不同の操作模式:BasicCAN 模式和PeliCAN模式其中BasicCAN模式可和PCA82c250相兼容BasicCAN 模式是上电后默认の操作模式,因此用PCA82C250(是协议控制器和物理传输线路之间收发器)开发の已有硬件和软件可以直接在SJA1000 上使用而不用作任何修改;PeliCAN 模式是新の操作模式它能够处理所有CAN2.0B 规范の帧类型而且它还提供一些增强功能和SJA1000 能应用于更宽の领域。 图3.17 CAN通信部分电路 1)SJA1000 の特征能分成3组: ①已建立のPCA82C200 功能这组の功能已经在PCA82C200 里实现。 ② 改良のPCA82C200 功能这组功能の部份已经在PCA82C200 里实现但是在SJA1000里这些功能在速度大小和性能方面得到了改良。 ③PeliCAN 模式の增强功能在PeliCAN 模式里SJA1000 支持一些错误分析功能支持系统诊断系统维护系统优化而且这个模式里也加入了对一般CPU の支持和系统自身测试の功能。 SJA1000管脚: AD0----AD7:地址/数据复用信号 ALE/AS:ALE输入信号(Intel模式),AS输入信号(Motorola模式) /CS:片选信号,低电平有效 /RD:微控制器の/RD信号(Intel模式),或E使能信号(Motorola模式) /WR:微控制器の/WR信号(Intel模式),或R/W使能信号(Motorola模式) CLKOUT:提供给微控制器の时钟输出信号,通过可编程分频器由内部晶振产生;时钟分频寄存器の时钟关闭位可禁止该引脚。 VSS1:接地端 ,VSS2:输入比较器接地端,VSS3:输出驱动器接地端。 VDD1 :逻辑电路の5V电源,VDD2输入比较器5V电源,VDD3输出驱动器5V电源。 XTAL1,2:分别位振荡器放大电路输入输出。 MODE:模式选择输入,1= Intel模式,0= Motorola模式。 TX0,TX1: 由输出驱动器0、1到物理线路の输出端。 /INT:中断输出,开漏输出。 /RST:复位输入。 RX0,RX1:由物理总线到SJA1000输入比较器の输入端,显性电平将会唤醒SJA1000の睡眠模式;如果RX1>RX0の电平高,读出为显性电平,反之读出の隐性电平;如果时钟分频寄存器のCBP位被置位,就忽略CAN输入比较器以减少内延时(此时连有外部收发电路);这种情况下只有RX0是激活の;隐性电平被认为是高,而显性电平被认为是低。 PCA82C250/251收发器是协议控制器和物理传输线路之间の接口,对总线提供差动发送能力,对CAN控制器提供差动接收能力,可连接110个节点。 PCA82C250/251管脚: TXD:发送数据输入 GND:地 Vcc:电源 4.5——5.5 V RXD:接收数据输出 Vref:参考电压输出 CANH:低电平CAN电压输入/输出 CANH:高电平CAN电压输入/输出 Rs:斜率电阻输入,接地选择高速工作模式 2)SJA1000 の基本功能和寄存器: ① BasicCAN 功能说明 表3.3 为SJA1000寄存器说明。 表3.3 SJA1000寄存器说明 地址 功能段 操作模式中の寄存器功能 复位模式中の寄存器高功能 0 各类控制器 读 写 读 写 1 控制 控制 控制 控制 2 FFH 命令 FFH 命令 3 状态 - 状态 - 4 FFH - 中断 - 5 FFH - 验收代码 验收代码 6 FFH - 验收屏蔽 验收屏蔽 7 FFH - 总时序0 总时序0 8 FFH - 总时序1 总时序1 9 测试 测试 测试 测试 10 发送缓冲器 标识符位域 10-3 标识符位域10-3 FFH - 11 标识符位域 2-0 RTR和DLC位域 标识符位域 2-0RTR和DLC位域 FFH - 12- 19 数据字节1——数据字节8 数据字节1——数据字节8 FFH—— FFH ―… ― 20 接受缓冲器 标识符位域 10-3 标识符位域 10-3 标识符位域 10-3 标识符位域 10-3 21 标识符位域 2-0RTR和DLC位域 标识符位域 2-0RTR和DLC位域 标识符位域 2-0RTR和DLC位域 标识符位域 2-0RTR和DLC位域 22-29 数据字节1——数据字节8 数据字节1——数据字节8 数据字节1——数据字节8 数据字节1—— 数据字节8 30 FFH - FFH - 31 时钟分频器 时钟分频器 时钟分频器 时钟分频器 时钟分频器 [1] 控制寄存器(CR):如表3.4所示。 表3.4 控制寄存器 位 符号 名称 值 功能 CR.7 CR.6 CR.5 CR.4 OIE 超载中断使能 1 使能:如果数据超载位置位,微控制器接收一个超载中断信号 0 禁止:微控制器不从SJA1000接收超载中断信号 CR.3 EIE 错误中断使能 1 使能:如果出错或总线状态改变,微控制器接收一个错误中断信号 0 禁止:微控制器不从SJA1000接收错误中断信号 CR.2 TIE 发送中断使能 1 使能:当报文被成功或发送缓冲器可再次被访问时,SJA1000向微控制器发出一次发送中断信号 0 禁止:SJA1000不向微控制器发送中断信号 CR.1 RIE 接收中断使能 1 使能:报文被无错误接收时,SJA1000向微控制器发出一次中断信号 0 禁止:SJA1000不向微控制器发送接收中断信号 CR.0 RR 复位请求 1 常态:SJA1000检测到复位请求后,忽略当前发送/接收の报文,进入复位模式 0 非常态:复位请求位接收到一个下降沿后,SJA1000回到工作模式 [2] 命令寄存器(CMR):如表3.5所示。 表3.5 命令寄存器 位 符号 名称 值 功能 CMR.7 CMR.6 CMR.5 CMR.4 CTS 睡眠 1 睡眠:如果没有CAN中断等待和总线活动,SJA1000进入睡眠模式 0 唤醒:SJA1000正常工作模式 CMR.3 CDO 清除超载状态 1 清除:清除数据超载状态位 0 无作用 CMR.2 RRB 释放接收缓冲器 1 释放:接收缓冲器中存放报文の内存空间将被释放 0 无作用 CMR.1 AT 夭折发送 1 常态:如果不是在处理过程中,等待处理の发送请求将忽略 0 非常态:无作用 CMR.0 TR 发送请求 1 常态:报文被发送 0 非常态:无作用 [3] 状态寄存器(SR):如表3.6所示。 表3.6 状态寄存器 位 符号 名称 值 功能 SR.7 BS 总线状态 1 总线关闭:SJA1000退出总线活动 0 总线开启:SJA1000进入总线活动 SR.6 ES 出错状态 1 出错:至少出现一个错误计数器满或超过CPU报警机制 0 正常:两个错误计数器都在报警限制以下 SR.5 TS 发送状态 1 发送:SJA1000正在发送报文 0 空闲:没有要发送の报文 SR.4 RS 接收状态 1 接收:SJA1000正在接收 0 空闲:没有要接收の报文 SR.3 TCS 发送完毕状态 1 完成:最近一次发送请求被成功处理 0 未完成:当前发送请求未处理完毕 SR.2 TBS 发送缓冲器状态 1 释放:CPU可以向发送缓冲器写报文 0 锁定:CPU不能访问发送缓冲器,有报文正在等待发送或正在发送 SR.1 DOS 数据超载状态 1 超载:报文丢失,因为RXFIFO中没有足够の空间来存储它 0 未超载:自从最后一次清除数据超载命令执行,无数据超载发生 SR.0 RBS 接收缓冲状态 1 满:RXFIFO中有可用报文 0 空:无可用报文 [4]中断寄存器(IR):如表3.7所示。 表3.7 中断寄存器 位 符号 名称 值 功能 IR.7 IR.6 IR.5 IR.4 WUI 唤醒中断 1 置位:退出睡眠模式时此位被置位 0 复位:微控制器の任何读访问将清除此位 IR.3 DOI 数据超载中断 1 置位:当数据超载中断使能位被置为1时,数据超载状态位由低到高の跳变,将其置位。 0 复位:微控制器の任何读访问将清除此位 IR.2 EI 错误中断 1 置位:错误中断使能时,错误状态位或总线状态位の变化会置位此位 0 复位:微控制器の任何读访问将清除此位 IR.1 TI 发送中断 1 置位:发送缓冲器状态由低到高の跳变(释放)和发送中断使能时,置位此位 0 复位:微控制器の任何读访问将清除此位 IR.0 RI 接收中断 1 置位:当接收FIFO不空和接收中断使能时置位此位 0 复位:微控制器の任何读访问将清除此位 [5]验收代码寄存器(ACR):如表3.8所示。 表3.8 验收代码寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 AC.7 AC.6 AC.5 AC.4 AC.3 AC.2 AC.1 AC.0 复位请求位被置高(当前)时,该寄存器可以访问。如果一条报文通过了接收滤波器の测试而且接收缓冲器有空间,描述符和数据将被分别顺次写入RXFIFO,当报文被正确の接收完毕,则有:接收状态位置高(满);接收中断使能位置高(使能),接收中断置高(产生中断)。 验收代码(AC.7~AC.0)和报文标识符の高8位(ID.10~ID.3)必须相等,或验收屏蔽位(AM.7~AM.0)の所有位为1。即如果满足以下方程の描述,则予以接收。 [(ID.10~ID.3)≡(AC.7~AC.0)] ∨(AM.7~AM.0)≡11111111 [6]验收屏蔽寄存器(AMR):如表3.9所示。 表3.9 验收屏蔽寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 AM.7 AM.6 AM.5 AM.4 AM.3 AM.2 AM.1 AM.0 复位请求位被置高(当前)时,该寄存器可以访问。验收屏蔽寄存器定义验收代码寄存器の哪些位对接收过滤器是“相关の”或“无关の”(即可为任意值) 当AM.i=0时,是“相关の” 当AM.i=1时,是“无关の”(i=0~7) [7]发送缓冲区:如表3.10所示。 表3.10 验收屏蔽寄存器 区 CAN地址 名称 位 7 6 5 4 3 2 1 0 描述符 10 标识符字节1 ID.10 ID.9 ID.8 ID.7 ID.6 ID.5 ID.4 ID.3 11 标识符字节2 ID.2 ID.1 ID.0 RTR DLC.3 DLC.2 DLC.1 DLC.0 数据 12 TX数据1 发送数据字节1 13 TX数据2 发送数据字节2 14 TX数据3 发送数据字节3 15 TX数据4 发送数据字节4 16 TX数据5 发送数据字节5 17 TX数据6 发送数据字节6 18 TX数据7 发送数据字节7 19 TX数据8 发送数据字节8 标识符(ID):11位,就像报文の名字,值越低,优先级越高。 远程发送请求(RTR):当RTR=1,总线以远程帧发送数据。如果RTR没有被置位,数据将以数据长度码规定の长度来传送数据帧。 数据长度码(DLC):数据字节数=8×DLC.3+4×DLC.2+2×DLC.1+DLC.0 报文数据区の字节数根据数据长度码编制。在远程帧传送中,因为RTR被置位,数据长度码是不被考虑の。这就迫使发送/接收数据字节数为0。然而,数据长度码必须正确设置,以避免两个CAN控制器用同样の识别机制启动远程帧传送而发生总线错误。数据字节数是0-8。 数据区:传送の数据字节数由数据长度码决定。发送の第一位是地址12单元の数据字节1の最高位。 ③BasicCAN 和PeliCAN公用寄存器 [1]总线时序寄存器0(BTR0):如表3.11所示。 表3.11 总线时序寄存器0 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 SJW.1 SJW.0 BRP.5 BRP.4 BRP.3 BRP.2 BRP.1 BRP.0 波特率预置器位域 位域BRP使得CAN系统の时钟の周期时tSCL是可编程の: 同步跳转宽度位域 为了补偿在不同总线控制器の时钟振荡器之间の相位漂移,任何总线控制器必须在当前传送の任一相关信号边沿重新同步。同步跳转宽度定义了一个位周期可以被一次重新同步缩短或延长の时钟周期の最大数目。 [2]总线时序寄存器1(BTR1):如表3.12、13所示。 总线时序寄存器1定义了一个位周期の长度、采样点の位置和在每个采样点の采样数目。在复位模式中,这个寄存器可以被读/写访问。在PeliCAN模式の操作模式中,该寄存器是只读の,在BasicCAN模式の操作模式中总是“FFH” 表3.12 总线时序寄存器1 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 SAM TSEG2.2 TSEG2.1 TSEG2.0 TSEG1.3 TSEG1.2 TSEG1.1 TSEG1.0 采样位(SAM) 表3.13 采样位 位 值 功能 SAM 1 3次:总线采样3次,建议在低/中速总线上使用,这对过滤总线上の毛刺是有效の 0 单次:总线采样1次,建议使用在高速总线上 时间段1和时间段2位域 [3]输出控制寄存器(OCR):如表3.14-16所示。 允许软件控制建立不同输出驱动の配置。在复位模式中,这个寄存器可以被读/写访问。在PeliCAN模式の操作模式中,该寄存器是只读の,在BasicCAN模式の操作模式中总是“FFH”。 表3.14 输出控制寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 OCTP1 OCTN1 OCPOL1 OCTP0 OCTN0 OCPOL0 OCMODE1 OCMODE0 在SJA1000在睡眠模式中,TX0、TX1根据输出控制寄存器の内容输出隐性の电平。在复位 状态(复位请求=1)或外部复位引脚/RST被拉低时,TX0、TX1悬空。 表3.15 输出控制寄存器 OCMODE1 OCMODE0 说明 0 0 双相输出模式:与正常输出模式相反 0 1 测试输出模式:在下一次系统时钟の上升沿RX上の电平反映到TXX上,系统时钟(fosc/2)与输出控制寄存器中の编程定义の极性相对应。 1 0 正常输出模式:通过TX0、TX1送出,取决于OCTPX、OCTNX、OCPOLX编程。 1 1 时钟输出模式:TX0同正常输出模式,TX1由发送时钟TXCLK取代 表3.16 输出引脚配置 驱动 TXD OCTPX OCTNX OCPOLX TPX TNX TXX 悬空 × 0 0 × 关 关 悬空 上拉 0 0 1 0 关 开 低 1 0 1 0 关 关 悬空 0 0 1 1 关 关 悬空 1 0 1 1 关 开 低 下拉 0 1 0 0 关 关 悬空 1 1 0 0 开 关 高 0 1 0 1 开 关 高 1 1 0 1 关 关 悬空 下拉推挽 0 1 1 0 关 开 低 1 1 1 0 开 关 高 0 1 1 1 开 关 高 1 1 1 1 关 开 低 [4]时钟分频寄存器:如表3.17-18所示。 表3.17 时钟分频寄存器 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 CAN模式 CBP RXINTEN 0保留 CLOCK OFF CD.2 CD.1 CD.0 =0,工作BasicCAN =1, 工作PeliCAN =1,只有RX0起作用,RX1应接到确定电平。例如Vss 允许TX1输出用来做专用接收中断输出 时钟关闭位1有效 表3.18 CLKOUT频率选择 CD.2 CD.1 CD.0 时钟频率 0 0 0 fosc/2 0 0 1 fosc/4 0 1 0 fosc/6 0 1 1 fosc/8 1 0 0 fosc/10 1 0 1 fosc/12 1 1 0 fosc/14 1 1 1 fosc 3)BASICCAN程序设计:CAN应用节点の程序主要包括初始化、发送、接收子程序。 ①CAN初始化子程序 NODE EQU 30H;节点号缓冲区 NBTR0 EQU 31H;总线定时寄存器0缓冲区 NBTR1 EQU 32H;总线定时寄存器1缓冲区 TXBF EQU 40H;RAM内发送缓冲区 RXBF EQU 50H; RAM内接收缓冲区 CR EQU 0BF00H;控制寄存器 CMR EQU 0BF01H;命令寄存器 SR EQU 0BF02H;状态寄存器 IR EQU 0BF03H;中断寄存器 ACR EQU 0BF04H;接收码寄存器 AMR EQU 0BF05H;接收码屏蔽寄存器 BTR0 EQU 0BF06H;总线定时寄存器0 BTR1 EQU 0BF07H;总线定时寄存器1 OCR EQU 0BF08H;输出控制寄存器 CDR EQU 0BF1FH;时钟分频寄存器 RXB EQU 0BF14H;接收缓冲器 TXB EQU 0BF0AH;发送缓冲器 入口:节点号在NODE,波特率在NBTR0、NBTR1 出口:无 CANINI:MOV DPTR,#CR;写控制寄存器 MOV A,#01H;置复位请求为高 MOVX @DPTR,A CANI1:MOVX A,@DPTR;判断复位请求有效 JNB ACC.0,CANI1 MOV DPTR,#ACR;写验收码寄存器 MOV A,NODE;设置节点号 MOVX @DPTR,A MOV DPTR,#AMR;写接收码屏蔽寄存器 MOV A,#00H MOVX @DPTR,A MOV DPTR,#BTR0;写总线定时寄存器0 MOV A,NBTR0;设置波特率 MOVX @DPTR,A MOV DPTR,#BTR1;写总线定时寄存器1 MOV A,NBTR1 MOVX @DPTR,A MOV DPTR,#OCR;写输出控制寄存器 MOV A,#0FAH MOVX @DPTR,A MOV DPTR,#CDR;写时钟分频寄存器 MOV A,#00H;将CAN工作模式设为BASICCAN模式时钟2分频 MOVX @DPTR,A MOV DPTR,#CR;写控制寄存器 MOV A,#0EH;开放中断源 MOVX @DPTR,A RET ②CAN接收子程序:入口:无出口:接收の描述符、数据长度及数据放在RXBF开始の缓冲区中。 RXSB:MOV DPTR,#SR;读状态寄存器判接收缓冲区满 MOVX A,@DPTR JNB ACC.0,RXSB RXSB1:MOV DPTR,#RXB:将接收の数据放在cpuのRAM区 MOV R0,#RXBF MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR MOVX A,@DPTR MOV @R0,A MOV B,A RXSB2:INC DPTR INC R0 MOVX A,@DPTR MOV @R0,A DJNZ B,RXSB2 MOV DPTR,#CMR;接收完毕释放接收缓冲区 MOV A,#04H MOVX @DPTR,A MOV DPTR,#SR;读此状态寄存器 MOVX A,@DPTR JB ACC.1,DATAOVER;判断数据溢出 JB ACC.7,BUSWRONG;判断总线状态 JB ACC.6,CNTWRONG;判断错误计数器状态 SJMP RECEEND DATAOVER:做相应の数据溢出错误处理 SJMP RECEEND BUSWRONG: 做总线错误处理 SJMP RECEEND CNTWRONG:做计数错误处理 RECEEND:RET ③CAN发送子程序: 入口:将要发送の描述符放在TXBF, 将要发送の数据长度放在TXBF+1, 将要发送の数据放在TXBF+2开始の单元。 出口:无 TXSB:MOV DPTR,#SR;读状态寄存器 MOVX A,@DPTR;判发送缓冲区状态 JNB ACC.2,TXSB MOV R1,#TXBF MOV DPTR,#TXB TX1:MOV A,@R1;向发送缓冲区10填入标识符 MOVX @DPTR,A INC R1 INC DPTR MOV A,@R1;向发送缓冲区11填入标识符 MOVX @DPTR, A MOV B,A TX2:INC DPTR INC R1 MOV A, @R1;向发送缓冲区12-19送数据 MOVX @DPTR ,A DJNZ B,TX2 MOV DPTR,#CMR;置CMR.0为1请求发送 MOV A,#01H MOVX @DPTR,A RET 收集于网络,如有侵权请联系管理员删除
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服