基于C8051F330单片机系统设计入门.docx
- 文档编号:8809520
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:36
- 大小:941.34KB
基于C8051F330单片机系统设计入门.docx
《基于C8051F330单片机系统设计入门.docx》由会员分享,可在线阅读,更多相关《基于C8051F330单片机系统设计入门.docx(36页珍藏版)》请在冰豆网上搜索。
基于C8051F330单片机系统设计入门
基于C8051F330单片机系统设计入门
邬杨波
2008.08.08
1、C8051F330单片机结构特点
1.1C8051F330单片机概况
1.2CIP-51TM微控制器核
1.3片内存储器
1.4片内调试电路
1.5可编程数字I/O和交叉开关
1.6串行端口
1.7可编程计数器阵列
1.810位模/数转换器
1.9比较器
1.1010位电流输出DAC
1.11引脚和封装定义
2、C8051F330单片机系统硬件设计要点
2.1复位源特点及外部复位电路连接
2.2C2接口电路
2.3时钟系统特点及使用
2.4I/O端口和交叉开关特点及配置
3、C8051F330单片机系统软件设计要点
3.1单片机的初始化设置
3.2软件延时程序
1C8051F330单片机特点
1.1C8051F330单片机概况
模拟外设
−10位ADC(只限于F330)
转换速率可达200ksps
可多达16个外部单端或差分输入
VREF可在内部VREF、外部引脚或VDD中选择
内部或外部转换启动源
内置温度传感器
−10位电流输出DAC(只限于F330)
−比较器
可编程回差电压和响应时间
可配置为中断或复位源
小电流(<0.4μA)
在片调试
−片内调试电路提供全速、非侵入式的在系统调试(不需仿真器!
)
−支持断点、单步、观察/修改存储器和寄存器
−比使用仿真芯片、目标仿真头和仿真插座的仿真系统有更优越的性能
−廉价而完整的开发套件
供电电压…………………………2.7V-3.6V
−典型工作电流:
6.4mA@25MHz
9μA@32KHz
−典型停机电流:
0.1μA
温度范围:
-40°C-+85°C
高速8051微控制器内核
−流水线指令结构;70%的指令的执行时间为一个或两个系统时钟周期
−速度可达25MIPS(时钟频率为25MHz时)
−扩展的中断系统
存储器
−768字节内部数据RAM(256+512)
−8KBFLASH;可在系统编程,扇区大小为512字节
数字外设
−17个端口I/O;均耐5V电压,大灌电流
−硬件增强型UART、SMBus和增强型SPI串口
−4个通用16位计数器/定时器
−16位可编程计数器/定时器阵列(PCA),有3个捕捉/比较模块
−使用PCA或定时器和外部时钟源的实时时钟方式
时钟源
−两个内部振荡器:
24.5MHz,±2%的精度,可支持无晶体UART操作
80/40/20/10kHz低频率、低功耗振荡器
−外部振荡器:
晶体、RC、C、或外部时钟
−可在运行中切换时钟源,适用于节电方式
1.2CIP-51TM微控制器核
1.2.1与8051完全兼容
C8051F330/1系列器件使用SiliconLabs的专利CIP-51微控制器内核。
CIP-51与MCS-51TM指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。
CIP-51内核具有标准8052的所有外设部件,包括4个16位计数器/定时器、一个具有增强波特率配置的全双工UART、一个增强型SPI端口、768字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及17个I/O端口。
1.2.2速度提高
CIP-51采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。
在一个标准的8051中,除MUL和DIV以外所有指令都需要12或24个系统时钟周期,最大系统时钟频率为12-24MHz。
而对于CIP-51内核,70%的指令的执行时间为1或2个系统时钟周期,只有4条指令的执行时间大于4个系统时钟周期。
CIP-51共有111条指令。
下表列出了指令条数与执行时所需的系统时钟周期数的关系。
行周期数
1
2
2/3
3
3/4
4
4/5
5
8
指令数
26
50
5
16
7
3
1
2
1
1.2.3增加的功能
C8051F330/1系列MCU在CIP-51内核和外设方面有几项关键性的改进,提高了整体性能,更易于在最终应用中使用。
扩展的中断系统向CIP-51提供14个中断源(标准8051只有7个中断源),允许大量的模拟和数字外设中断微控制器。
一个中断驱动的系统需要较少的MCU干预,因而有更高的执行效率。
在设计一个多任务实时系统时,这些增加的中断源是非常有用的。
MCU有多达8个复位源:
上电复位电路(POR)、一个片内VDD监视器(当电源电压低于VRST时强制复位)、一个看门狗定时器、一个时钟丢失检测器、一个由比较器0提供的电压检测器、一个软件强制复位、外部复位输入引脚和FLASH读/写错误保护电路复位。
除了POR、复位输入引脚及FLASH操作错误这三个复位源之外,其他复位源都可以被软件禁止。
在一次上电复位之后的MCU初始化期间,WDT可以被永久性使能。
C8051F330/1器件的内部振荡器在出厂时已经被校准为24.5MHz±2%,该振荡器的周期可以由用户以大约0.5%的增量编程;片内还集成了一个低速振荡器,更适合于低功耗操作。
器件内集成了外部振荡器驱动电路,允许使用晶体、陶瓷谐振器、电容、RC或外部CMOS时钟源产生系统时钟。
如果需要,时钟源可以在运行时切换到外部振荡器。
外部振荡器在低功耗系统中是非常有用的,它允许MCU从一个低频率(节电)外部晶体源运行,当需要时再周期性地切换到高速(可达25MHz)的内部振荡器。
图1.4片内时钟和复位电路
1.3片内存储器
CIP-51有标准8051的程序和数据地址配置。
它包括256字节的数据RAM,其中高128字节为双映射。
用间接寻址访问通用RAM的高128字节,用直接寻址访问128字节的SFR地址空间。
数据RAM的低128字节可用直接或间接寻址方式访问。
前32个字节为4个通用寄存器区,接下来的16字节既可以按字节寻址也可以按位寻址。
程序存储器包含8KB的FLASH。
该存储器以512字节为一个扇区,可以在系统编程,且不需特别的编程电压。
图1.5给出了MCU系统的存储器结构。
图1.5片内存储器组织
1.4片内调试电路
C8051F330/1器件具有片内SiliconLabs2线(C2)接口调试电路,支持使用安装在最终应用系统中的产品器件进行非侵入式、全速的在系统调试。
SiliconLabs的调试系统支持观察和修改存储器和寄存器,支持断点和单步执行。
不需要额外的目标RAM、程序存储器、定时器或通信通道。
在调试时所有的模拟和数字外设都正常工作。
当MCU单步执行或遇到断点而停止运行时,所有的外设(ADC和SMBus除外)都停止运行,以保持与指令执行同步。
USB
图1.6开发/在系统调试示意图
1.5可编程数字I/O和交叉开关
C8051F330有17个I/O引脚(两个8位口和一个1位口)。
C8051F330/1端口的工作情况与标准8051相似,但有一些改进。
每个端口引脚都可以被配置为模拟输入或数字I/O。
被选择作为数字I/O的引脚还可以被配置为推挽或漏极开路输出。
在标准8051中固定的“弱上拉”可以被总体禁止,这为低功耗应用提供了进一步节电的能力。
数字交叉开关允许将内部数字系统资源映射到端口I/O引脚(见图1.7)。
可通过设置交叉开关控制寄存器将片内的计数器/定时器、串行总线、硬件中断、比较器输出以及微控制器内部的其它数字信号配置为出现在端口I/O引脚。
这一特性允许用户根据自己的特定应用选择通用端口I/O和所需数字资源的组合。
图1.7数字交叉开关原理框图
1.6串行端口
C8051F330/1系列MCU内部有一个SMBus/I2C接口、一个具有增强型波特率配置的全双工UART和一个增强型SPI接口。
每种串行总线都完全用硬件实现,都能向CIP-51产生中断,因此需要很少的CPU干预。
1.7可编程计数器阵列
除了4个16位的通用计数器/定时器之外,MCU中还有一个片内可编程计数器/定时器阵列(PCA)。
PCA包括一个专用的16位计数器/定时器时间基准和3个可编程的捕捉/比较模块。
时间基准的时钟可以是下面的六个时钟源之一:
系统时钟/12、系统时钟/4、定时器0溢出、外部时钟输入(ECI)、系统时钟和外部振荡源频率/8。
外部时钟源对于实时时钟功能是非常有用的,可以在使用内部振荡器驱动系统时钟的同时由外部振荡器给PCA提供时钟。
每个捕捉/比较模块都有六种工作方式:
边沿触发捕捉、软件定时器、高速输出、8位或16位脉冲宽度调制器、频率输出。
此外,捕捉/比较模块2还提供看门狗定时器(WDT)功能。
在系统复位后,捕捉/比较模块2被配置并被使能为WDT方式。
PCA捕捉/比较模块的I/O和外部时钟输入可以通过数字交叉开关连到端口I/O。
图1.8PCA原理框图
1.810位模/数转换器
C8051F330/1内部有一个10位SARADC和一个16通道差分输入多路选择器。
该ADC工作在200ksps的最大采样速率时可提供真正10位的线性度,INL和DNL为±1LSB。
ADC系统包含一个可编程的模拟多路选择器,用于选择ADC的正输入和负输入。
端口0~1作为ADC的输入;另外,片内温度传感器的输出和电源电压(VDD)也可以作为ADC的输入。
用户固件可以将ADC置于关断状态以节省功耗。
A/D转换可以有6种启动方式:
软件命令、定时器0溢出、定时器1溢出、定时器2溢出、定时器3溢出或外部转换启动信号。
这种灵活性允许用软件事件、外部硬件信号或周期性的定时器溢出信号触发转换。
一次转换完成可以产生中断(如果被允许),或者用软件查询一个状态位来判断转换结束。
转换结束后10位结果数据字被锁存到ADC数据寄存器中。
窗口比较寄存器可被配置为当ADC数据位于一个规定的范围之内或之外时向控制器申请中断。
ADC可以用后台方式监视一个关键电压,当转换数据位于规定的范围之内/外时才向控制器申请中断。
图1.910位ADC原理框图
1.9比较器
C8051F330/1器件内部有一个电压比较器,可以由用户软件使能/禁止和配置。
端口I/O引脚可以通过多路选择器被配置为比较器输入。
如果需要,可以将两个比较器输出连到端口引脚:
一个锁存输出和/或一个未锁存的输出(异步)。
比较器的响应时间是可编程的,允许用户在高速和低功耗方式之间选择。
比较器的正向和负向回差电压也是可配置的。
比较器能在上升沿、下降沿产生中断,或在两个边沿都产生中断。
当MCU工作在空闲方式时,这些中断可用于唤醒MCU。
比较器0还可以被配置为复位源。
图1.10给出了比较器0的原理框图。
图1.10比较器原理框图
1.1010位电流输出DAC
C8051F330内部有一个10位电流方式数/模转换器(IDA0)。
IDA0的最大输出电流可以有三种不同的设置:
0.5mA、1mA和2mA。
IDA0具有灵活的输出更新机制,允许无缝满度变化,支持无抖动波形更新。
IDA0有三种更新方式:
写IDA0H、定时器溢出或外部引脚边沿。
图1.11IDA0原理框图
1.11引脚和封装定义
2、C8051F330单片机系统硬件设计要点
2.1复位源特点及外部复位电路连接
复位电路允许很容易地将控制器置于一个预定的缺省状态。
在进入复位状态时,将发生以下过程:
CIP-51停止程序执行
特殊功能寄存器(SFR)被初始化为所定义的复位值
外部端口引脚被置于一个已知状态
中断和定时器被禁止。
所有的SFR都被初始化为预定值,SFR中各位的复位值在SFR的详细说明中定义。
在复位期间内部数据存储器的内容不发生改变,复位前存储的数据保持不变。
但由于堆栈指针SFR被复位,堆栈实际上已丢失,尽管堆栈中的数据未发生变化。
端口I/O锁存器的复位值为0xFF(全部为逻辑‘1’),处于漏极开路方式。
在复位期间和复位之后弱上拉被使能。
对于VDD监视器和上电复位,/RST引脚被驱动为低电平,直到器件退出复位状态。
在退出复位状态时,程序计数器(PC)被复位,MCU使用内部振荡器作为默认的系统时钟。
看门狗定时器被使能,使用系统时钟的12分频作为其时钟源。
程序从地址0x0000开始执行。
图10.1复位源框图
2.1.1上电复位
在上电期间,器件保持在复位状态,/RST引脚被驱动到低电平,直到VDD上升到超过VRST电平。
从复位开始到退出复位状态要经过一个延时;该延时随着VDD上升时间的增大而减小(VDD上升时间被定义为VDD从0V上升到VRST的时间)。
图10.2给出了上电和VDD监视器复位的时序。
最大的VDD上升时间为1ms;上升时间超过该最大值时可能导致器件在VDD达到VRST电平之前退出复位状态。
当上升时间小于1ms时,上电复位延时(TPORDelay)通常小于0.3ms。
在退出复位状态时,PORSF标志(RSTSRC.1)被硬件置为逻辑‘1’。
当PORSF标志被置位时,RSTSRC寄存器中的所有其它复位标志都是不确定的。
PORSF被任何其它复位源清0。
由于所有的复位都导致程序从同一个地址(0x0000)开始执行,软件可以通过读PORSF标志来确定是否为上电产生的复位。
在一次上电复位后,内部数据存储器中的内容应被认为是不确定的。
在上电复位后,VDD监视器被禁止。
图10.2上电和VDD监视器复位时序
表10.1复位源电气特性
VDD=2.7V~3.6V;-40℃到+85℃(除非特别说明)
2.1.2掉电复位和VDD监视器
当发生掉电或因电源波动导致VDD降到VRST以下时,电源监视器将/RST引脚驱动为低电平并使CIP-51保持复位状态(见图10.2)。
当VDD又回到高于VRST的电平时,CIP-51将退出复位状态。
注意,尽管内部数据存储器的内容可能没有因掉电复位而发生改变,但无法确定VDD是否降到了数据保持所要求的最低电平以下。
如果PORSF标志的读出值为1,则内部RAM的数据可能不再有效。
在上电复位后VDD监视器被使能,但它的状态(使能/禁止)不受任何其它复位源的影响。
例如,在VDD监视器被使能后执行一次软件复位,复位后VDD监视器仍然为使能状态。
注意:
在选择VDD监视器作为复位源之前,必须使能VDD监视器。
在VDD监视器被使能或稳定之前选其为复位源可能导致系统复位。
将VDD监视器配置为复位源的步骤如下:
1.使能VDD监视器(VDM0CN中的VDMEN位=1);
2.等待VDD监视器稳定(见表10.1的VDD监视器启动时间);
3.选择VDD监视器作为复位源(RSTSRC中的PORSF位=1)。
图10.2给出了VDD监视器的时序。
注意,在VDD监视器复位后没有复位延时。
表10.1给出了VDD监视器的电气特性。
图10.3VDM0CN:
VDD监视器控制寄存器
R/W
R
R
R
R
R
复位值
VDMEN
VDDSTAT
保留
保留
保留
保留
保留
保留
可变
位7
位6
位5
位4
位3
位2
位1
位0
SFR地址:
0xFF
位7:
VDMEN:
VDD监视器使能位。
该位控制VDD监视器电源的通断。
VDD监视器在被选择为复位源之前不可能产生系统复位。
在被选择为复位源之前,VDD监视器必须稳定。
在VDD监视器稳定之前选其为复位源可能导致系统复位。
VDD监视器的最小启动时间见表10.1。
0:
禁止VDD监视器。
1:
使能VDD监视器。
位6:
VDDSTAT:
VDD状态。
该位指示当前电源状态(VDD监视器输出)。
0:
VDD等于或低于VDD监视器阈值。
1:
VDD高于VDD监视器阈值
位5-0:
保留。
读=00000b,写=忽略。
2.1.3外部复位
外部/RST引脚提供了使用外部电路强制MCU进入复位状态的手段。
在/RST引脚上加一个低电平有效信号将导致MCU进入复位状态。
尽管在内部有弱上拉,但最好能提供一个外部上拉和/或对/RST引脚去耦以防止强噪声引起复位。
从外部复位状态退出后,PINRSF标志(RSTSRC.0)被置‘1’。
2.1.4外部复位电路
2.2C2接口电路
C8051F330/1有一个SiliconLabs2线(C2)调试接口,支持FLASH编程、边界扫描和使用安装在最终应用系统中的器件进行在系统调试。
C2接口使用一个时钟信号(C2CK)和一个双向的C2数据信号(C2D)在器件和宿主机之间传送信息。
有关C2协议的详细信息见C2接口规范。
2.2.1C2引脚共享
C2协议允许C2引脚与用户功能共享,可以进行在系统调试、FLASH编程和边界扫描。
这种共享之所以可能,是因为C2通信通常发生在器件的停止运行状态。
在这种状态下片内外设和用户软件停止工作,C2接口可以安全地“借用”C2CK(正常方式为/RST)和C2D(正常方式为P2.0)引脚。
在大多数情况下,需要使用外部电阻对C2接口和用户应用进行隔离。
典型的隔离电路如图20.6所示。
图20.6典型C2引脚共享电路
2.2.2C2接口配置
1.接口定义
引线
JTAG接口说明
C2接口说明
1
2.7至3.6VDC输入
2.7至3.6VDC输入
2,3,9
GND
GND
4
TCK
C2D
5
TMS
NC
6
TDO
NC
7
TDI
C2CK
8,10
NC
NC
2.实物示意图
2.3时钟系统特点及使用
C8051F330/1MCU有一个可编程内部高频振荡器、一个可编程内部低频振荡器和一个外部振荡器驱动电路。
可以通过对OSCICL和OSCICN寄存器编程来使能/禁止内部高频振荡器和调节其输出频率(如图13.1所示);可以通过对OSCLCN寄存器编程来使能/禁止内部低频振荡器和调节其输出频率(如图13.4所示)。
系统时钟可以由外部振荡器电路或任何一个内部振荡器提供。
表13.1给出了内部振荡器的电气特性。
图13.1振荡器框图
2.3.1可编程内部高频(H-F)振荡器
C8051F330/1器件包含一个可编程内部高频振荡器,该振荡器在系统复位后被默认为系统时钟。
内部振荡器的周期可以通过OSCICL寄存器编程。
对于C8051F330/1器件,OSCICL已经过工厂校准,基频fBASE为24.5MHz。
系统时钟可以从内部振荡器分频得到,分频数由寄存器OSCICN中的IFCN位设定,可为1、2、4或8。
复位后的缺省分频数为8。
图13.2OSCICL:
内部H-F振荡器校准寄存器
图13.3OSCICN:
内部H-F振荡器控制寄存器
2.3.2外部振荡器驱动电路
外部振荡器电路可以驱动外部晶体、陶瓷谐振器、电容或RC网络。
也可以使用一个外部CMOS时钟提供系统时钟。
对于晶体和陶瓷谐振器配置,晶体/陶瓷谐振器必须并接到XTAL1和XTAL2引脚(见图13.1,选项1),还必须在XTAL1和XTAL2引脚之间并接一个10MΩ的电阻。
对于RC、电容或CMOS时钟配置,时钟源应接到XTAL2引脚(见图13.1,选项2、3、4)。
必须在OSCXCN寄存器中选择外部振荡器类型,还必须正确选择频率控制位XFCN(见图13.5)。
注意:
当使用外部振荡器电路时,必须对所用端口引脚进行配置。
当外部振荡器电路被配置为晶体/谐振器方式时,端口引脚P0.2和P0.3分别被用作XTAL1和XTAL2。
当外部振荡器电路被配置为RC、电容或CMOS时钟方式时,端口引脚P0.3被用作XTAL2。
端口I/O交叉开关应被配置为跳过被振荡器占用的引脚。
当在晶体/陶瓷谐振器、电容或RC方式使用外部振荡器电路时,应将所用的端口引脚配置为模拟输入。
在CMOS时钟方式,应将所用的端口引脚配置为数字输入。
有关端口输入方式选择的详细信息见“14.2端口I/O初始化”。
2.3.3外部晶体示例
如果使用晶体或陶瓷谐振器作为MCU的外部振荡源,则电路为图13.1中的选项1。
应从图13.5(OSCXCN寄存器)中的晶体列选择外部振荡器频率控制值(XFCN)。
例如,一个11.0592MHz的晶体要求XFCN设置值为111b。
在晶体振荡器被使能时,振荡器幅度检测电路需要一个建立时间来达到合适的偏置。
在使能晶体振荡器和检查XTLVLD位之间引入1ms的延时可以防止提前将系统时钟切换到外部振荡器。
在晶体振荡器稳定之前就切换到外部晶体振荡器可能产生不可预见的后果。
建议的步骤如下:
1.使能外部振荡器。
2.等待至少1ms。
3.查询XTLVLD=>‘1’。
4.将系统时钟切换到外部振荡器。
图13.5OSCXCN:
外部振荡器控制寄存器
2.3.4系统时钟选择
寄存器CLKSEL中的SEL1-0位选择用作系统时钟的振荡器。
当选择内部振荡器作为系统时钟时,外部振荡器仍然可以给外设(定时器、PCA)提供时钟。
系统时钟可以在内部振荡器和外部振荡器之间自由切换,只要所选择的振荡器被使能并稳定运行。
内部振荡器的起动时间很短,因此可以在同一个OSCICN写操作中使能和选择内部振荡器。
外部晶体和陶瓷谐振器通常需要较长的起动时间,应待其稳定后方可用作系统时钟。
当外部振荡器稳定后,晶体有效标志(寄存器OSCXCN中的XTLVLD)被硬件置‘1’。
在晶体方式,为了防止读到假XTLVLD标志,软件在使能外部振荡器和检查XTLVLD之间至少应延时1ms。
RC和C方式通常不需要起动时间。
图13.6CLKSEL:
时钟选择寄存器
2.4I/O端口和交叉开关特点及配置
数字和模拟资源可以通过17个I/O引脚使用。
端口引脚被组织为两个8位口和一个1位口。
每个端口引脚都可以被定义为通用I/O(GPIO)或模拟输入。
P0.0~P1.7可以被分配给内部数字资源,如图14.3所示。
设计者完全控制数字功能的引脚分配,只受I/O引脚数的限制。
这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。
注意,不论交叉开关的设置如何,端口I/O引脚的状态总是可以被读到相应的端口锁存器。
交叉开关根据优先权译码表(图14.3和图14.4)为所选择的内部数字资源分配I/O引脚。
寄存器XBR0和XBR1(见图14.5–14.6)用于选择内部数字功能。
所有端口I/O都耐5V电压(端口I/O单元示于图14.2)。
端口I/O单元可以被配置为漏极开路或推挽方式(在端口输出方式寄存器PnMDOUT中设置,n=0,1)。
表14.1给出了端口I/O的电气特性。
表14.1端口I/O直流电气特性
VDD=2.7V–3.6V,-40℃到+85℃(除非特别说明)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C8051F330 单片机 系统 设计 入门