单片机原理及接口技术A第6章_第1页
单片机原理及接口技术A第6章_第2页
单片机原理及接口技术A第6章_第3页
单片机原理及接口技术A第6章_第4页
单片机原理及接口技术A第6章_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1简介6.2片内模/数转换器6.312位数/模转换器DAC6.4比较器6.5复位及晶振6.6输入/输出端口6.7总线及通信6.8定时器6.9JTAG调试和边界扫描6.10C8051F040最小系统板简介及应用实例

C8051F040单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件。MCU中的外设或功能部件包括模拟多路选择器、可编程增益放大器、ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/I2C、CAN2.0、UART、SPI、可编程计数/定时器阵列(PCA)、定时器、数字I/O端口、电源监视器、看门狗定时器(WDT)和时钟振荡器等。6.1简介

C8051F040的特征如下:

25MIPS8051CPU。

4352字节RAM。

外部数据存储接口。

五个16位定时器,可编程计数器阵列(PCA)。

12位ADC:100kb/s;8位ADC:500kb/s。

12位DAC。

JTAG非侵入式在系统调试。

64KBFlash。

CAN2.0B,32目标信息。

两个UART,SPI,SMBus/I2C。

64个I/O口。

60V输入的PGA。

有比较器、电压基准、温度传感器。

-40~+85℃;TQFP-100封装。

C8051F040单片机的内部结构框图和引脚图如图6.1所示,各引脚的定义如表6.1所示。图6.1C8051F040单片机的内部结构框图和引脚图

(a)内部结构框图图6.1C8051F040单片机的内部结构框图和引脚图(b)引脚图表6.1C8051F040引脚定义表续表一续表二续表三续表四6.1.1CIP-51处理器特性

C8051F040单片机采用流水线结构,机器周期由标准的12个系统时钟周期降为1个系统时钟周期,处理能力大大提高,峰值性能可达25MIPS。C8051F040单片机是真正能独立工作的片上系统(SOC)。MCU能有效地管理模拟和数字外设,可以关闭单个或全部外设以节省功耗。

CIP-51内核70%的指令执行是在一个或两个系统时钟周期内完成的,只有四条指令的执行需四个以上时钟周期。

CIP-51指令与MCS-51指令系统全兼容,共有111条指令。表6.2为指令数所对应的时钟周期数。表6.2指令数所对应的时钟周期数图6.2是几个典型MCU指令的执行速度对照图。图6.2典型MCU指令的执行速度对照图6.1.2存储器组织结构

1.数据存储器

CIP-51具有标准8051的程序和数据地址配置。它包括256字节的RAM,其中高128字节只能用直接寻址访问的SFR地址空间方式访问;低128字节可用直接或间接寻址方式访问,前32个字节为四个通用工作寄存器区,接下来的16字节既可以按字节寻址也可以按位寻址。

另外,C8051F040除了内部可扩展4KB数据RAM外,片外还可扩展至64KB数据RAM。

2.程序存储器

C8051F040单片机程序存储器为64KB的Flash存储器,该存储器可按512B为一扇区编程,也可以在线编程,且不需在片外提供编程电压。该程序存储器未用到的扇区均可由用户按扇区作为非易失性数据存储器使用。

存储器组织结构如图6.3所示。图6.3片内存储器组织图6.1.3中断系统

标准的8051只有五个中断源。C8051F040单片机扩展了中断处理,这对于实时多任务系统的处理是很重要的。扩展的中断系统向CIP-51提供了20个中断源,允许大量的模拟和数字外设中断。一个中断处理需要较少的CPU干预,却有更高的执行效率。表6.3为中断一览表。表6.3中 断 一 览 表6.1.4电源管理模式

CIP-51有两种可软件编程的电源管理方式:空闲和停机。在空闲方式,CPU停止运行,而外设和时钟处于活动状态。在停机方式,CPU停止运行,所有的中断和定时器(时钟丢失检测器除外)都处于非活动状态,系统时钟停止。由于在空闲方式下时钟仍然运行,因此功耗与进入空闲方式之前的系统时钟频率和处于活动状态的外设数目有关。停机方式消耗最少的功率。虽然CIP-51具有空闲和停机方式(与任何标准8051结构一样),但最好禁止不需要的外设,以使整个MCU的功耗最小。每个模拟外设在不用时都可以被禁止,使其进入低功耗方式。如像定时器、串行总线这样的数字外设在不使用时消耗很少的功率。关闭Flash存储器可以减小功耗,这与进入空闲方式类似。关闭振荡器可以消耗更少的功率,但需要靠复位来重新启动MCU。

1.空闲方式

将空闲方式选择位(PCON.0)置1将使CIP-51停止CPU运行并进入空闲方式,在执行完对该位置1的指令后,MCU立即进入空闲方式。在空闲方式下,所有内部寄存器和存储器都保持原来的数据不变。所有模拟和数字外设在空闲方式期间都可以保持活动状态。

