基于can总线的单片机监控系统内容摘要:
应答,无错误标志); *支持热插拔(无干扰软件驱动位速检测); *硬件禁止 CLKOUT输出。 下面只介绍 Basic CAN模式,对于 Peli CAN模式请查看参考文献 [1]。 SJA1000复位,默认为 Basic CAN械,或者通过时钟分频寄存器的 CAN模式位来选择模式。 此位清零时,为Basic CAN模式;置位时,为 Peli CAN模式。 在 Basic CAN模式下,对 SJA1000进行控制以及收发数据, 都是通过对 SJA1000内部寄存器的读 /写访问来实现的。 对于单片机而言,操作 SJA1000就像访问外部 RAM一样简单。 有两种模式 可以对 SJA1000 的内部寄存器访问,而在这两种模式下对其寄存器的访问是有区别的。 这两种模式分别是复位模式和工作模式。 当硬件复位,或控制器掉线,或置位复位请求位时, SJA1000进入复位模式;而当清除复位请求位时, SJA1000进入工作模式。 SJA1000的寄存器分布于 0~ 31连续的地址空间中。 这 32个字节可分为控制段( 10字节)、发送缓冲器段( 10字节)、接收缓冲器段( 10字节)、时钟分频器和 1 个无效字节。 在复位模式下可写的寄存器为控制段的控制寄存器、命令寄存器、接收代码寄存器、屏蔽寄存器、总线时序 0、总 线时序 输出控制寄存器,还包括接收缓冲器和时钟分频器;而在工作模式下可写的寄存器为控制寄存器、命令寄存器、发送缓冲器段、接收缓冲器段和时钟分频器。 下面根据应用需要具体介绍 SJA1000的控制寄存器、命令寄存器、状态寄存器、中断寄存器。 ( 1)控制寄存器( CR) 控制寄存器位于 SJA1000 寄存器区的 0 地址,用来设置 CAN 总线的模式和各种中断。 其各位的意义如表 1所列。 表 1 控制寄存器各位说明( CR): CAN地址 0 位 符号 名称 值 功 能 CR7 保留 CR6 保留 CR5 保留 CR4 OIE 溢出中断使能 1 使能。 如果置位数据溢出位,微控制器接收溢出中断信号 0 禁止。 微控制器不从 SJA1000接收溢出中断信号 CR3 EIE 错误中断使能 1 使能。 若出错或总线状态改变,此中断信号有效 0 禁止。 微控制器不从 SJA1000接收错误中断信号 CR2 TIE 发送中断使能 1 使能。 当信息被成功发送或发送缓冲器又被访问时,产生中断信号 0 禁止。 微控制器不从 SJA1000接收发送中断信号 CR1 RIE 接收中断使能 1 使能。 信息被无错误接收时,产生此中断信号 0 禁止。 此中断信号被禁止 CR0 RR 复位请求 1 当前。 SJA1000 检测到复位请求后,忽略当前发送 /接收信息,进入复位模式 0 空缺。 复位请求位接收到一个下降沿后, SJA1000回到工作模式 在 硬启动或总线状态位设置为 1(总线关闭)时,复位请求位被置为 ,微控制器不能把复位请求位置为 0。 如果要把复位请求位置为 0,微控制器必须先检查这一位,以确定外部复位引脚不为低电平。 复位请求位被设为 0后, SJA1000将会等待: ( 11个弱势位),如果前一次复位请求是硬件复位或 CPU初始复位; 128个总线空闲,如果前一次复位请求是 CAN控制器在重新进入总线开启模式前初始化总线造成的。 ( 2)命令寄存器( CMR) 命令寄存器对微控制来说是只写存储器。 在复位模式和工作模式下 都可对此寄存器进行访问,但是读这个地址返回值是 “11111111”。 表 2是命令寄存器各位的说明。 将睡眠模式位置为 1, SJA1000进入睡眠模式,此时没有总线活动,没有中断等待。 如果数据溢出位被置位,就不会产生数据溢出中断了。 在释放接收缓冲器命令的同时,可以发出清除数据溢出命令。 读 接收缓冲器之后,微控制器可以通过设置释放接收缓冲器为 1,来释放接收队列当前信息的内存空间。 ( 3)状态寄存器( SR) 状态寄存器对微控制器来说是只读存储器,表 3 是状态寄存器各位的 功能说明。 当传输错误计数器超过限制( 255)(总线状态位置 1,即总线关闭), CAN控制器就会将复位请求位置 1,在错误中断允许的情况下,会产生一个错误中断。 这种状态会持续到 CPU 清除复位请求位。 对于错误状态位,当至少有一个错误计数器满或超出 CPU警告限制( 96)时,错误状态位被置位。 在中断使能的情况下,会产生错误中断。 表 2 命令寄存器各位的功能说明( CMR): CAN地址 1 位 符号 名称 值 功 能 保留 保留 保留 GTS 睡眠 1 睡眠。 若没有 CAN中断等待和总线活动, SJA1000进入睡眠模式 0 唤醒。 清除数据溢出状态位 CDO 清除数据溢出 1 清除。 清除数据溢出状态位 0 无动作 RRB 释放接收缓冲器 1 释放。 接收缓冲器存放信息的内存空间将被释放 0 无动作 AT 忽略发送 1 当前。 若不是在处理过程中,等待处理的发送请求将取消 0 空缺。 无动作 TR 发送请求 1 当有。 信息被发送 0 空缺。 无动作 表 3 状态寄存器各位的功能说明( SR): CAN地址 2 位 符号 名称 值 功 能 BS 总线状态 1 总线关闭。 SJA1000退出总线活动 0 总线开启。 SJA1000加入总线活动 ES 出错状态 1 出错。 至少出现一个错误计数器满或超过 CPU报警限制 0 正常。 两个错误计数器都在警限制以下 TS 发送状态 1 发送。 SJA1000在传送信息 0 空闲。 没有要发送的信息 RS 接收状态 1 接收。 SJA1000正在接收信息 0 空闲。 没有可接收的信息 TCS 发送完毕状态 1 完毕。 最近一次发送请求被成功处理 0 未完毕。 当前发送请求未处理完毕 TBS 发送缓冲器状态 1 释放。 CPU可以向发送缓冲器写信息 0 锁定。 CPU不能访问发送缓冲器,有信息正在等待发送或正在发送 DOS 数据溢出状态 1 溢出。 信息丢失,因为 RXFFIFO中没有足够的空间来存储 0 空缺。 自从最后一次清除数据溢出命令执行,无数据溢出发生 RBS 接收缓冲 器状态 1 满。 RXFIFO中有可用信息 0 空。 无可用信息 ( 4)中断寄存器( IR) 通过中断寄存器可识别中断源。 当寄存器的 1位或多位被置位时, INT(低电平有效)引脚被激活。 寄存器被微控制器读过之后,所有会导致 INT 引脚上的电平变化的位被复位。 中断寄存器对微控制而言是只读存储器。 中断寄存器各位的功能说明如表 4所列。 表 4 中断寄存器各位的功能说明( IR): CAN地址 3 位 符号 名称 值 功 能 保留 保留 保留 WUI 唤醒中断 1 置位。 退出睡眠模式时此位被置位 0 复位。 微控制器的任何读访问将清除此位 DOI 数据溢出中断 1 设置。 当数据溢出中断使能位被置为 1时,向数据溢出状态位传送 “0 1” ,此位被置位 0 复位。 微控制器的任何读访问清除此位 EI 错误中断 1 置位。 错误中断使能时,错误状态位或总线状态位的变化会置位此位 0 复位。 微控制器的任何读访问清除此位 TI 发送中断 1 置位。 发送缓冲器状态从 0变为 1(释放)和发送中断使能时,置位此位 0 复位。 微控制器的任何读访问清除此位 RI 接收中断 1 置位。 当接收 FIFO不空和接收中断使能时置位此位 0 复位。 微控制器的任何读访问清除此位 2 SJA1000在节点中的应用实例 该节点的微控制器选用了 8 位单片机 AT89C51, SJA1000 作为 CAN 总线控制器,并且使用了 CAN 接口芯片82C此节点可直接运用到 CAN 总线网络系统中,或者对此节点电路稍加变动来满足设计的要求。 下面从硬件电路和软件设计两部分来介绍。 节点硬件电路设计 图 2是节点的电路原理图。 注意 SJA1000复位端的连接, AT89C51是高电平复位,而 SJA1000是低电平复位,因此复位信号要通过一个反相器与 SJA1000的复位端相连。 另外 SJA1000的 11脚 MODE接高电平,选择 Intel二分频模式。 SJA1000的 16脚是中断信号输出端 ,在中断允许情况下,有中断发生时, 16脚出现由高电平到低电平的跳变,因此 16 脚可以直接与 AT89C51 的外部中断输入脚相连接。 该设计中之所以选择 82C250芯片,是因为其具有高速性(最高可达 1 Mbps),具有抗瞬间干扰保护总线的能力,具有降低射频干扰的斜率控制。 此外,它可以与 110 个节点相连,防止电池与地之间发生短路,当某一个节点掉电时,不会影响总线。 在设计节点电路时,还要注意下面几点: 通过光耦与 82C250 的连接是电流隔离的接法,这样可以防止线路间的串扰。 在总线两端要接 2个 120Ω 的 总线阻抗匹配电阻。 忽略掉它们会降低总线的抗干扰能力,甚至导致无法通信。 82C250的 8脚( RS)之间接不同阻值的电阻,可选择三种不同的工作方式:高速、斜率控制 和待机,如表 5所列。 表 5 RS 选择的三种工作方式 RB提供条件 方 式 R8上的电压或电流 VRS 10μA IRS200μA VRS 待机方式 斜率方式 高速方式 IRS|10μA| VRS IRS500μA 在高速工作方式下,发送器输出晶体管简单地以尽可能快 的速度启闭。 在这种方式下,不采取任何措施限制上升和下降斜率。 建议使用屏蔽电缆以避免射频干扰问题。 通过将引脚 8接地,可选择高速方式。 对于较低速度或较短总线长度,可用非屏蔽双绞线或平行线作总线。 为降低射频干扰,应限制上升和下降斜率。 上升和下降斜率可通过由引脚 8至地连接的电阻进行控制。 斜率正比于引脚 8上的电流输出。 若引脚 8加有高电平,则电路进入低电流待机方式。 在这种方式下,发送器被关掉,而接收器转至低电流。 由于在待机方式下,接收器是慢速的,因此,第一个报文将被丢失。 TX1脚悬空, RX1引 脚的电位必须维持在约 ,否则,将不能形式 CAN协议所要求的电平逻辑 3. 2CAN总线硬件接口电路设计 硬件电路的设计主要是 CAN 通信控制器与微处理器之间和 CAN 总线收发器与物理总线之间的接口电路的设计。 CAN通信控制器是 CAN总线接口电路的核心,主要完成 CAN的通信协议,而 CAN总线收发器的主要功能是增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰 (RFI),实现热防护等。 CAN总线接口电路 SJA1000 硬件接口原理图如图 l 所示。 图中, CAN 总线控制器 SJA1000 的 ADOAD7 连接到 AT89C51的 P0口。 片选端 CS取反后连接到 AT89C51的 ,当 1时, CPU片外存储器地址可选中 SJA1000。 CPU通过这些地址可对 SJA1000执行相应的读/写操作 (即: SJA1000首地址为 8000H)。 SJA1000的 RD、WR、 ALE分别与 AT89C51的对应引脚相连。 由于 SJA1000是低电平复位,而 AT89C51是高电平复位,所以两者的复位端接法不同。 另外,当 SJA1000的 11脚 MODE接高电平时,可选择 Intel二分频模式。 SJA1000的 16 脚 (INT)是中断信号输出端,在中断允许的情况下,有中断发生时, 16 脚会输出由高电平到低电平的跳变,因此将 AT89C51的外部中断输入脚 (INT0)与该脚相连接,即可通过中断方式来访问 SJA1000。 为了增强 CAN总线节点的抗干扰能力,本设计采用 SJA1000的具有光电隔离的 CAN总线接口。 SJA1000的发送输出端 TX0与接收输入端 RXO、 RX1分别经高速集成光电耦合器 6N137隔离后,与 CAN 总线接口驱动芯片 82C250的 TXD和 RXD相连, 82C250直接与 CAN物理总线相连。 CAN总线驱动器 PCA82C250是 CAN控制器和物理总线之间的接口,具有可向总线的差动发送数据和 CAN控制器的差动接收数据的功能。 节点软件设计 根据节点电路原理图, SJA1000的首地址为 0000H。 用 MCS51汇编语言编制的初始化程序如下: CR EQU 0000H ;控制寄存器 CMR EQU 0001H ;命令寄存器 SR EQU 0001H ;命令寄存器 SR EQU 0002H ;状态寄存器 IR EQU 0003H ;中断寄存器 ACR EQU 0004H ;接收代码寄存器 AMR EQU 0005H ;接收屏蔽寄存器 BTR0 EQU 0006H ;总线时序寄存器 0 BTR1 EQU 0007H ;总线时序寄存器 1 OCR EQU 0008H ;输出控制寄存器 MOV DPTR,CR MOV A,1BH。 开放接收、出错、溢出中断 MOVX @DPTR, A ;置位复位请求,开始初始化 MOV DPTR, ACR MOV A, 03H ;接收代码寄存器为 03H MOVX DPTR, A INC D。基于can总线的单片机监控系统
相关推荐
在工业生产过程中,大量的开关量顺序控制,它按照逻辑条件进行顺序动作,并按照逻辑关系进行连锁保护动作的控制,及大量离散量的数据采集。 传统上,这些功能是通过气动或电气控制系统来实现的。 1968 年美国 GM(通用汽车)公司提出取代继电气控制装置的要求,第二年,美国数字公司研制出了基于集成电路和电子技术的控制装置,首次采用程序化的手段应用于电气控制,这就是第一代可编程序控制器,称
宣传发动。 并确定在于 6 月 14日在 XXX 村首先召开试点现场会。 一是成立工作机构。 乡党委政府成立了村务监督委员会选举工作领导小组,负责全乡建立村务监督委员会的动员培训、督促指导,制定实施方案并组织实施。 同时由各管理区领导负责 4 个片区的村务监督委员会选举指导组分片分村指导选举工作。 全乡 38个村委按照乡党委的统一安排部署,分别成立了村务监督委员会选举工作领导小组。
图 三 7 电感测试电路 电阻 、 电容 、 电感测试仪的软件设计 KEY1 C 测量程序的选择 KEY2 R 测量程序的选择 14 KEY3 L 测量程序的选择 主程序流程图 在电阻、电容、电感测试仪的设计中,便于直观性,在数码管上显示被测参数的选择,被测参数各个灯的选择以及具体设置。 通过三个按键 KEY1, KEY2,来进行灵活控制,具体操作如下: 首先插入被测元件,用 ARM
应分层实施,分层厚度视土质不同而定。 ( 8) 破桩后,桩顶锚人承台的长度应符合设计要求。 若设计无规定时,桩径 (边 长 )大于或等于 400mm 时,取 100mm;桩径小于 400mm 时,可取 50mm;桩顶应凿成平面,桩顶上的浮泥、破裂的混凝土块要清除干净。 ( 9) 成桩结束 后应按设计的要求进行成桩质量检测,检测数量和方法由设计单位书面方式确定。 若设计无要求时,则应符合以下要求: