基于P89C668单片机的CAN总线接口设计
发布时间:2008/6/3 0:00:00 访问次数:536
梁毓明 张振利 汪锋锁
摘要:本文介绍了philips公司生产的p89c668单片机及其与can控制器sja1000的can接口节点电路,并给出了can总线的基本通信程序:sja1000 初始化、发送和接收.
关键词:计算机系统设计;p89c668 单片机;sja1000;can 总线
can(controller area network)总线,又称控制器局域网,属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络.与其它几种现场总线相比,can 总线是最容易实现、价格也最为低廉.由于其性能好,可靠性高、设计灵活,现已广泛应用于工业现场控制、智能大厦、小区防范、交通工具、医疗仪器、环境监控等众多领域.
can总线规范已被国际标准化组织(iso)定为国际标准,can协议也是建立在国际标准化组织的开放系统互连参考模型(osi)基础上的.can总线主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议,由于can总线的可靠性高,使应用层通信协议得以大大简化.目前市场上有多种不同型号的can控制器,它们实现can协议部分电路的结构和功能大多相同,只是与单片机接口部分的结构和方式有一些差异.
为了提高硬件电路的效率,简化电路设计上的复杂性,保证电路的电气兼容性,本文采用philips公司生产的p89c668单片机和can控制器sja1000设计了can接口节点电路,并介绍了相关的软件设计.
1 can总线节点接口硬件电路设计
can节点接口硬件电路原理如图1所示.采用philips公司生产的p89c668单片机、can控制器sja1000和can总线收发器pca82c250设计接口电路来实现can总线通信.
图1 can总线接点接口硬件电路原理
p89c668单片机内带64kb flash存储器,该存储器既可并行编程,在系统编程isp中也可串行编程,在实际的成型产品中可通过isp升级用户程序. 在boot rom程序中,可通过一个默认的串行下载器(uart)对flash存储器作isp编程,而在flash代码区中并不需要调用下载器的代码,用户程序可通过调用在boot rom中的标准子程序对flash存储器擦除和再编程(即iap).
p89c688在6个时钟周期内执行一条指令,一个otp位让用户可选择传统的12个时钟周期.p89c688用先进cmos工艺制造,是80c51单片机家族的衍生品,其指令集和80c51相同.该单片机有四个8位i/o口,三个16位定时器/事件计数器,多中断源,四个优先级,可嵌套中断结构,一个增强型uart和片内振荡器以及时序电路.p89c668新增特性使其成为一个功能强大的单片机,可为某些应用提供pwm、高速的i/o和加/减计数.
sja1000 是philips 公司生产的独立can 通信控制器,它既支持can2.0a,又支持can2.0b,与pca82c200 can 控制器兼容(basiccan),并可替代pca82c200;增加了一种新的工作模式pelican,使其支持具有很多新特性的can2.0b 协议;集成了can 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理;具有多主结构、总线访问优先权、硬件滤波等特点.
pc82c250为can总线收发器,是can 控制器和物理总线的接口,提供对总线的驱动发送能力、对can控制器的差动发送能力和对can控制器的差动接收能力.它具有很强的抗瞬间干扰和保护总线的能力,以及三种不同的工作方式即高速、斜率控制和待机,如表1所示.总线上的某一个节点掉电不会影响总线,在40米内应用的速度可达1m baud,最多可挂110个节点.
从图1 可看出,该硬件电路主要由单片机p89c668、can 独立控制器sja1000 和can 收发器pca82c250 组成.
单片机p89c668 负责对sja1000 进行初始化,通过控制sja1000实现数据的发送与接收等通信任务.
sja1000 的ad0~ad7连接到p89c668 的p0口;
cs连接到p89c668的p1.1,p1.1 为0 时选中sja1000,可控制sja1000;
sja1000 的rd/e、wr、ale/as 分别连接到p89c668 的rd(p3.7)、wr(p3.6)、p1.0;
sja1000的(int)连接到p89c668 的p3.2(int0),这样,p89c668 可以通过中断方式访问sja1000;
sja1000的模式选择引脚mode 接高电平时选择intel 模式;
为了保证时钟同步,sja1000 的clkout 引脚使能,向p89c668 提供时钟源.
2 can 总线节点接口软件设计
实现can 总线通信,要对can 总线节点接口设计相应的总线通信程序;在总线通信之前,必须进行sja1000 控制器初始化.在上电或复位后,单片机通过运行其自身复位程序初始化sja1000.can总线通信程序大致由sja1000 初始化、发送和接收三部分组成.以下分别对他们进行简单的描述.
2.1 sja1000 初始化
在上电后,can 控制器的rst 脚获得一
关键词:计算机系统设计;p89c668 单片机;sja1000;can 总线
can(controller area network)总线,又称控制器局域网,属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络.与其它几种现场总线相比,can 总线是最容易实现、价格也最为低廉.由于其性能好,可靠性高、设计灵活,现已广泛应用于工业现场控制、智能大厦、小区防范、交通工具、医疗仪器、环境监控等众多领域.
can总线规范已被国际标准化组织(iso)定为国际标准,can协议也是建立在国际标准化组织的开放系统互连参考模型(osi)基础上的.can总线主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议,由于can总线的可靠性高,使应用层通信协议得以大大简化.目前市场上有多种不同型号的can控制器,它们实现can协议部分电路的结构和功能大多相同,只是与单片机接口部分的结构和方式有一些差异.
为了提高硬件电路的效率,简化电路设计上的复杂性,保证电路的电气兼容性,本文采用philips公司生产的p89c668单片机和can控制器sja1000设计了can接口节点电路,并介绍了相关的软件设计.
1 can总线节点接口硬件电路设计
can节点接口硬件电路原理如图1所示.采用philips公司生产的p89c668单片机、can控制器sja1000和can总线收发器pca82c250设计接口电路来实现can总线通信.
图1 can总线接点接口硬件电路原理
p89c668单片机内带64kb flash存储器,该存储器既可并行编程,在系统编程isp中也可串行编程,在实际的成型产品中可通过isp升级用户程序. 在boot rom程序中,可通过一个默认的串行下载器(uart)对flash存储器作isp编程,而在flash代码区中并不需要调用下载器的代码,用户程序可通过调用在boot rom中的标准子程序对flash存储器擦除和再编程(即iap).
p89c688在6个时钟周期内执行一条指令,一个otp位让用户可选择传统的12个时钟周期.p89c688用先进cmos工艺制造,是80c51单片机家族的衍生品,其指令集和80c51相同.该单片机有四个8位i/o口,三个16位定时器/事件计数器,多中断源,四个优先级,可嵌套中断结构,一个增强型uart和片内振荡器以及时序电路.p89c668新增特性使其成为一个功能强大的单片机,可为某些应用提供pwm、高速的i/o和加/减计数.
sja1000 是philips 公司生产的独立can 通信控制器,它既支持can2.0a,又支持can2.0b,与pca82c200 can 控制器兼容(basiccan),并可替代pca82c200;增加了一种新的工作模式pelican,使其支持具有很多新特性的can2.0b 协议;集成了can 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理;具有多主结构、总线访问优先权、硬件滤波等特点.
pc82c250为can总线收发器,是can 控制器和物理总线的接口,提供对总线的驱动发送能力、对can控制器的差动发送能力和对can控制器的差动接收能力.它具有很强的抗瞬间干扰和保护总线的能力,以及三种不同的工作方式即高速、斜率控制和待机,如表1所示.总线上的某一个节点掉电不会影响总线,在40米内应用的速度可达1m baud,最多可挂110个节点.
从图1 可看出,该硬件电路主要由单片机p89c668、can 独立控制器sja1000 和can 收发器pca82c250 组成.
单片机p89c668 负责对sja1000 进行初始化,通过控制sja1000实现数据的发送与接收等通信任务.
sja1000 的ad0~ad7连接到p89c668 的p0口;
cs连接到p89c668的p1.1,p1.1 为0 时选中sja1000,可控制sja1000;
sja1000 的rd/e、wr、ale/as 分别连接到p89c668 的rd(p3.7)、wr(p3.6)、p1.0;
sja1000的(int)连接到p89c668 的p3.2(int0),这样,p89c668 可以通过中断方式访问sja1000;
sja1000的模式选择引脚mode 接高电平时选择intel 模式;
为了保证时钟同步,sja1000 的clkout 引脚使能,向p89c668 提供时钟源.
2 can 总线节点接口软件设计
实现can 总线通信,要对can 总线节点接口设计相应的总线通信程序;在总线通信之前,必须进行sja1000 控制器初始化.在上电或复位后,单片机通过运行其自身复位程序初始化sja1000.can总线通信程序大致由sja1000 初始化、发送和接收三部分组成.以下分别对他们进行简单的描述.
2.1 sja1000 初始化
在上电后,can 控制器的rst 脚获得一
梁毓明 张振利 汪锋锁
摘要:本文介绍了philips公司生产的p89c668单片机及其与can控制器sja1000的can接口节点电路,并给出了can总线的基本通信程序:sja1000 初始化、发送和接收.
关键词:计算机系统设计;p89c668 单片机;sja1000;can 总线
can(controller area network)总线,又称控制器局域网,属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络.与其它几种现场总线相比,can 总线是最容易实现、价格也最为低廉.由于其性能好,可靠性高、设计灵活,现已广泛应用于工业现场控制、智能大厦、小区防范、交通工具、医疗仪器、环境监控等众多领域.
can总线规范已被国际标准化组织(iso)定为国际标准,can协议也是建立在国际标准化组织的开放系统互连参考模型(osi)基础上的.can总线主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议,由于can总线的可靠性高,使应用层通信协议得以大大简化.目前市场上有多种不同型号的can控制器,它们实现can协议部分电路的结构和功能大多相同,只是与单片机接口部分的结构和方式有一些差异.
为了提高硬件电路的效率,简化电路设计上的复杂性,保证电路的电气兼容性,本文采用philips公司生产的p89c668单片机和can控制器sja1000设计了can接口节点电路,并介绍了相关的软件设计.
1 can总线节点接口硬件电路设计
can节点接口硬件电路原理如图1所示.采用philips公司生产的p89c668单片机、can控制器sja1000和can总线收发器pca82c250设计接口电路来实现can总线通信.
图1 can总线接点接口硬件电路原理
p89c668单片机内带64kb flash存储器,该存储器既可并行编程,在系统编程isp中也可串行编程,在实际的成型产品中可通过isp升级用户程序. 在boot rom程序中,可通过一个默认的串行下载器(uart)对flash存储器作isp编程,而在flash代码区中并不需要调用下载器的代码,用户程序可通过调用在boot rom中的标准子程序对flash存储器擦除和再编程(即iap).
p89c688在6个时钟周期内执行一条指令,一个otp位让用户可选择传统的12个时钟周期.p89c688用先进cmos工艺制造,是80c51单片机家族的衍生品,其指令集和80c51相同.该单片机有四个8位i/o口,三个16位定时器/事件计数器,多中断源,四个优先级,可嵌套中断结构,一个增强型uart和片内振荡器以及时序电路.p89c668新增特性使其成为一个功能强大的单片机,可为某些应用提供pwm、高速的i/o和加/减计数.
sja1000 是philips 公司生产的独立can 通信控制器,它既支持can2.0a,又支持can2.0b,与pca82c200 can 控制器兼容(basiccan),并可替代pca82c200;增加了一种新的工作模式pelican,使其支持具有很多新特性的can2.0b 协议;集成了can 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理;具有多主结构、总线访问优先权、硬件滤波等特点.
pc82c250为can总线收发器,是can 控制器和物理总线的接口,提供对总线的驱动发送能力、对can控制器的差动发送能力和对can控制器的差动接收能力.它具有很强的抗瞬间干扰和保护总线的能力,以及三种不同的工作方式即高速、斜率控制和待机,如表1所示.总线上的某一个节点掉电不会影响总线,在40米内应用的速度可达1m baud,最多可挂110个节点.
从图1 可看出,该硬件电路主要由单片机p89c668、can 独立控制器sja1000 和can 收发器pca82c250 组成.
单片机p89c668 负责对sja1000 进行初始化,通过控制sja1000实现数据的发送与接收等通信任务.
sja1000 的ad0~ad7连接到p89c668 的p0口;
cs连接到p89c668的p1.1,p1.1 为0 时选中sja1000,可控制sja1000;
sja1000 的rd/e、wr、ale/as 分别连接到p89c668 的rd(p3.7)、wr(p3.6)、p1.0;
sja1000的(int)连接到p89c668 的p3.2(int0),这样,p89c668 可以通过中断方式访问sja1000;
sja1000的模式选择引脚mode 接高电平时选择intel 模式;
为了保证时钟同步,sja1000 的clkout 引脚使能,向p89c668 提供时钟源.
2 can 总线节点接口软件设计
实现can 总线通信,要对can 总线节点接口设计相应的总线通信程序;在总线通信之前,必须进行sja1000 控制器初始化.在上电或复位后,单片机通过运行其自身复位程序初始化sja1000.can总线通信程序大致由sja1000 初始化、发送和接收三部分组成.以下分别对他们进行简单的描述.
2.1 sja1000 初始化
在上电后,can 控制器的rst 脚获得一
关键词:计算机系统设计;p89c668 单片机;sja1000;can 总线
can(controller area network)总线,又称控制器局域网,属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络.与其它几种现场总线相比,can 总线是最容易实现、价格也最为低廉.由于其性能好,可靠性高、设计灵活,现已广泛应用于工业现场控制、智能大厦、小区防范、交通工具、医疗仪器、环境监控等众多领域.
can总线规范已被国际标准化组织(iso)定为国际标准,can协议也是建立在国际标准化组织的开放系统互连参考模型(osi)基础上的.can总线主要工作在数据链路层和物理层,用户可在其基础上开发适合系统实际需要的应用层通信协议,由于can总线的可靠性高,使应用层通信协议得以大大简化.目前市场上有多种不同型号的can控制器,它们实现can协议部分电路的结构和功能大多相同,只是与单片机接口部分的结构和方式有一些差异.
为了提高硬件电路的效率,简化电路设计上的复杂性,保证电路的电气兼容性,本文采用philips公司生产的p89c668单片机和can控制器sja1000设计了can接口节点电路,并介绍了相关的软件设计.
1 can总线节点接口硬件电路设计
can节点接口硬件电路原理如图1所示.采用philips公司生产的p89c668单片机、can控制器sja1000和can总线收发器pca82c250设计接口电路来实现can总线通信.
图1 can总线接点接口硬件电路原理
p89c668单片机内带64kb flash存储器,该存储器既可并行编程,在系统编程isp中也可串行编程,在实际的成型产品中可通过isp升级用户程序. 在boot rom程序中,可通过一个默认的串行下载器(uart)对flash存储器作isp编程,而在flash代码区中并不需要调用下载器的代码,用户程序可通过调用在boot rom中的标准子程序对flash存储器擦除和再编程(即iap).
p89c688在6个时钟周期内执行一条指令,一个otp位让用户可选择传统的12个时钟周期.p89c688用先进cmos工艺制造,是80c51单片机家族的衍生品,其指令集和80c51相同.该单片机有四个8位i/o口,三个16位定时器/事件计数器,多中断源,四个优先级,可嵌套中断结构,一个增强型uart和片内振荡器以及时序电路.p89c668新增特性使其成为一个功能强大的单片机,可为某些应用提供pwm、高速的i/o和加/减计数.
sja1000 是philips 公司生产的独立can 通信控制器,它既支持can2.0a,又支持can2.0b,与pca82c200 can 控制器兼容(basiccan),并可替代pca82c200;增加了一种新的工作模式pelican,使其支持具有很多新特性的can2.0b 协议;集成了can 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理;具有多主结构、总线访问优先权、硬件滤波等特点.
pc82c250为can总线收发器,是can 控制器和物理总线的接口,提供对总线的驱动发送能力、对can控制器的差动发送能力和对can控制器的差动接收能力.它具有很强的抗瞬间干扰和保护总线的能力,以及三种不同的工作方式即高速、斜率控制和待机,如表1所示.总线上的某一个节点掉电不会影响总线,在40米内应用的速度可达1m baud,最多可挂110个节点.
从图1 可看出,该硬件电路主要由单片机p89c668、can 独立控制器sja1000 和can 收发器pca82c250 组成.
单片机p89c668 负责对sja1000 进行初始化,通过控制sja1000实现数据的发送与接收等通信任务.
sja1000 的ad0~ad7连接到p89c668 的p0口;
cs连接到p89c668的p1.1,p1.1 为0 时选中sja1000,可控制sja1000;
sja1000 的rd/e、wr、ale/as 分别连接到p89c668 的rd(p3.7)、wr(p3.6)、p1.0;
sja1000的(int)连接到p89c668 的p3.2(int0),这样,p89c668 可以通过中断方式访问sja1000;
sja1000的模式选择引脚mode 接高电平时选择intel 模式;
为了保证时钟同步,sja1000 的clkout 引脚使能,向p89c668 提供时钟源.
2 can 总线节点接口软件设计
实现can 总线通信,要对can 总线节点接口设计相应的总线通信程序;在总线通信之前,必须进行sja1000 控制器初始化.在上电或复位后,单片机通过运行其自身复位程序初始化sja1000.can总线通信程序大致由sja1000 初始化、发送和接收三部分组成.以下分别对他们进行简单的描述.
2.1 sja1000 初始化
在上电后,can 控制器的rst 脚获得一