有被允许的中断发生或有效时将结束空闲方式。当有一个被允许的中断发生时,空闲方式选择位(PCON.0)被清0,CPU将执行该中断服务,中断返回(RETI)后将开始执行设置空闲方式选择位的那条指令的下一条指令。如果空闲方式因一个内部或外部复位而结束,则CIP-51进行正常的复位过程并从地址0x0000开始执行程序。如果被使能,WDT将产生一个内部看门狗复位,从而结束空闲方式。这一功能可以保护系统不会因为对PCON寄存器的意外写入而导致永久性停机。如果不需要这种功能,可以在进入空闲方式之前禁止看门狗。这将进一步节省功耗,允许系统一直保持在空闲状态,等待一个外部激励唤醒系统。

注意:任何将IDLE位置1的指令后面应跟随一条具有2字节或多字节操作码的指令。

例如:

2.停机方式

将停机方式选择位(PCON.1)置1将使CIP-51进入停机方式,在执行完对该位置1的指令后,MCU立即进入停机方式。在停机方式,CPU和振荡器都被停止,实际上所有的数字外设都停止工作。在进入停机方式之前,必须关闭每个模拟外设。只有内部或外部复位能结束停机方式。复位时,CIP-51进行正常的复位过程并从地址0x0000开始执行程序。

如果被使能,时钟丢失检测器将产生内部复位,从而结束停机方式。如果想要使CPU的休眠时间长于100μs的MC超时时间,则应禁止时钟丢失检测器。

SFRPCON(电源控制寄存器)的定义如下:

位7~位2:保留位。

位1:STOP——停机方式选择。该位写“1”将使CLP-51进入停机方式。该位读出值总是为0。

0——无影响。

1——CIP-51被强制进入掉电方式(关闭振荡器)。

位0:IDLE——空闲方式选择。该位写“1”将使CLP-51进入空闲方式。该位读出值总是为0。

0——无影响。

1——CIP-51被强制进入空闲方式(关闭供给CPU的时钟信号,但定时器、中断和所有外设保持活动状态)。6.1.5CIP-51寄存器

1.通用寄存器

C8051F040数据存储器的低32字节从地址0x00到0x1F,可以作为四个通用寄存器区访问。每个区有8个寄存器,称为R0~R7。在某一时刻只能选择一个寄存器区。在进入子程序或中断服务程序时可进行快速现场切换。间接寻址方式使用R0和R1作为间址寄存器。

2.位寻址空间

从0x20到0x2F的16个数据存储器单元还可以作为128个独立可寻址位访问。每个位有一个位地址,从0x00到0x7F。位于地址0x20的数据字节的位0具有位地址0x00;位于0x20的数据字节的位7具有位地址0x07;位于0x2F的数据字节的位7具有位地址0x7F。

MCS-51系列汇编语言允许用XX.B的形式替代位地址。其中,XX为字节地址;B为寻址位在字节中的位置。例如,指令:

MOVC,20.3h

将0x03中的布尔值(字节地址0x20中的位3)传送到进位标志。

3.堆栈

程序的堆栈可以位于256字节数据存储器中的任何位置。堆栈区域用堆栈指针(SP,0x81)SFR指定。SP指向最后使用的位置。下一个压入堆栈的数据将被存放在SP+1,然后SP加1。复位后堆栈指针被初始化为地址0x07,因此第一个被压入堆栈的数据将被存放在地址0x08,这也是寄存器区1的第一个寄存器(R0)。如果使用不止一个寄存器区,SP应被初始化为数据存储器中不用于数据存储的位置。堆栈深度最大可达256字节。

MCU内部有可被调试逻辑访问的、用于堆栈记录的硬件。堆栈记录是一个32位的移位寄存器,每次压栈(PUSH)或SP增1都向该寄存器压入一个记录位,每次调用或中断向该寄存器压入两个记录位。堆栈记录电路可以检测该32位移位寄存器的上溢和下溢,即使在MCU在全速运行时也可以通知调试软件。

4.特殊功能寄存器

从0x80到0xFF的直接寻址存储器空间为特殊功能寄存器(SFR)。SFR提供对CIP-51的资源和外设的控制及CIP-51与这些资源和外设之间的数据交换。CIP-51具有标准8051中的全部SFR,还增加了一些用于配置和访问专有子系统的SFR。这就允许在保证与MCS-51指令集兼容的前提下增加新的功能。

任何时刻用直接寻址访问从0x80到0xFF的存储器空间将访问特殊功能寄存器(SFR)。地址以0x0或0x8结尾的SFR(例如P0、TCON、P1、SCON、IE等)既可以按字节寻址也可以按位寻址,所有其他SFR只能按字节寻址。SFR空间中未使用的地址保留为将来使用,访问这些地址会产生不确定的结果,应予避免。

5.SFR分页机制

