CAN128试验说明书.docx
《CAN128试验说明书.docx》由会员分享,可在线阅读,更多相关《CAN128试验说明书.docx(36页珍藏版)》请在冰豆网上搜索。
CAN128试验说明书
AT90CAN128处理器主控单元说明书
一、前言
AT90CAN128是一款低功率CMOS8位的微处理器,它是基于AVR增强型RISC结构的。
在一个时钟周期里执行强大功效的指令,AT90CAN128可完成1MIP每MHz的吞吐量,从而让系统设计者可对进程速度进行优化功率消耗。
AVR内核结合了一个丰富的指令设置,有32个通用目标工作寄存器。
所有32个寄存器都直接和运算器连接,两个独立的寄存器允许被在一个时钟周期里执行的一条单个指令访问。
这种结构比常规的微处理器更具有效率。
AT90CAN128有以下特点:
128K的内部可编程FLASH,具有可读写能力,4K的EEPROM,4K的SRAM,53个通用目标I/O接口,32个通用目标工作寄存器,一个CAN控制器,实时时钟(RTC),四个灵活的定时/计数器,具有比较输出模式和PWM,两个USART,一位定向两线串行接口,一个8通道10位的ADC,一个可编程的带有内部震荡器的看门狗计时器,一个SPI串口,JTAG测试接口,也可用于访问片上调试系统和五个软件选择的省电模式。
空闲模式会关闭CPU,但允许SRAM,定时/计数器,SPI/CAN口和中断系统继续工作。
掉电模式保存寄存器内容,但停止震荡器,禁止所有其他片上功能直到下一个中断或者硬件复位。
省电模式中,异步计时器继续运行,当其他的器件处于休眠时允许用户保留一个计时器。
ADC噪声消除模式关闭CPU和所有的I/O接口模块(但除了异步计时器和ADC),以此在ADC转换期间使噪声最小化。
在备用模式中,晶体振荡器运行当其他器件都休眠。
器件运用Atmel公司的高密度非易失的存储技术制造。
片上ISPFLASH允许程序存储器被一个常规的非易失的储存编程器或者一个在AVR内核上运行的片上启动程序,通过一个内部SPI串行接口来重新编程。
启动程序能用于任何接口在应用FLASH储存器里来下载应用程序。
当应用FLASH部分被更新时,在启动FLASH部分内的软件将继续运行,提供真正的读写操作。
由于在一个单芯片上结合了一个带有内部可编程FLASH的8位RISCCPU,Atmel的AT90CAN128可说是一个强大的微处理器,为众多的嵌入式控制应用器件提供了一个高度灵活和低费用的解决方案。
AT90CAN128AVR可支持全套的编程和系统开发工具,包括:
C编译器,宏汇编,编程调试器/仿真器,电路仿真器和成套工具。
二、AT90CAN128引脚配置
三、引脚介绍
引脚名
描述
VCC
数字电路电源
GND
地
端口A(PA7—PA0)
八位双边I/O端口端口A是一个8位双向I/O口,带有内部上拉电阻(每个位都可选择)。
端口A输出缓冲有对称的驱动特征。
当输入时,如果端口A的上拉电阻被激活,且引脚被外部拉低,引脚会输出电流。
当一个重起条件被激活时,端口A引脚为三态,即使此时时钟没有运行。
端口B(PB7—PB0)
与PortA(PA7…PA0)类似
端口C(PC7—PC0)
与PortA(PA7…PA0)类似
端口D(PD7—PD0)
与PortA(PA7…PA0)类似
端口E(PE7—PE0)
与PortA(PA7…PA0)类似
端口(PF7—PF0)
与PortA(PA7…PA0)类似
端口G(PG4—PG0)
端口G为5位双向I/O口,并具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。
复位发生时端口G为三态。
端口G也可以用做其他不同的特殊功能
NESET
复位信号输入端。
如果在该引脚上持续一个比最小脉冲时间长一些的低电平,就将产生一个复位
XTAL1
振荡器的输入端,也是内部时钟的输入端
XTAL2
振荡器的输出端
AVCC
AVCC为在F端口上的A/D转换器引脚供电。
即使ADC没有使用,它应该与VCC外部相连接。
如果ADC使用,它应通过一个低通过滤器与VCC连接
SREF
A/D转换器的模拟参数引脚
四、芯片特点
AT90CAN128是在Atmega128微处理的基础上,内置有完全符合CAN2.0A和2.0B标准协议的CAN控制器。
Atmega128为属于AVRRISC结构的8位低功耗CMOS微处理器。
由于其先进的指令集以及单周期指令执行时间,Atmega128的数据吞吐率高达1MIPS/MHZ,从而可以减缓系统在功耗和处理速度之间的矛盾。
AT90CAN128内置的CAN控制器采用MOb(消息对象)方式进行数据的发送和接收,共有15个MOb,它们具有相同的属性:
有11位标识符(2.0A协议),也可扩展至29位(2.0B议);8位数据缓冲(静态分配);Tx,Rx帧
缓冲或自动响应配置;时间标识。
4.1ATmega128
Atmega128具有如下特点:
128K字节的系统内可编程Flash(具有在写的过程中还可以读的能力,既RWW)、4K字节的EEPROM、4K字节的SRAM、53个通用I/O口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C)、两个USART、面向字节的两线接口TWI、8通道10位ADC(具有可选的可编程增益)、具有片内振荡器的可编程看门狗定时器、SPI串行端口、与IEEE1149.1规范兼容的JTAG测试接口(此接口同时还可以用于片上调试),以及六种可以通过软件选择的省电模式。
空闲模式时CPU停止工作,而SRAM、T/C、SPI端口以及中断系统可以继续工作;掉电模式时晶体振荡器停止震荡,所有功能除了中断和硬件复位之外都停止工作,寄存器的内容则一直保持;省电模式时异步定时器继续运行,以允许用户维持时间基准,器件的其他部分则处于睡眠状态;ADC噪音抑制模式时CPU和所有的I/O模块停止运行,而异步定时器和ADC继续工作,以减少ADC转换时的开关噪音;Standby模式时振荡器工作而其他部分睡眠,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式则允许振荡器和异步定时器继续工作。
Atmega128方框图
AVRCPU内核
CPU的主要任务是保证程序的正常执行,因此它必须能够访问存储器,执行运算,控制外设以及处理中断。
AVR内核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的复杂指令集微处理器高10倍的数据吞吐率。
下面是AVR结构方框图:
AVR内核结构方框图
AVR采用了Harvard结构,具有独立的数据和程序总线。
程序存储器的指令通过一级流水线运行。
CPU在执行一条指令的同时读取下一条指令。
程序存储器为可以在线编程的FLASH。
快速访问寄存器文件包括32个8位通用工作寄存器,而且都可以在一个时钟周期内访问。
从而实现单时钟周期的ALU操作。
在典型的ALU操作过程中,两个位于寄存器文件中的操作数同时被访问,然后执行相应的运算,结果再被送回寄存器文件。
整个过程仅需要一个时钟周期。
寄存器文件里有6个寄存器可以用作3个16位的间接地址寄存器指针以寻址数据空间,实现高效的地址运算。
其中一个指针还可以作为程序存储器查询表的地址指针。
这些附加的功能寄存器即为16位的X、Y、Z寄存器。
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。
ALU也可以执行单寄存器操作。
运算完成之后状态寄存器的内容将更新以反映操作结果。
程序流程通过有/无条件的跳转指令来控制,从而直接寻址整个地址空间。
大多数指令长度为16位,亦既每个程序存储器地址都包含一条16位或32位的指令。
程序存储空间分为两个区:
引导程序区和应用程序区。
这两个区都有专门的锁定位实现读和读/写保护。
用于写应用程序区的SPM指令必须位于引导程序区。
在中断和调用子程序时返回地址程序计数器(PC)保存于堆栈之中。
堆栈位于通用数据SRAM,故此其深度仅受限于SRAM的大小。
AVR具有一个灵活的中断模块。
控制寄存器位于I/O空间。
状态寄存器里有全局中断使能位。
在程序存储器起始处有一个中断向量表,每一个中断在此都有独立的中断向量。
各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。
I/O存储器空间包含64个可以直接寻址的地址。
映射到数据空间即为寄存器文件之后的地址﹩-﹩5F。
此外,Atmega128在SRAM里还有扩展的I/O空间,位于地址﹩60--﹩FF。
但是只能使用ST/STS/STD和LD/LDS/LDD指令。
关于Atmega详细资料见附录1.
4.2、CAN控制器
4.2.1、CAN控制器的特点:
完整的CAN控制器
完整的CAN2.0A和2.0B标准
15个Mob(消息对象):
——11位标识符(2.0A),29位标识符(2.0B)
——11位标识符屏蔽(2.0A),29位标识符屏蔽(2.0B)
——8位数据缓冲(静态分配)
——Tx,Rx,桢缓冲或者自动响应配置
——时间标识
在频率是8MHz时,最大传输速率位1M位/秒
TTC定时器
监听模式(用于窃听或者自动波特)
AT90CAN128内置有完全符合CAN2.0A和2.0B标准协议的CAN控制器。
采用MOb(消息对象)方式进行数据的发送和接收,共有15个MOb,它们具有相同的属性:
有11位标识符(2.0A协议),也可扩展至29位(2.0B议);8位数据缓冲(静态分配);Tx,Rx帧
缓冲或自动响应配置;时间标识。
CAN控制器的结构如图所示:
CAN控制器结构
4.2.2、Mob
MOb是一个CAN消息帧的描述符。
它包括处理一个CAN消息帧的所有信息。
这意味着一个MOb可以看成一个对象,来描述一条CAN消息。
MOb的数目是从0到14。
它们相互独立,但在多重比较的时候,低位的MOb会获得优先权。
每个MOb都被安置在一个页中来保存。
页的序号就是MOb的序号。
操作模式:
每个Mob有它自己的域来控制操作模式。
在复位之后没有默认的模式。
在使能CAN外围设备之前,每个Mob必须进行配置。
(禁止模式-CONMOB=00)
操作模式为:
——禁止模式
——发送模式
——接收模式
——自动响应
——桢缓冲接受模式
Mob配置
响应有效
RTR标志
操作模式
0
0
x
x
禁止
0
1
x
0
Tx数据桢
1
Tx远程桢
1
0
x
0
Rx数据桢
0
1
Rx远程桢
1
Rx远程桢后Tx数据桢(作为响应)
1
1
x
x
桢缓冲接收模式
Mob配置
1、禁止:
在该模式下,Mob是“自由”的
2、Tx数据桢&远程桢:
A、以下几个域必须在发送之前初始化:
——标识符标志(IDT
——初始化发送请求(RTRTAG)
——数据长度代码(DLC)
——保留位标志(RBnTAG)
——消息的数据位(MSG)
B、当Mob配置被置位后(CONMOB),Mob就准备好发送一个数据桢或者一个远程桢了。
C、然后,CAN通道扫描所有在Tx配置中的Mob,找到最高优先级的Mob并且开始发送它。
D、当发送结束,TXOK标志被置位(中断)。
E、直到一个新的初始化开始,所有参数和数据在Mob里都是有效的。
3、Rx数据桢&远程桢:
A、以下几个域必须在接收之前初始化:
——标志符标志(IDT)
——标识符屏蔽(IDMSK)
——标识符扩展(IDE)
——标识符扩展屏蔽(IDEMSK)
——远程发送请求(RTRTAG)
——远程发送请求屏蔽(RTRMSK)
——数据长度代码(DLC)
——保留位标志(RBnTAG)
B、当Mob配置被置位后(CONMOB),Mob就准备好接收一个数据桢或者一个远程桢了。
C、当一个桢标识符被CAN网络接收,CAN通道就会扫描所有在接收模式中的Mobs,试图找到有最高优先级的Mob。
D、一旦找到,则匹配的Mob中的IDT、IDE和DLC更新为新到来的(桢)值。
E、一旦接收结束,接收到的消息的数据位被储存(非远程桢)在Mob的数据缓冲区,并且RXOK标志置位(中断)。
F、直到一个新的初始化开始,所有参数和数据在Mob里都是有效的。
4、自动响应:
当期望的远程桢接收后,一个到远程桢的响应(数据桢)会被自动发送。
A、以下几个域必须在接收远程桢之前初始化:
——(类似于“Rx数据桢&远程桢”)
B、当一个远程桢匹配时,自动地,RTRTAG和响应有效位(RPLV)置位。
此时,没有标志(或者中断)置位。
由于CAN数据缓冲没有为即将到来的远程桢所用,Mob将准备好发送模式,而无任何其他的设置。
接收的远程桢的IDT、IDE、其他标志和DLC为响应所用。
C、当响应发送结束,TXOK标志置位(中断)。
D、直到一个新的初始化开始,所有参数和数据在Mob里都是有效的。
5、桢缓冲接收模式:
该模式用来接收多重桢。
Mobs间的优先级为这些即将到来的桢提供了有效的管理。
当Mobs在该模式下进行配置,则将创建一组Mobs(包括不连续Mobs)。
由于模式配置,只可能是一组。
只有当组中所有Mobs都接收到它们专用的CAN桢时,一个桢缓冲结束标志(或者中断)-BXOK-将置位。
A、在桢缓冲接收模式下的Mobs需要象在标准接收模式下一样初始化。
B、当他们各自的配置都置位(CONMOB)时,Mobs便准备好接收数据桢(或者远程桢)。
C、当一个桢标识符在CAN网络上被接收,CAN通道扫描所有在接收模式中的Mobs,试图找到有最高优先级的匹配的Mob。
D、一旦找到,则匹配的Mob中的IDT、IDE和DLC更新为新到来的(桢)值。
E、一旦接收结束,接收到的消息的数据位被储存(非远程桢)在匹配的Mob的数据缓冲区,并且RXOK标志置位(中断)。
F、当组中的最后一个Mob接收结束时,桢缓冲结束BXOK标志置位(中断),仅当组中所有的CONMOB都被重写,BXOK标志才可被清除。
G、直到一个新的初始化开始,所有Mob中的参数和数据才有效。
4.2.3、CAN位结构
一个CAN位时间,被定义成四个无重叠的时间段。
每个时间段都是由一个“时间片”的整数倍数构成的。
“时间片”或者TQ是CAN节点所用到的最小的独立时间结构。
CAN位结构
同步时间段第一个段用于使各种总线节点同步。
发送时,在时间段的起始处,当前的位是输出的。
如果有一个
位的状态在先前位和当前位间发生了变化,则总线状态通过接收节点改变。
传播时间段该时间段用于补偿在网络中的信号延迟。
补偿在总线上的信号传播延迟是必要的,通过总线节点的传送器。
段1段1用于补偿补偿边沿错误。
该段可在重复同步期间被延长。
采样点采样点是在“总线电平被读”时以及“解释成各自位的值”时的点。
它的位置是在段1的最后(在两个段之间)。
段2该段也用于补偿边沿错误。
该段可在重复同步期间被缩短,但只要在信息进程时间内,长度必须为最小,并且不能比段1的时间长。
位延长作为重复同步的结果,段1可被延长或段2可被缩短,来补偿振荡器的容错。
如果,例如传送振荡器比接收振荡器慢时,用于重复同步的下一个下降沿可被延迟。
所以,段1被延长来调整采样点,在位时间的结尾处。
位缩短另一方面,如果传送振荡器比接收振荡器快,则用于重复同步的下一个下降沿可能会来的太早。
所以在第N位中,段2被缩短来调整N+1位的采样点,在位时间的结尾处。
同步跳转宽度限制段的延长或缩短的量
4.2.4、CAN通道
CAN通道可以是处于:
使能模式
在该模式:
——CAN通道(内部TXCAN&RXCAN)使能
——输入时钟使能
备用模式
在该模式:
——传送器连续提供一个隐性电平(在内部TXCAN上),接收器禁止
——输入时钟使能
——寄存器和页仍可访问
监听模式
该模式对于CAN通道是透明的:
——使能一个硬件回送,内部TXCAN在内部RXCAN上
——在TXCAN引脚上提供一个隐性电平
——不禁止RXCAN
——冻结TEC和REC错误计数器
监听模式:
采样点和传送点:
位周期的通用结构:
4.2.5、CAN寄存器
1、通用控制寄存器CANGCON
ABRQ:
放弃请求
0:
无请求
1:
CANCDMOB寄存器中CONMOB位的对每个MOB的一个复位。
待决通信被立即禁止,进行中的通信将被正常终止,设置成合适的状态标志。
OVRQ:
过载桢请求
0:
无请求
1:
在下一个接收桢之后发送一个过载桢
过载桢可通过观察CANGSTA寄存器中的OVFG位来查出。
TTC:
定时器触发通信
0:
无TTC
1:
TTC模式
SYNTTC:
TTC同步
0:
TTC定时器在SOF上被捕获
1:
TTC定时器在EOF的最后一位上被捕获
LISTEN:
只听模式
0:
无只听模式
1:
只听模式
TEST:
测试模式
0:
无测试模式
1:
测试模式:
为工厂测试而准备的,不是为用户使用的
ENA/STB:
使能/备用模式
因为这个位是一个命令且不是立即有效的,CANGSTA寄存器中的ENFG位给出了被选模式的真实状态。
0:
备用模式:
进行中的通信被正常终止,CAN通道被冻结(每个MOB中的CONMOB位不改变)。
发送器连续提供一个隐性电平。
在这种模式下,接收器不被使能,但所有的寄存器和邮箱仍然可从CPU访问。
1:
使能模式:
一旦11个连续的隐性位被读,则CAN通道进入使能模式。
SWRES:
软件复位请求
这个能自动复位的位只是将CAN控制器复位。
0:
无复位
1:
这个复位与硬件复位是“或”的关系。
2、通用状态寄存器CANGSTA
OVFG:
过载桢标志
这个标志不会产生中断
0:
无过载桢
1:
只要产生的过载桢被发送,该位就由硬件置位
TXBSY:
发送器忙
这个标志不会产生中断
0:
发送器不忙
1:
只要一个桢(数据、远程、过载或者错误桢)或者一个ACK域被发送,该位就由硬件置位。
当一个内部桢空间被发送的时候,也置位。
RXBSY:
接收器忙
这个标志不会产生中断
0:
接收器不忙
1:
只要一个桢被接收或者被监测,该位就由硬件置位
ENFG:
使能标志
这个标志不会产生中断
0:
CAN控制器禁止:
因为一个使能或者禁止命令不会立即有效,这个状态位给出了被选模式的真实状态。
1:
CAN控制器使能
BOFF:
总线关闭模式
BOFF给出了CAN通道的状态信息。
只有进入总线关闭模式才能产生BOFFIT中断。
0:
无总线关闭模式
1:
总线关闭模式
ERRP:
错误被动模式
ERRP给出了CAN通道的状态信息。
这个标志不会产生中断
0:
无错误被动模式
1:
错误被动模式
3、通用中断使能寄存器CANGIE
ENIT:
使能所有中断(除了CAN定时器超时运行中断)
0:
中断禁止
1:
CANIT中断使能
ENBOFF:
使能总线关闭中断
0:
中断禁止
1:
总线关闭中断使能
ENRX:
使能接收中断
0:
中断禁止
1:
接收中断使能
ENTX:
使能发送中断
0:
中断禁止
1:
发送中断使能
ENERR:
使能Mob错误中断
0:
中断禁止
1:
Mob错误中断使能
ENBX:
使能桢缓冲中断
0:
中断禁止
1:
桢缓冲中断使能
ENERG:
使能通用错误中断
0:
中断禁止
1:
通用错误中断使能
ENOVRT:
使能CAN定时器超时运行中断
0:
中断禁止
1:
CAN定时器超时运行中断使能
4、使能MOB寄存器2CANEN2
5、使能MOB寄存器1CANEN1
ENMOB14:
0:
使能Mob
该位提供Mob的有效性
当Mob使能(CANCDMOB寄存器中的CONMOB1:
0位)时,该位置1。
一旦TXOK或者RXOK置1(TXOK自动应答),响应ENMOB复位。
ENMOB置0来配置Mob禁止模式,应用于异常终止或者备用模式。
0:
消息对象禁止:
Mob对一个新的发送或者接收有效
1:
消息对象使能:
Mob处于使用状态
6、时序寄存器1(设置Tscl)CANBT1
BRP5:
0:
波特率预定标器
CAN控制器系统时钟Tscl周期可传播和确定单个位定时。
Tscl=(BRP[5:
0]+1)/clkfrequency这里是频率的形式,也可化为周期
7、时序寄存器2(设置Tsjw、Tprs)CANBT2
SJW1:
0:
重复同步跳转宽度
为了比较不同总线控制器时钟振荡器间的移相,控制器必须重复同步跳转宽度来定义时钟周期的最大数。
一个位周期可由一个重复同步来缩短或者延长。
Tsjw=Tsclx(SJW[1:
0]+1)
PRS2:
0:
传播时间段
这部分位时间用于补偿网络中的物理延时。
它是总线上单个传播时间总和的两倍,输入比较器延时或者输出驱动器延时。
Tprs=Tsclx(PRS[2:
0]+1)
8、时序寄存器3(设置Tphs2、Tphs1)CANBT3
位6:
4——PHS22:
20:
段2
该段用于补偿段界限错误。
该段可由重复同步跳转宽度来缩短。
Tphs2=Tsclx(PHS2[2:
0]+1)
位3:
1——PHS12:
10:
段1
该段用于补偿段界限错误。
该段可由重复同步跳转宽度来延长。
Tphs1=Tsclx(PHS1[2:
0]+1)
SMP:
采样点
0:
一次,在采样点
1:
三次,总线的“三次采样”是采样点和“两次超过Tscl周期1/2的长度”。
该结果为三个值的主要判定的响应。
9、时钟控制寄存器(时钟分频)CANTCON
TPRSC7:
0:
CAN定时预定标器
预定标器,CAN定时器向上计数范围是0到255。
如果CAN控制器使能,则它为CAN定时器提供时钟。
CLKCANTIM=CLKx8x(CANTCON[7:
0]+1)
10、发送错误计数器寄存器CANTEC
位7:
0——TEC7:
0:
发送错误计数,范围0到255
11、接收错误计数寄存器CANREC
位7:
0——REC7:
0:
接收错误计数,范围0到255
12、最高优先级MOB寄存器CANHPMOB
位7:
4——HPMOB3:
0:
最高优先级Mob数
Mob在CANSIT寄存器中有最高优先级。
如果CANSIT=0(没有Mob),返回值为0xF
位3:
0——CGP3:
0:
CAN通用目标位
这些位能预先编程,来匹配CANPAGE寄存器的想要的配置(例如,AINC和INDX2:
0设置)
13、MOB寄存器CANPAGE页
位7:
4——MOBNB3:
0:
Mob数
Mob数的选择,有效数范围0到14
AINC:
自动增加FIFOCAN数据缓冲索引(低有效)
0:
自动增加索引(默认值)
1:
不自动增加索引
位2:
0——INDX2:
0:
FIFOCAN数据缓冲索引
进入FIFO的CAN数据位的位单元,来定义Mob
14、(MOB状态寄存器)CANSTMOB
DLCW:
数据长度代码警告
即将到来的消息不被DLC期望。
无论是什么样的桢格式,CANCDMOB寄存器的DLC域都通过接收到的DLC来更新。
TXOK:
发送OK
这个标志能产生一个中断。
它必须在整个CANSTMOB寄存器上用一个“读-修改-写