汽车电子技术与单片机第9章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)发送数据帧子程序。
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
(2)发送远程帧
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
2.发送过程
发送子程序负责节点报文的发送。发送时用户只需将待发送 的数据按特定格式组合帧报文,送入SJA1000发送缓冲区 中,然后启动SJA1000发送即可。当然在往SJA1000发 送缓冲区送报文之前,必须先作一些判断。发送程序分发送 远程帧和数据帧两种,远程帧无数据场。
第一节 CAN总线系统智能节点设计
上一页 返回
第二节 CAN网桥设计
CAN网桥是CAN网络系统的关键设备之一,在稍大型的 CAN总线系统中经常会用到网桥。网桥也可以认为是不同速 率的CAN子网之间的网关,只要对网桥的初始化参数进行适 当配置,就能使它既具有报文转发功能,又具有报文过滤功 能。使网桥可以提高网络设计的灵活性,极大地扩展其使用 范围。
二、CAN总线系统智能节点软件设计
CAN总线智能节点的软件设计主要包括三大部分:CAN节 点初始化、报文发送和报文接收。 1.初始化过程
SJA1000的初始化只有在复位模式下才可以进行,初始化 主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽 寄存器(AMR)和接收代码寄存器(ACR)的设置、波特 率参数设置和中断允许寄存器(IER)的设置等。在完成 SJA1000的初始化设置以后,SJA1000就可以回到工作 状态,进行正常的通信任务。下面提供了SJA1000初始化 的51汇编源程序。
上一页 下一页 返回
第二节 CAN网桥设计
首先为了程序说明的需要,现将程序中用到的一些变量或符 号定义如下:
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
1.主监控程序设计 主监控程序负责对两路CAN控制器的FIFO进行监视,如某 一路FIFO非空则向另一路转发。两路FIFO的容量大小是不 wenku.baidu.com等的,在下面的程序中对应CAN控制器1的FIFO大小为 72个字节单元(30H~77H),而对应CAN控制器2的 FIFO大小为112个字节单元(78H~E7H)。采用这种不 对称配置的好处在于,可以将容量更大的FIFO分配给通信 任务更繁忙的一方,从而尽量避免FIFO的溢出。FIFO共有 两个指针:接收数据指针和发送数据指针。当两指针不相等 时即证明FIFO中存有有效数据。FIFO接收数据指针的调整 是通过接收中断子程序实现的,而发送数据指针的调整则通 过发送子程序实现。主监控程序流程图如图9-3所示。
FIFO发送数据指针和FIFO中存储数据的有效字节长度。
上一页 下一页 返回
第二节 CAN网桥设计
当目前不符合发送条件时前面发现子程序中采用的是循环等 待的办法,直到条件满足为止,而网桥的发送子程序检测到 目前发送条件不符合时则直接返回。在中断器中采用直接返 回的办法,可以让CPU利用这段时间处理其他事务,提高 CPU的执行效率,而作为单个的节点则没有这种必要。下面 提供了网桥的第一路发送子程序,第二路发送子程序除了有 关FIFO参数以外与第一路基本相同。
并联了两个30PF的小电容,可以起到滤除总线上的高频干
扰和一定的防电磁辐射的能力。另外,在两根CAN总线输入 端与地之间分别接了一个防雷击管,两输入间也分别接了一 个防雷击管,当两输入端与地之间出现瞬变干扰时,通过防 雷击管的放电可起到一定的保护作用。
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
TJA1050与CAN总线的接口部分也采用了 一定的安全和抗 干扰措施。TJA1050的CANH和CANL引脚各自通过一个 5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用, 保护TJA1050免受过流的冲击。CANH和CANL与地之间
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
3.接收过程 接收子程序负责节点报文的接收以及其他情况处理。接收子 程序比发送子程序要负责一些,因为在处理接收报文的过程 中,同时要对诸如总线关闭、错误报警、接收溢出等情况进 行处理。SJA1000报文的接收主要有两种方式:中断接收 方式和查询接收方式。两种接收方式的编程思路基本相同, 如果对通信的实时性要求不是很强,建议采用查询接收方式。 下面仅以查询方式接收报文为例对子程序作一个说明。
图9-4 接收中断子程序流程图
返回
下一页 返回
第一节 CAN总线系统智能节点设计
SJA1000的AD0~AD7连接到P89C51的P0口, 连 接到基地址为0xFA00的外部存储器片选信号,当访问地址 0xFA00~ 0xFA31时,CPU可对SJA1000执行相应的 读写操作。SJA1000的 、 、ALE分别与P89C51 的对应引脚相连, 就接P89C51的 使P89C51可 通过中断方式访问SJA1000.SJA1000的复位信号 为 低电平有效,这一点必须注意。 为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和 RX0并不是直接与TJA1050的TXD和RXD相连,而是通 过高速光耦6N137后于TJA1050相连,这样就很好的实现 了总线上个CAN节点间的电气隔离。
上一页 下一页 返回
第二节 CAN网桥设计
二、CAN网桥软件设计
CAN网桥的主要任务是在两个CAN网段之间实现数据的转 发,由于通信对时间的要求及CAN网桥CPU中内部RAM容 量有限,所以进行软件设计时要求做到存储转发的时间尽量 短。为了达到以上要求,CPU采用中断方式接受两个CAN 控制器的数据。为了节省内存和实行有效管理,CPU采用了 FIFO机制来管理内部RAM。 为了实现网桥的数据转发功能,软件主要包括以下一些子程 序:初始化子程序、主监控子程序、接收中断子程序和发送 子程序等。初始化子程序编写方法与上一节中的初始化子程 序基本相同,只是在对两个CAN控制器进行初始化应采用不 同的初始化参数,该子程序在这里不再进行介绍。下面主要 介绍其他三个子程序的设计。
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页
返回
图9-1 CAN总线系统智能节点硬件 原理图
返回
图9-2 网桥硬件结构框图
返回
图9-3 主监控程序流程图
返回
第九章 CAN控制器与80C51系列单 片机的接口技术
第一节 CAN总线系统智能节点设计 第二节 CAN网桥设计
第一节 CAN总线系统智能节点设计
一、CAN总线系统智能节点硬件设计
图9-1为CAN总线系统智能节点硬件电路原理图。从图中可 以看出,电路主要由部分所构成:单片机P89C51、独立 CAN通信控制器SJA1000、CAN总线驱动器TJA1050和 高速光电耦合器6N137.单片机P89C51负责SJA1000的 初始化,通过控制SJA1000实现数据的接收和发送等通信 任务。
上一页 下一页 返回
第二节 CAN网桥设计
3.发送子程序设计 发送子程序负责FIFO中数据的发送,网桥软件中共有两个 发送子程序,分别对应两路CAN总线控制器。发送子程序的 调用是在主监控程序中进行的,当主监控程序发现某一路 CAN控制器对应的FIFO非空时,就会调用发现子程序向另 一路发送数据。在发送子程序中除了将FIFO中数据向另一 方发送以外,同样也要进行相应的FIFO参数的调整,包括
上一页 下一页 返回
第二节 CAN网桥设计
具体程序如下:
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
2.接收中断子程序设计 接收中断子程序负责CAN总线数据的接收,网桥软件中共有 两个接收中断子程序,分别对应两路CAN总线控制器。当任 一路CAN总线控制器从总线上接收到数据时,就会向CPU 提出中断申请,CPU响应中断执行中断处理程序完成数据接 收。在中断程序中除了将CAN控制器中的接收数据存入 CPU内部相应的FIFO中以外,还要进行相应的FIFO参数 的调整,包括FIFO接收数据指针和FIFO中存储数据的有效 字节长度。当FIFO中空闲字节间不够存储最近接收数据帧 时,接收数据帧将被丢弃,直到有多余的空间释放出来为止。 图9-4是网桥第一路接收中断子程序流程图,第二路接收中 断子程序除了有关FIFO参数以外与第一路基本相同。
一、CAN网桥硬件电路设计方案
CAN网桥主要由89C52和两路CAN控制器接口组成, 89C52作为CAN网桥的单片机,负责整个网桥的监控任务 和数据转发。
下一页 返回
第二节 CAN网桥设计
两路CAN控制器接口电路基本相同,都是由CAN通信控制 器SJA1000,光电耦合电路和CAN总线驱动器TJA1050 组成。两路CAN接口的CAN总线驱动器都采用带隔离的开 关电源模块单独供电。这样就不仅实现了两路CAN接口之间 的电气隔离,也实现了网桥与CAN总线的隔离。采取隔离措 施,可使故障局限在某一网段内,而不至于影响其他同段, 既便于维护又保证了系统设备的安全。图9-2为CAN网桥硬 件结构框图。
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
(2)发送远程帧
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
2.发送过程
发送子程序负责节点报文的发送。发送时用户只需将待发送 的数据按特定格式组合帧报文,送入SJA1000发送缓冲区 中,然后启动SJA1000发送即可。当然在往SJA1000发 送缓冲区送报文之前,必须先作一些判断。发送程序分发送 远程帧和数据帧两种,远程帧无数据场。
第一节 CAN总线系统智能节点设计
上一页 返回
第二节 CAN网桥设计
CAN网桥是CAN网络系统的关键设备之一,在稍大型的 CAN总线系统中经常会用到网桥。网桥也可以认为是不同速 率的CAN子网之间的网关,只要对网桥的初始化参数进行适 当配置,就能使它既具有报文转发功能,又具有报文过滤功 能。使网桥可以提高网络设计的灵活性,极大地扩展其使用 范围。
二、CAN总线系统智能节点软件设计
CAN总线智能节点的软件设计主要包括三大部分:CAN节 点初始化、报文发送和报文接收。 1.初始化过程
SJA1000的初始化只有在复位模式下才可以进行,初始化 主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽 寄存器(AMR)和接收代码寄存器(ACR)的设置、波特 率参数设置和中断允许寄存器(IER)的设置等。在完成 SJA1000的初始化设置以后,SJA1000就可以回到工作 状态,进行正常的通信任务。下面提供了SJA1000初始化 的51汇编源程序。
上一页 下一页 返回
第二节 CAN网桥设计
首先为了程序说明的需要,现将程序中用到的一些变量或符 号定义如下:
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
1.主监控程序设计 主监控程序负责对两路CAN控制器的FIFO进行监视,如某 一路FIFO非空则向另一路转发。两路FIFO的容量大小是不 wenku.baidu.com等的,在下面的程序中对应CAN控制器1的FIFO大小为 72个字节单元(30H~77H),而对应CAN控制器2的 FIFO大小为112个字节单元(78H~E7H)。采用这种不 对称配置的好处在于,可以将容量更大的FIFO分配给通信 任务更繁忙的一方,从而尽量避免FIFO的溢出。FIFO共有 两个指针:接收数据指针和发送数据指针。当两指针不相等 时即证明FIFO中存有有效数据。FIFO接收数据指针的调整 是通过接收中断子程序实现的,而发送数据指针的调整则通 过发送子程序实现。主监控程序流程图如图9-3所示。
FIFO发送数据指针和FIFO中存储数据的有效字节长度。
上一页 下一页 返回
第二节 CAN网桥设计
当目前不符合发送条件时前面发现子程序中采用的是循环等 待的办法,直到条件满足为止,而网桥的发送子程序检测到 目前发送条件不符合时则直接返回。在中断器中采用直接返 回的办法,可以让CPU利用这段时间处理其他事务,提高 CPU的执行效率,而作为单个的节点则没有这种必要。下面 提供了网桥的第一路发送子程序,第二路发送子程序除了有 关FIFO参数以外与第一路基本相同。
并联了两个30PF的小电容,可以起到滤除总线上的高频干
扰和一定的防电磁辐射的能力。另外,在两根CAN总线输入 端与地之间分别接了一个防雷击管,两输入间也分别接了一 个防雷击管,当两输入端与地之间出现瞬变干扰时,通过防 雷击管的放电可起到一定的保护作用。
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
TJA1050与CAN总线的接口部分也采用了 一定的安全和抗 干扰措施。TJA1050的CANH和CANL引脚各自通过一个 5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用, 保护TJA1050免受过流的冲击。CANH和CANL与地之间
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
上一页 下一页 返回
第一节 CAN总线系统智能节点设计
3.接收过程 接收子程序负责节点报文的接收以及其他情况处理。接收子 程序比发送子程序要负责一些,因为在处理接收报文的过程 中,同时要对诸如总线关闭、错误报警、接收溢出等情况进 行处理。SJA1000报文的接收主要有两种方式:中断接收 方式和查询接收方式。两种接收方式的编程思路基本相同, 如果对通信的实时性要求不是很强,建议采用查询接收方式。 下面仅以查询方式接收报文为例对子程序作一个说明。
图9-4 接收中断子程序流程图
返回
下一页 返回
第一节 CAN总线系统智能节点设计
SJA1000的AD0~AD7连接到P89C51的P0口, 连 接到基地址为0xFA00的外部存储器片选信号,当访问地址 0xFA00~ 0xFA31时,CPU可对SJA1000执行相应的 读写操作。SJA1000的 、 、ALE分别与P89C51 的对应引脚相连, 就接P89C51的 使P89C51可 通过中断方式访问SJA1000.SJA1000的复位信号 为 低电平有效,这一点必须注意。 为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和 RX0并不是直接与TJA1050的TXD和RXD相连,而是通 过高速光耦6N137后于TJA1050相连,这样就很好的实现 了总线上个CAN节点间的电气隔离。
上一页 下一页 返回
第二节 CAN网桥设计
二、CAN网桥软件设计
CAN网桥的主要任务是在两个CAN网段之间实现数据的转 发,由于通信对时间的要求及CAN网桥CPU中内部RAM容 量有限,所以进行软件设计时要求做到存储转发的时间尽量 短。为了达到以上要求,CPU采用中断方式接受两个CAN 控制器的数据。为了节省内存和实行有效管理,CPU采用了 FIFO机制来管理内部RAM。 为了实现网桥的数据转发功能,软件主要包括以下一些子程 序:初始化子程序、主监控子程序、接收中断子程序和发送 子程序等。初始化子程序编写方法与上一节中的初始化子程 序基本相同,只是在对两个CAN控制器进行初始化应采用不 同的初始化参数,该子程序在这里不再进行介绍。下面主要 介绍其他三个子程序的设计。
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页
返回
图9-1 CAN总线系统智能节点硬件 原理图
返回
图9-2 网桥硬件结构框图
返回
图9-3 主监控程序流程图
返回
第九章 CAN控制器与80C51系列单 片机的接口技术
第一节 CAN总线系统智能节点设计 第二节 CAN网桥设计
第一节 CAN总线系统智能节点设计
一、CAN总线系统智能节点硬件设计
图9-1为CAN总线系统智能节点硬件电路原理图。从图中可 以看出,电路主要由部分所构成:单片机P89C51、独立 CAN通信控制器SJA1000、CAN总线驱动器TJA1050和 高速光电耦合器6N137.单片机P89C51负责SJA1000的 初始化,通过控制SJA1000实现数据的接收和发送等通信 任务。
上一页 下一页 返回
第二节 CAN网桥设计
3.发送子程序设计 发送子程序负责FIFO中数据的发送,网桥软件中共有两个 发送子程序,分别对应两路CAN总线控制器。发送子程序的 调用是在主监控程序中进行的,当主监控程序发现某一路 CAN控制器对应的FIFO非空时,就会调用发现子程序向另 一路发送数据。在发送子程序中除了将FIFO中数据向另一 方发送以外,同样也要进行相应的FIFO参数的调整,包括
上一页 下一页 返回
第二节 CAN网桥设计
具体程序如下:
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
上一页 下一页 返回
第二节 CAN网桥设计
2.接收中断子程序设计 接收中断子程序负责CAN总线数据的接收,网桥软件中共有 两个接收中断子程序,分别对应两路CAN总线控制器。当任 一路CAN总线控制器从总线上接收到数据时,就会向CPU 提出中断申请,CPU响应中断执行中断处理程序完成数据接 收。在中断程序中除了将CAN控制器中的接收数据存入 CPU内部相应的FIFO中以外,还要进行相应的FIFO参数 的调整,包括FIFO接收数据指针和FIFO中存储数据的有效 字节长度。当FIFO中空闲字节间不够存储最近接收数据帧 时,接收数据帧将被丢弃,直到有多余的空间释放出来为止。 图9-4是网桥第一路接收中断子程序流程图,第二路接收中 断子程序除了有关FIFO参数以外与第一路基本相同。
一、CAN网桥硬件电路设计方案
CAN网桥主要由89C52和两路CAN控制器接口组成, 89C52作为CAN网桥的单片机,负责整个网桥的监控任务 和数据转发。
下一页 返回
第二节 CAN网桥设计
两路CAN控制器接口电路基本相同,都是由CAN通信控制 器SJA1000,光电耦合电路和CAN总线驱动器TJA1050 组成。两路CAN接口的CAN总线驱动器都采用带隔离的开 关电源模块单独供电。这样就不仅实现了两路CAN接口之间 的电气隔离,也实现了网桥与CAN总线的隔离。采取隔离措 施,可使故障局限在某一网段内,而不至于影响其他同段, 既便于维护又保证了系统设备的安全。图9-2为CAN网桥硬 件结构框图。