与标准8051相比,C8051F040增加了许多部件,如CAN2.0B、PCA、Timer3/4、SPI、I2C、UART1等,就需要相应的SFR去控制,而CIP-51是通过SFR的分页来实现的。特殊功能寄存器(SFR)的分页机制允许器件将很多SFR映射到0x80~0xFF这个存储器地址空间。SFR存储器空间有256页。0x80~0xFF的每个存储器地址都可以访问多达256页。C8051F040器件使用五个SFR页:0、1、2、3和F。使用特殊功能寄存器页选择寄存器SFRPAGE来选择SFR页。读和写一个SFR的步骤如下:

(1)将相应的SFR页号送入SFRPAGE寄存器。

(2)用直接寻址方式读或写特殊功能寄存器(MOV指令)。

6.中断和SFR分页

当一个中断发生时,SFR页寄存器会自动切换到引起中断的那个标志位所在的SFR页。这种自动SFR页切换功能减轻了从中断服务程序切换SFR页的负担。在执行RETI指令时,中断前使用的SFR页会被自动恢复。这是通过一个3字节的SFR页堆栈来实现的。

C8051F040的特殊功能寄存器(SFR)存储器映像如表6.4所示。表6.4特殊功能寄存器(SFR)存储器映像续表一续表二

C8051F040器件内部有一个ADC子系统,由逐次逼近型ADC、多通道模拟输入选择器和可编程增益放大器组成。

ADC工作在100ks/s的最大采样速率时可提供真正12位精度(ADC0),工作在500ks/s的最大采样速率时可提供真正8位精度(ADC2)。ADC完全由CIP-51通过特殊功能寄存器控制,系统控制器可以关断ADC以节省功耗。

ADC数据比较寄存器可被配置为当ADC数据位于一个规定的窗口之内时向控制器申请中断。ADC可以用后台方式监视一个关键电压,当转换数据位于规定的窗口之内时才向控制器申请中断。6.2片内模/数转换器6.2.112位模/数转换器ADC0

C8051F040的ADC0子系统包括一个9通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100ks/s、12位分辨率的逐次逼近寄存器型ADC,ADC中集成了跟踪保持电路和可编程窗口检测器。AMUX0、PGA0、数据转换方式及窗口检测器都可用软件通过特殊功能寄存器来控制。只有当ADC0控制寄存器中的AD0EN位被置1时ADC0子系统(ADC0、跟踪保持器和PGA0)才被允许工作。当AD0EN位为0时,ADC0子系统处于低功耗关断方式。可编程增益放大器接在模拟多路选择器之后,增益可以用软件设置,从0.5到16,以2的整数次幂递增。当不同ADC输入通道之间输入的电压信号范围差距较大或需要放大一个具有较大直流偏移的信号时(在差分方式,DAC可用于提供直流偏移),这个放大环节是非常有用的。A/D转换可以有四种启动方式:软件命令(AD0BUSY位写1)、定时器2溢出(Timer2Overflow)、定时器3溢出(Timer3Overflow)或外部信号输入(CNVSTR0)。这种灵活性允许用软件事件、硬件信号触发转换或进行连续转换。一次转换完成后可以产生一个中断,或者用软件查询一个状态位来判断转换结束。在转换完成后,转换结果数据字被锁存到特殊功能寄存器中。可以用软件控制结果数据字为左对齐或右对齐格式。图6.4ADC0功能框图

C8051F040还有一个15ppm的电压基准和内部温度传感器,并且8个外部输入通道(通过P3.0~P3.7输入)的每一对都可被配置为两个单端输入或一个差分输入,如图6.5所示。图6.5ADC0模拟输入框图6.2.28位模/数转换器ADC2

除了12位的ADC子系统ADC0之外,C8051F040还有一个8位ADC子系统,即ADC2,它有一个8通道输入多路选择器和可编程增益放大器。该ADC工作在500ks/s的最大采样速率时可提供真正的8位精度。ADC2的电压基准可以在模拟电源电压(AV+)和外部VREF引脚之间选择。用户可以通过软件将ADC2置于关断状态以节省功耗。ADC2的可编程增益放大器的增益可以被编程为0.5、1、2或4。ADC2也有灵活的转换控制机制,允许用软件命令(AD2BUSY位写1)、定时器(Timer2或Timer3)溢出或外部信号输入(CNVSTR)启动ADC2转换;用软件命令(AD0BUSY位写1)可以使ADC2与ADC0同步转换,如图6.6所示。图6.6ADC2功能框图

C8051F040内部有两个12位电压输出的DAC,如图6.7所示。MCU可以将任何一个DAC置于低功耗关断方式。C8051F040的DAC有灵活的输出更新机制,允许用软件命令(写DAC0H)和定时器2、定时器3及定时器4的溢出信号更新DAC输出。DAC在作为比较器的参考电压或为ADC差分输入提供偏移电压时非常有用。6.312位数/模转换器DAC图6.712位DAC功能框图

C8051F040内部有三个电压比较器,如图6.8所示。每个比较器的响应时间和回差电压都是可编程的。每个比较器的输出都可以经I/O交叉开关连到外部引脚。当被分配了封装引脚时,每个比较器输出都可以被编程为工作在漏极开路或推挽方式。比较器输入引脚应被配置为模拟输入。比较器0还可以被配置为复位源。比较器的输出可以被软件查询,可以作为中断源,可以作为复位源,还可以连到端口引脚。每个比较器可以被单独使能或禁止(关断)。当被禁止时,比较器的输出(如果已通过交叉开关分配到端口I/O引脚)缺省值为逻辑低电平,电源电流降到小于1μA。比较器的输入可以承受-0.25~+0.25V(AV+)的外部驱动电压而不至损坏或发生工作错误。6.4比较器图6.8比较器功能框图6.5.1RESET复位源

标准的8051只有外部引脚复位。C8051F040单片机增加了7种复位源,使系统的可靠性大大提高。每种复位源都可以由用户用软件禁止。这7种复位源是:

片内电源监视。

WDT看门狗定时器。

时钟丢失检测器。

比较器0输出电平检测。

软件强制复位。

CNVSTRAD转换启动。

外部引脚RST复位(可双向复位)。

图6.9所示是复位源框图。6.5复 位 及 晶 振图6.9复位源框图6.5.2振荡器

标准的8051只有外部时钟。C8051F040单片机有内部独立的时钟源,在系统复位时默认内部时钟,如果需要,可接外部时钟并可在程序运行时实现内、外部时钟的切换。外部时钟可以是晶体、RC、C或外部时钟源提供的系统时钟。以上的功能在低功耗应用系统中非常有用。

图6.10所示是振荡器框图。图6.10振荡器框图6.6.1P0~P3交叉开关配置

C8051F040单片机具有标准的8051I/O口。除P0、P1、P2和P3之外还有更多扩展的8位I/O口(P4~P7),每个端口I/O引脚都可以设置为推挽或漏极开路输出,这为低功耗应用提供了进一步节电的能力。端口I/O、和JTAG引脚都容许5V的输入信号电压。

C8051F040最为独特的是增加了“DigtalCrossbar”(数字交叉)开关,它可将内部数字系统资源定向到P0、P1和P2端口的I/O引脚,并可将定时器、串行总线、外部中断源、AD输入转换、比较器输出等通过设置Crossbar开关控制寄存器定向到P0、P1和P2的I/O口。这就允许用户根据自己的特定应用选择通用I/O端口和所需数字资源的组合。

图6.11所示是交叉开关框图。6.6输入/输出端口图6.11交叉开关框图6.6.2I/O端口配置

P0~P3和优先权交叉开关译码器配置如表6.5所示。

由表6.5可知,P0~P3的复用功能不固定,需要配置,在使用中要注意按需要灵活配置。表6.5P0~P3和优先权交叉开关译码器配置6.6.3I/O端口寄存器

1. XBR0

XBR0为端口I/O交叉开关寄存器0,其格式如下:

CP0E为比较器0输出使能位。

① 0:CP0不连到端口引脚。

② 1:CP0连到端口引脚。

ECI0E为PCA0外部计数器输入使能。

① 0:PCA0外部计数器输入不连到端口引脚。

② 1:PCA0外部计数器输入(ECI0)连到端口引脚。

PCA0ME为PCA0模块I/O使能位。① 000:所有的PCA0I/O都不连到端口引脚。

② 001:CEX0连到端口引脚。

③ 010:CEX0、CEX1连到两个端口引脚。

④ 011:CEX0、CEX1、CEX2连到三个端口引脚。

⑤ 100:CEX0、CEX1、CEX2、CEX3连到四个端口引脚。

⑥ 101:CEX0、CEX1、CEX2、CEX3、CEX4连到五个端口引脚。

⑦ 110:CEX0、CEX1、CEX2、CEX3、CEX4、CEX5连到六个端口引脚。

UART0EN为UART0I/O使能位。

① 0:UART0I/O不连到端口引脚。

② 1:UART0的TX0连到P0.0,RX0连到P0.1。

SPI0EN为SPI总线I/O使能位。

① 0:SPI0I/O不连到端口引脚。

② 1:SPI0的SCK、MISO、MOSI和NSS连到四个端口引脚。

注意:当SPI被设置为3线方式时,NSS信号不被分配端口引脚。

SMB0EN为SMBus总线I/O使能位。

① 0:SMBus0I/O不连到端口引脚。

② 1:SMBus0的SDA和SCL连到两个端口引脚。2. XBR1

XBR1为端口I/O交叉开关寄存器1,其格式如下:

SYSCKE为输出使能位。

① 0:不连到端口引脚。

② 1:连到端口引脚。

T2EXE为T2EX使能位。

① 0:T2EX不连到端口引脚。

② 1:T2EX连到端口引脚。

T2E为T2使能位。

① 0:T2不连到端口引脚。

② 1:T2连到端口引脚。

INT1E为使能位。① 0:不连到端口引脚。

② 1:连到端口引脚。

T1E为T1使能位。

① 0:T1不连到端口引脚。

② 1:T1连到端口引脚。

INT0E为使能位。

①0:不连到端口引脚。

② 1:连到端口引脚。

T0E为T0使能位。

① 0:T0不连到端口引脚。

② 1:T0连到端口引脚。

CP1E为比较器1输出使能位。

① 0:CP1不连到端口引脚。

② 1:CP1连到端口引脚。3. XBR2XBR2为端口I/O交叉开关寄存器2,其格式如下:

WEAKPUD为弱上拉禁止位。

① 0:弱上拉全局使能。

② 1:弱上拉全局禁止。

XBARE为交叉开关使能位。

① 0:交叉开关禁止,端口0、1、2和3的所有引脚被强制为输入方式。

② 1:交叉开关使能。

T4EXE为T4EX输入使能位。① 0:T4EX不连到端口引脚。

② 1:T4EX连到端口引脚。

T4E为T4输入使能位。

① 0:T4不连到端口引脚。

② 1:T4连到端口引脚。

UART1E为UART1I/O使能位。

① 0:UART1I/O不连到端口引脚。

② 1:UART1的TX和RX连到两个端口引脚。

EMIFLE为外部存储器接口低端口使能位。① 0:P0.7、P0.6和P0.5的功能由交叉开关或端口锁存器决定。

② 1:如果EMI0CF.4=0(外部存储器接口为复用方式),则P0.7(/WR)、P0.6(/RD)和P0.5(/ALE)被交叉开关跳过,它们的输出状态由端口锁存器和外部存储器接口决定;如果EMI0CF.4=1(外部存储器接口为非复用方式),则P0.7(/WR)和P0.6(/RD)被交叉开关跳过,它们的输出状态由端口锁存器和外部存储器接口决定。

CNVST0E为ADC0外部转换启动输入使能位。

① 0:CNVSTR0不连到端口引脚。

② 1:CNVSTR0连到端口引脚。

XBR2的第5位未用。读=0,写=忽略。4.XBR3XBR3为端口I/O交叉开关寄存器3,其格式如下:

CTXOUT为CAN发送引脚(CTX)输出方式位。

① 0:CTX引脚输出方式为漏极开路。

② 1:CTX引脚输出方式为推挽。

CP2E为CP2输出使能位。

① 0:CP2不连到端口引脚。

② 1:CP2连到端口引脚。

CNVST2E为ADC2外部转换输入使能位。

① 0:CNVST2不连到端口引脚。

②1:CNVST2连到端口引脚。

T3EXE为T3EX输入使能位。

① 0:T3EX不连到端口引脚。

② 1:T3EX连到端口引脚。

T3E为T3输入使能位。

① 0:T3不连到端口引脚。

② 1:T3连到端口引脚。

XBR3的第4~6位保留未用。

P0为端口0寄存器,其格式如下:

5. P0

其各位为端口0的输出锁存器位。

写入时,输出出现在I/O引脚,根据XBR0、XBR1、XBR2和XBR3寄存器的设置确定。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P0MDOUT.n位=0,则为漏极开路。)

读出时,与XBR0、XBR1、XBR2和XBR3寄存器的设置无关。

① 0:P0.n为逻辑低电平。

② 1:P0.n为逻辑高电平。

注:P0.7(

)、P0.6(

)和P0.5(

)可由外部数据存储器接口驱动。6. P0MDOUTP0MDOUT为端口0输出模式寄存器,其格式如下:其各位的端口0的输出方式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

注:当SDA、SCL、RX0(当UART0工作于方式0时)和RX1(当UART1工作于方式0时)出现在端口引脚时,总是被配置为漏极开路输出。7. P1P1为端口1寄存器,其格式如下:其各位为端口1的输出锁存器位。

写入时,输出出现在I/O引脚,根据XBR0、XBR1、XBR2和XBR3寄存器的设置确定。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P1MDOUT.n位=0,则为漏极开路。)

读出时,与XBR0、XBR1、XBR2和XBR3寄存器的设置无关。

① 0:P1.n为逻辑低电平。

② 1:P1.n为逻辑高电平。

注:(1) P1.[7..0]可以被配置为ADC2的输入AIN2.[7..0]。在这种情况下,交叉开关的引脚分配将跳过这些引脚,它们的数字输入通路被禁止,由P1MDIN决定。注意:在模拟方式,引脚的输出方式由端口1锁存器和P1MDOUT决定。

(2) P1.[7..0]可以由外部数据存储器接口驱动(在非复用方式作为地址A[15..8])。

8. P1MDIN

P1MDIN为端口1输入模式寄存器,其格式如下:其各位为端口1的输入模式位。

① 0:端口引脚被配置为模拟输入方式。数字输入通路被禁止(读端口位将总是返回0)。引脚的弱上拉被禁止。

② 1:端口引脚被配置为数字输入方式。读端口位将返回引脚的逻辑电平。当被配置为数字输入方式时,弱上拉状态由WEAKPUD位(XBR2.7)决定。

9. P1MDOUT

P1MDOUT为端口1输出模式寄存器,其格式如下:其各位为端口1的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

注:当SDA、SCL、RX0(当UART0工作于方式0时)和RX1(当UART1工作于方式0时)出现在端口引脚时,总是被配置为漏极开路输出。

10. P2

P2为端口2寄存器,其格式如下:其各位为端口2的输出锁存器位。

写入时,输出出现在I/O引脚,根据XBR0、XBR1、XBR2和XBR3寄存器的设置确定。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P2MDOUT.n位=0,则为漏极开路。)

读出时,与XBR0、XBR1、XBR2和XBR3寄存器的设置无关。

① 0:P2.n为逻辑低电平。

② 1:P2.n为逻辑高电平。

注:P2.[7..0]可以由外部数据存储器接口驱动(在复用方式作为地址A[15..8]或在非复用方式作为地址A[7..0])。11. P2MDIN

P2MDIN为端口2输入模式寄存器,其格式如下:其各位为端口2的输入模式位。

① 0:端口引脚被配置为模拟输入方式。数字输入通路被禁止(读端口位将总是返回0)。引脚的弱上拉被禁止。

② 1:端口引脚被配置为数字输入方式。读端口位将返回引脚的逻辑电平。当被配置为数字输入方式时,弱上拉状态取决于WEAKPUD位(XBR2.7)。12. P2MDOUT

P2MDOUT为端口2输出模式寄存器,其格式如下:其各位为端口2的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

注:当SDA、SCL、RX0(当UART0工作于方式0时)和RX1(当UART1工作于方式0时)出现在端口引脚时,总是被配置为漏极开路输出。

13. P3

P3为端口3寄存器,其格式如下:其各位为端口3的输出锁存器位。

写入时,输出出现在I/O引脚,根据XBR0、XBR1、XBR2和XBR3寄存器的设置确定。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P3MDOUT.n位=0,则为漏极开路。)

读出时,与XBR0、XBR1、XBR2和XBR3寄存器的设置无关。

① 0:P3.n为逻辑低电平。

② 1:P3.n为逻辑高电平。

注:P3.[7..0]可以由外部数据存储器接口驱动(在复用方式作为AD[7..0]或在非复用方式作为D[7..0])。14. P3MDIN

P3MDIN为端口3输入模式寄存器,其格式如下:其各位为端口3的输入模式位。

① 0:端口引脚被配置为模拟输入方式。数字输入通路被禁止(读端口位将总是返回0)。引脚的弱上拉被禁止。

② 1:端口引脚被配置为数字输入方式。读端口位将返回引脚的逻辑电平。当被配置为数字输入方式时,弱上拉状态取决于WEAKPUD位(XBR2.7)。

15. P3MDOUT

P3MDOUT为端口3输出模式寄存器,其格式如下:其各位为端口3的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

16. P4

P4为端口4寄存器,其格式如下:其各位为端口4的输出锁存器位。

写入时,输出出现在I/O引脚。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P4MDOUT.n位=0,则为漏极开路。)

读出时,返回I/O引脚的状态。

① 0:P4.n为逻辑低电平。

② 1:P4.n为逻辑高电平。

注:P4.7(

)、P4.6(

)和P4.5(ALE)可以由外部数据存储器接口驱动。17. P4MDOUT

P4MDOUT为端口4输出模式寄存器,其格式如下:其各位为端口4的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

18. P5

P5为端口5寄存器,其格式如下:其各位为端口5的输出锁存器位。

写入时,输出出现在I/O引脚。

①0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P5MDOUT.n位=0,则为漏极开路。)

读出时,返回I/O引脚的状态。

① 0:P5.n为逻辑低电平。

② 1:P5.n为逻辑高电平。

注:P5.[7..0]可由外部数据存储器接口驱动。19. P5MDOUT

P5MDOUT为端口5输出模式寄存器,其格式如下:其各位为端口5的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

20. P6

P6为端口6寄存器,其格式如下:其各位为端口6的输出锁存器位。

写入时,输出出现在I/O引脚。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P6MDOUT.n位=0,则为漏极开路。

读出时,返回I/O引脚的状态。

① 0:P6.n为逻辑低电平。

② 1:P6.n为逻辑高电平。

注:P6.[7..0]可由外部数据存储器接口驱动。21. P6MDOUT

P6MDOUT为端口6输出模式寄存器,其格式如下:其各位为端口6的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。

22. P7

P7为端口7寄存器,其格式如下:其各位为端口7的输出锁存器位。

写入时,输出出现在I/O引脚。

① 0:逻辑低电平输出。

② 1:逻辑高电平输出。(若相应的P7MDOUT.n位=0,则为漏极开路。)

读出时,返回I/O引脚的状态。

① 0:P7.n为逻辑低电平。

② 1:P7.n为逻辑高电平。

注:P7.[7..0]可由外部数据存储器接口驱动。23. P7MDOUT

P7MDOUT为端口7输出模式寄存器,其格式如下:其各位为端口7的输出模式位。

① 0:端口引脚的输出为漏极开路。

② 1:端口引脚的输出为推挽方式。6.7.1CAN总线

C8051F040具有控制器局域网(CAN)控制器,用CAN协议进行串行通信。SiliconLabsCAN控制器符合Bosch规范2.0A(基本CAN)和2.0B(全功能CAN),方便了在CAN网络上的通信。CAN控制器包含一个CAN核、消息RAM(独立于CIP-51的RAM)、消息处理状态机和控制寄存器。SiliconLabsCAN是一个协议控制器,不提供物理层驱动器(即收发器)。6.7总 线 及 通 信

SiliconLabsCAN的工作位速率可达1Mb/s,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。所有数据发送和接收过滤的协议处理全部由CAN控制器完成,不用CIP-51干预。这就使得用于CAN通信的CPU带宽最小。CIP-51通过特殊功能寄存器配置CAN控制器,读取接收到的数据和写入待发送的数据。

图6.12所示为CAN的功能框图。图6.12CAN的功能框图6.7.2SMBus总线

SMBusI/O接口是一个双线双向的串行总线。与I2C串行总线兼容并完全符合系统管理总线规范1.1版。系统控制器对总线的读/写操作都是以字节为单位的,由SMBus接口控制数据的串行传输。可以采用延长时钟低电平时间的方法协调同一总线上不同速度的器件。

图6.13所示为SMBus的功能框图。图6.13SMBus的功能框图6.7.3SPI总线

串行外设接口(SPI0)提供了一个可灵活访问的全双工串行总线。SPI0可以作为主器件或从器件,有3线工作方式和4线工作方式,并支持在同一总线上连接多个主器件和从器件。从选择信号(NSS)可以被配置为输入,以选择从方式下的SPI0,或在多主环境中禁止主器件方式操作,以避免两个以上主器件试图同时进行数据传输时产生冲突。NSS还可以被配置为主方式下的片选输出,或在3线操作时被禁止。在主方式,可以用通用端口I/O引脚选择多个从器件。

图6.14所示为SPI0的功能框图。图6.14SPI0的功能框图6.7.4UART0串行通信

UART0具有硬件地址识别和错误检测功能。UART0可以工作在全双工异步方式或半双工同步方式,并支持多处理器通信。接收数据被暂存于一个保持寄存器中,这就允许UART0在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。一个接收覆盖位用于指示新的接收数据已被锁存到接收缓冲器而前一个接收数据尚未被读取。

图6.15所示为UART0的功能框图。图6.15UART0的功能框图6.7.5UART1串行通信

UART1是一个异步、全双工串口,它提供标准8051串行口的方式1和方式3。UART1具有增强的波特率发生器电路,多个时钟源可用于产生标准波特率。接收数据缓冲机制允许UART1在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。

图6.16所示为UART1的功能框图。图6.16UART1的功能框图

C8051F040MCU内部有五个计数/定时器。其中,定时器0、定时器1和定时器2与标准8052中的计数/定时器兼容。定时器3和定时器4是16位自动重装载并具有捕捉功能的定时器,可用于ADC、DAC、方波发生器或作为通用定时器使用。这些计数/定时器可以用于测量时间间隔,对外部事件计数或产生周期性的中断请求。定时器0和定时器1几乎完全相同,有四种工作方式。定时器2、定时器3和定时器4完全相同,不但提供了自动重装载和捕捉功能,还具有在外部端口引脚上产生50%占空比方波的能力。

图6.17所示为定时器0和定时器1的功能框图;图6.18所示为定时器2、定时器3和定时器4的功能框图。6.8定时器图6.17定时器0和定时器1的功能框图图6.18定时器2、定时器3和定时器4的功能框图片内JTAG调试支持功能允许使用安装在最终应用系统上的MCU进行非侵入式(不占用片内资源)、全速的在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、单步、运行和停机命令。在使用JTAG调试时,所有的模拟和数字外设都可全功能运行。6.9

JTAG调试和边界扫描6.10.1C8051F040开发环境简介

SiliconLaboratories提供基于Windows集成的在线开发调试环境,包括IDE软件、串口适配器(EC2/EC3/EC5)与调试目标板,可实现存储器和寄存器校验和修改;设置断点、观察点、堆栈;程序可单步运行、全速运行、停止等。调试时所有的数字和模拟外设都能正常工作,实时反映真实情况。IDE调试环境可做KeilC源程序级别的调试。对于开发和调试嵌入式应用来说,与用传统的专用仿真芯片、目标电缆及仿真头的仿真器相比,更具优越性能,更能真实“在片”仿真实时信息。SiliconLaboratories的调试环境既便于使用又能保证精确模拟外设的性能。6.10

C8051F040最小系统板简介及应用实例

SiliconLaboratoriesC8051F系列单片机开发工具既突破了昂贵开发系统的旧模式,又创立了低价位仿真新思路,为应用技术的开发提供了极大的方便。

如图6.18所示,C8051F040系列单片机的开发环境包括PC机一台,适配器一个,C051F040目标板一块及IDE集成调试软件。

适配器(需购买)可以是EC2(串口适配器)或者是EC3/EC5(USB适配器),EC3/EC5的调试效率较EC2高。图6.19JTAG调试和边界扫描6.10.2开发应用实例

由于C8051F040是完全集成的混合信号系统级芯片,提供了丰富的硬件资源,因此,可方便地用于各种工业级场所的检测和控制。下面用一个实例来说明C8051F040的实际

应用。

1.基于C8051F040的分布式测控系统

1)简介

由于C8051F040内嵌控制器局域网CAN2.0核,运行速度高(可达25MIPS),具有丰富的模拟、数字接口,4KB的RAM,64KB的Flash等资源,因此,该处理器非常适合用于基于CAN总线的分布式测控系统。

2)分布式测控系统组成框图

如图6.20所示,基于C8051F040的分布式测控系统由上位控制机(操作站)、CAN总线接口和各测控节点(节点1~节点n)等组成。

上位控制机(操作站)可以是工业控制机,也可以是一般的PC机,上位控制机通过运行测控软件可对各节点进行配置及监控。CAN总线接口与上位控制机之间采用USB接口连接。由于CAN总线是多主通信网络,测控节点可主动发起通信,因此可及时将异常报警消息传给上位控制机。CAN总线接口可以购买,也可以自制。当选择自制时,工作量较大,需要编写驱动程序及接口程序。图6.20分布式测控系统组成框图

3)测控节点

测控节点是基于C8051F040单片机的一个通用或专用数据采集、处理及控制装置。C8051F040内嵌的CAN2.0控制器通过CAN总线驱动芯片PCA82C250挂接到CAN总线上。

根据不同的测试数据类型和控制对象,测控节点可以设计成与之适应的数据采集、处理及控制装置。笔者设计了曼彻斯特Ⅱ编/解码节点、通用模拟及数字采样节点、VDL(声波变密度)信号处理节点及深度子系统等节点。

4)节点信息定义

为了管理设备,需定义节点的配置信息格式。

(1)节点的配置信息由头信息、通道信息及检验和组成。从节点硬件版本号段到头信息保留段为头信息段,共计42字节。每个通道信息占20字节,检验和占1字节。节点配置信息表总长度为:42+20×N+1,如图6.21所示。图6.21节点的配置信息格式

(2)说明。

节点硬件版本号(BYTE):高4位为主版本号(0~9);低4位为副版本号(0~9)。

节点软件版本号(BYTE):高4位为主版本号(0~9);低4位为副版本号(0~9)。

节点编号(WORD):节点的唯一标识号,取值范围为1~65535,低位在前。

深度节点编号: 1;

采样节点编号: 2;

MII编/解码节点编号:3;

VDL节点编号: 0x40;

CAN控制节点编号: 5;

节箍识别节点编号: 6;

C/O节点编号: 7;

节点名称(C字符串,BYTE[20])。

深度模板名称: 深度节点;

采样模板名称: 采样节点;

MII编解码节点名称: MII编/解码节点;

VDL节点名称: VDL节点;

CAN控制节点名称: CAN控制节点;

节箍识别节点名称: 节箍识别节点;

C/O节点名称: C/O节点。

接口类型(WORD):0—ISA并行;1—RS-232C;2—

CAN2.0;3—Ethernet;4—DMA。

深度节点接口类型: 2;

采样节点接口类型: 2;

编/解码节点接口类型: 2;

CBL节点接口类型: 2;

CAN控制节点接口类型: 2;

节箍识别节点接口类型: 2;

C/O节点接口类型: 2;

节点口地址(WORD):低8位在前,若非并行接口,该值为0。

数据宽度(BYTE):并行数据传输时数据线的宽度。

IRQ号(BYTE):并行接口时使用的IRQ号(5,7,9,10,11),其他接口取0。

DMA地址(DWORD):并行接口DMA传输时的内存地址,实模式,段地址在前,偏移在后,其他接口取0。

通道数(WORD):该节点中的总数据通道数。

通道i名称(C字符串,BYTE[11])。

通道i数据类型(BYTE):0—WORD(2字节无符号);1—DWORD(4字节无符号);2—INTEGER(2字节有符号);3—INTEGER4(4字节有符号);4—FLOAT(4字节单精度浮点);5—DOUBLE(8字节双精度浮点);6—数组(字节)。

通道i数据字节数(WORD):该16位段表示通道数据占用的字节数,只有在数据类型段=6(数组)时,该字段才有意义。

通道i信号类型(BYTE):0—CPS;1—mv;2—累计;3—工程值。

通道i信号采样间隔(BYTE):通道i信号采样间隔为5ms的整数倍。

检验和:从节点配置信息表的第一字节到检验和前一个字节计算累加和,不计进位位,将累加和取反即得检验和。

5) CAN2.0总线数据传输协议

该协议规定了数控系统的主控机与各节点之间的CAN2.0总线数据传输规则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论