|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1.1 凌阳通用单片机简介 凌阳科技在单片微处理器的核心技术上,发展了从 8位系列微控制器到 μ ' nSP 系列 16 位微控制器、 32 位微控制器的核心技术;同时,形成完整的 IC 产品线,应用在电子词典、计算机外围、智能家电控制器、数码相机、 VCD 、 DVD 播放器、来电显示器等产品领域,在日常生活中无所不在。 凌阳科技的 16位单片机的CPU内核采用凌阳自主知识产权的μ'nSP(Microcontroller and Signal Processor)16位微处理器(以下简称μ'nSP)。而围绕μ'nSP所形成的16位μ'nSP系列单片机采用的是模块化集成结构,以μ'nSP内核为中心,集成不同规模的ROM、RAM和功能丰富的各种外设接口部件,将单片机应用引领到SOC(System on Chip)领域。 凌阳科技的 μ'nSP 系列 16 位单片机主要产品有:带语音功能的 SPCE 通用单片机系列,工业控制级控制型的 SPMC 通用单片机系列,应用于视频游戏类产品的 SPG 系列单片机,带有 LCD 显示驱动的 SPL16 系列单片机、专用于通讯产品的 SPT 系列单片机,应用于高档电子乐器、和弦发声的 SPF 系列单片机等等。凌阳科技新近又推出了以 μ'nSP 为内核的 SPMC75F 系列单片机,用于变频马达驱动控制,广泛应用于变频家电、工业变频器、工业控制等领域。详细的资料可以登陆 凌阳单片机网站 www.sunplusmcu.com 查阅。 凌阳科技的 8 位系列单片机产品拥有完整的产品线,以其高性价比、全面的技术支持服务、方便的工具支持为广大客户所接受,出货量排在全球半导体企业的前几位;凌阳科技 8 位单片机产品主要的类别有:带 LCD 驱动的 SOC 芯片、多媒体应用芯片、语音芯片、通用单片机等。 凌阳科技最新推出的 SPMC65 系列单片机属于 8 位的通用单片机系列,是针对家电产品以及工业控制领域的高抗干扰性、高性价比的工业级芯片。 SPMC65 系列单片机提供了从低档到高档一系列产品,以满足客户的不同需求,包括不带 ADC 的 I/O 控制型单片机、带 ADC 的 I/O 控制型单片机等。 本书将重点介绍 SPMC65 系列单片机(带 ADC/ 不带 ADC 的 I/O 控制型单片机系列)的全部资源以及开发使用的方法;而系列单片机中,具体型号的芯片会针对不同应用将片内资源进行一定的删减,保留的资源以及端口等都与本书介绍的一样。读者可通过对本书的学习,掌握 SPMC65 全系列单片机的原理及开发使用方法;但涉及具体型号芯片的设计时,建议结合具体型号芯片的数据手册( Data Sheet )进行设计。 1.2 SPMC65系列单片机简介 SPMC65 系列单片机是由凌阳科技设计开发的 8 位通用单片机系列产品;该系列单片机具有优越的抗干扰能力、丰富易用的资源以及优良的结构,是非常适合于家用电器、工业控制、仪器仪表等方面应用的工业级微控制器。 SPMC65 系列单片机采用 8 位的 SPMC65 CPU ① 内核,并围绕这个通用的 CPU 内核,集成了不同的片内资源形成了从低档到高档一系列产品。在系列芯片中相同的片内硬件功能模块具有相同的资源特点;不同型号的芯片只是对片内资源进行删减。 表 1.1 中列出了 SPMC65 系列单片机部分芯片的硬件资源。表 1. 1 SPMC65 系列单片机硬件资源列表
注 ① : SPMC65 CPU 内核是凌阳公司在 6502 的基础上改进后的 CPU 内核,支持 6502 的全部指令,而在本书中将统称为 SPMC65 CPU 内核或 SPMC65 核,其指令系统称为 SPMC65 指令系统。 SPMC65 系列单片机根据片内资源的情况,目前划分了两大类芯片: 1 、不带 ADC 的通用单片机系列; 2 、带 ADC 的通用单片机系列。上表中列出的 SPMC65P2408A 单片机为资源较全的一颗芯片,下面就以 SPMC65P2408A 来说明凌阳 SPMC65 系列单片机的命名方法,同时也可以了解 SPMC65 系列单片机的一些情况: • SPMC65P2408A 的前六个字符“ SPMC65 ”为凌阳 8 位 SPMC65 系列通用单片机的标志字头,代表凌阳公司设计、开发的 8 位的通用型单片机系列; • SPMC65P2408A 的第七个字符“ P ”是指该芯片为一次性编程( OTP , One Time Program )型芯片,该位表示芯片的程序存储器类型,如果该位字符为“ F ”,则表示为闪速存储器( Flash )型芯片,如果为“ C ”则代表掩膜( MASK )型芯片; • SPMC65P2408A 的第八位“ 2 ”表示为 SPMC65 系列单片机中的“ 2 ”系列芯片,即带 ADC 的通用单片机系列,如果为“ 1 ”则表示为“ 1 ”系列芯片,即不带 ADC 的通用单片机系列; • SPMC65P2408A 的后两位数字表示该芯片的程序存储器大小 • SPMC65P2408A 最后的一个字母代表该芯片的版本号,如“ A ”则代表 A 版的芯片。 SPMC65 全系列单片机中,硬件结构、寄存器的映射等都是相同的,不同的只是资源的删减情况;所以在本书的介绍中,将从最全的 SPMC65 单片机的资源去作介绍,具体型号的芯片请参考相应型号的的数据手册( DataSheet ),读者可在凌阳单片机网站: www.sunplusmcu.com 上下载到 SPMC65 系列单片机中各型号芯片的数据手册。 1.3 SPMC65 系列单片机特点 SPMC65 系列单片机为针对家用电器、工业控制应用设计的工业级芯片;并为其应用领域作了具有针对性的增强设计;如:加强 I/O 端口以提高 I/O 端口的驱动能力、抗干扰能力;采用增强的复位系统,提高系统的可靠性;提供可靠而且完整 CCP 功能的定时器 / 计数器等。 SPMC65 系列单片机目前提供最大 928 字节的 RAM 和 16K 字节的 ROM ;同时还集成了一个时基、一个看门狗定时器、最多 6 个 16 位定时器 / 计数器、最多 9 个通道的 ADC 等资源。下面介绍全部的 SPMC65 系列单片机资源特性: • 存储空间 - 最大16K字节的程序空间( ROM ) - 最大928字节的数据空间( RAM ) • SPMC65CPU - 支持182条指令 - CPU最高频率8MHz - 支持位操作指令 • I/O端口 - 最多6组8位通用I/O端口 - 可设置为上拉/下拉/悬浮输入口,或者输出口 - 具有复用功能的双向I/O端口 • 中断 -最多6通道 外部中断:NMI非屏蔽中断或IRQ可屏蔽中断 - 内部中断 • 复位 - 增强的复位系统 • 时钟管理( Clock) - 3 种时钟源: RC 振荡器、晶体和外部时钟输入。 - 具备时钟频率输出能力 • 省电模式 - 2 种省电模式: STOP 、 HALT • 模拟外设 - 9 通道带一个内部参考电压的 10 位的 ADC ,或 8 通道带内 / 外部参考电压的 10 位 ADC 。 - 4.0V 或 2.5V 可选的低电压复位系统 - 1 通道 10 位的 DAC ,最大输出电流为 3.3mA - 2 个模拟电压比较器 • 3 个 16 位定时 / 计数器 ( 类型 I , Timer0 、 2 、 4) - 8 位 /16 位定时、计数功能 - 捕获功能 ( 8 位脉宽 / 周期测量, 16 位脉宽测量 ) - 8 位 /16 位比较输出 - 8 位 PWM 输出 • 2 个 16 位定时 / 计数器 ( 类型 II , Timer1 、 3) - 8 位 /16 位定时 / 计数器,事件计数模式 - 捕获功能 ( 8 位脉宽 / 周期测量, 16 位脉宽测量 ) - 8 位 /16 位比较输出 - 12 位 PWM 输出 • 1 个 16 位定时 / 计数器 ( 类型 III , Timer5) - 8 位 /16 位定时 / 计数器,事件计数模式 - 捕获功能 ( 8 位脉宽 / 周期测量, 16 位脉宽 / 周期测量 ) - 8 位 /16 位比较输出 - 16 位 PWM 输出 • 时基 - 频率选择:1Hz ~ 62.5kHz @8MHz • 蜂鸣器输出 - 频率: 1kHz to 2MHz @8MHz • 可编程看门狗定时器 • 串行总线接口 - SPI 总线 - UART 总线 - IIC 总线 应用领域: • 小家电 -微波炉、冰箱、洗衣机、空调、电饭煲、电磁炉、充电器等; • 带有 I/O 控制和 A/D 转换功能的工控场合。 为了方便用户的开发,凌阳公司还开发了一款仿真芯片 ECMC653 ,专门用于 SPMC65 系列单片机的仿真。 ECMC653 片内集成了 SPMC65 系列单片机全部的资源,具有 928 字节的 RAM 和 16k 字节的 SRAM 。同时还集成了 1 个时基、 1 个看门狗定时 / 计数器、 6 个 16 位定时 / 计数器和 9 通道的 ADC 等。为了帮助用户缩短开发周期,便于发现程序中隐藏的错误,芯片内部集成了专用的 1k 字节的 PC Trace 用于记录程序的运行路径,用户可以从中了解到程序是否正确执行。 用户可以通过 ECMC653 仿真、学习 SPMC65 系列全部的芯片,而且其硬件资源的应用与 SPMC65 系列单片机是完全一样的,需要仿真不同的芯片时,只需要在集成开发环境 FortisIDE 上作选择即可(具体请参考第十章中对 FortisIDE 以及在线仿真编程器的介绍)。 1.4 SPMC65系列单片机CPU内核
1.4.2 SPMC65系列单片机管脚分配 SPMC65 系列单片机提供了多种规格不同管脚数量的系列芯片,而且提供了 PDIP 、 SOP 形式的封装片;在系列芯片中所有的管脚功能分配、复用对映都是相同的,只是针对具体型号芯片有所删减。具体各个管脚的定义请参考书后的附录。 1.4.3 SPMC65系列单片机CPU SPMC65 系列单片机采用高性能微处理器 SPMC65 作为内核,全静态 CMOS 工艺设计,它有 6 个内部寄存器:累加器( A )、程序指针( PC )、 X 寄存器、 Y 寄存器、堆栈指针寄存器( SP )和状态寄存器( P )。支持 182 条指令。系统最高运行时钟( F SYS )可以达到 8MHz 。 CPU 内部结构见 图 1.2 。
图 1. 2 CPU 结构框图 1.4.4 SPMC65 CPU 寄存器 SPMC65 CPU 有 6 个寄存器:程序指针( PC )、累加器 (A) 、 X 寄存器、 Y 寄存器,堆栈指针寄存器 (SP) 、状态寄存器( P )。其中程序指针寄存器为 16 位寄存器,其它都是 8 位寄存器,详细描述见 表 1.2 。 表 1. 2 系统寄存器描述表
累加器:累加器是一个 8 位通用寄存器,可用于数据传送、数据暂存和条件判断等操作。 X 、 Y 寄存器:在寻址模式下, X 、 Y 寄存器用作地址指针,可以很方便的进行数据的存取。同时, X 、 Y 寄存器还可以进行加 1 、减 1 、比较和数据传送的操作 堆栈指针寄存器( SP ):一个可自动加 1 或减 1 的 8 位寄存器,专门用来存放堆栈的栈顶地址。 当调用子程序或中断发生时,堆栈指针会自动更新。但是如果堆栈指针的值超出了其允许的堆栈空间,系统就会发生非法地址复位。而在 CPU 内部,会自动对堆栈指针寄存器的值进行位扩展,即第 9 位始终自动扩展为 1 ,如下图所示:
图 1. 3 CPU 内部对堆栈指针寄存器扩展 程序计数器 (PC) : 16 位寄存器,存放 CPU 即将执行的下一条指令的 16 位地址。该 16 位地址的高 8 位和低 8 位分别存放在寄存器 PCH 和 PCL 中。复位后, PC 载入复位向量 $FFFC 、 $FFFD 中的程序运行起始地址。 状态寄存器 (P) : 8 位寄存器,包括一个中断屏蔽位和 5 个独立的状态标志位,这 5 个状态标志位可以反映程序执行完上一条指令后的状态信息。详细说明如下。
注 :并不是所有的指令执行都会影响状态寄存器的值。在后面的的指令系统的章节中将对每个指令作详细描述。 负标志位( N ):该位指示一个数据或者运算结果的 bit7 的状态。用户可以通过该位进行条件跳转。 溢出标志位( V ):该位仅用于有符号数的算术运算。如果两个同符号数相加或两个不同符号数相减,结果大于 127 或者小于 -128 ,该位置 1 。 十进制模式标志位( D ):在 SPMC65 系列单片机中有两种算术运算模式:二进制模式和十进制模式,该位标明了当前的运算模式。用户可以通过相应的控制指令来选择一种运算模式。 中断屏蔽位( I ):该位用于使能 / 禁止除“非屏蔽中断源( NMI )”以外的所有中断源。将该位置 1 , CPU 将忽略中断请求,置 0 , CPU 将可以接受中断请求。 零标志位( Z ):算术或逻辑运算结果标志位。当算术或逻辑运算结果为 0 时,该位被置 1 ;为其它值时,该位被置 0 。 进位标志( C ):当加法操作中产生进位或 减法操作中没有产生借位 时,该位被置 1 。此外,移位或循环指令 也会改变该位的值。 1.4.5 SPMC65 系列单片机的寻址方式 SPMC65 系列单片机支持 11 种寻址方式(详见第三章指令系统中的介绍): • 立即数寻址( Immediate addressing mode ) • 绝对寻址( Absolute addressing mode ) • 零页寻址( Zero page addressing mode ) • 绝对变址寻址( Absolute indexed addressing mode ) • 零页变址寻址( Zero page indexed addressing mode ) • 间接跳转寻址( Indirect addressing mode ) • 变址间接寻址( Indexed indirect addressing mode ) • 间接变址寻址( Indirect indexed addressing mode ) • 隐含寻址( Implied addressing mode ) • 累加器寻址( Accumulator addressing mode ) • 相对寻址( Relative addressing mode ) 1.5 SPMC65系列单片机的存储器 SPMC65系列单片机有独立的程序存储区和数据存储区。程序存储区为只读的,最大为 16K 字节。数据存储区可读可写,包含了各种控制寄存器和用户 RAM 。其中用户 RAM 最大为 928 字节(包括堆栈区)。 SPMC65 系列单片机集成的硬件外设通过地址映射到存储区的 $0000~$005F 范围内。 CPU 访问硬件外设即在内存中寻访到相应的外设控制寄存器。注意不要访问有“保留”字样的内存区,否则可能导致非法地址复位。 SPMC65 系列单片机的存储器分配见 图 1.4 所示。
图 1. 4 SPMC65 系列单片机存储器分配 SPMC65 系列单片机各部分的存储地址分配都是一样的,具体型号芯片会针对其应用对存储器有所删减,请参考具体型号芯片的数据手册。 1.5.1 程序存储器 SPMC65 系列单片机的程序存储区( ROM )最大为 16K 字节,所以使用一个 16 位的程序计数器(最大寻址 64K 字节)就可以访问全部的 ROM 空间。程序存储区由一次性可编程型只读存储器 OTP ROM 组成(针对于 SPMC65PXXXX 单片机),烧写时可以设置“保密功能”对程序进行保护。当设置“保密功能”时,用户无法读取这 16K 的 OTP ROM 中的内容,这时芯片配置选项和用户信息,以及地址 $FFF0~$FFFF 中的存储器数据是可读的。相反,不设置“保密功能”时,程序可以从芯片中读出。 复位后, CPU 从地址 $FFFC 和 $FFFD 中读出复位后程序的入口地址,然后跳转到该程序的入口去执行。中断发生时, CPU 通过中断向量跳转到相应的中断服务子程序中继续执行。存储器的 $FFFA~$FFFB 作为非屏蔽中断 NMI 的向量地址, $FFFE~$FFFF 作为可屏蔽中断 IRQ 的向量地址。这些中断向量的地址应在用户程序中做出正确的定义。 1.5.2 数据存储器 数据存储区分为两大部分:硬件控制寄存器、用户 RAM 区(包含堆栈空间)。 $0000~$005F 空间作为硬件控制寄存器, $0060~$03FF 作为用户使用的 RAM 空间 。 其中 $0000~$00FF 的空间为第零页存储空间( PAGE0 )。 硬件控制寄存器: CPU 通过设置硬件控制寄存器来控制其硬件外设的工作。硬件控制寄存器位于存储器的 $0000 ~$005F 空间内,共有 96 字节。它的作用是对中断系统、定时 / 计数器、 AD 转换器和 IO 端口等进行设置和状态标识。详细介绍请见各章节。 在 SPMC65 系列单片机中,位于内存 $0030~$0036 之间的寄存器是与系统运行相关的寄存器,需要慎重配置。因此访问 $0030~$0036 之间的寄存器时,必须进行连续两次的写操作才能设置成功,目的是为了保证写入控制寄存器的内容一定正确并能防止数据或地址总线上的噪声干扰。 用户RAM区: 用户 RAM 区位于 $0060 ~ $03FF 的地址空间内,可读可写。用户 RAM 区包括了堆栈空间。 堆栈空间: 堆栈区域为 $ 01E0~$01FF 共 32 字节 ,初始状态堆栈指针( SP )指向 $ 01FF (系统会自动为其扩展高位), 每压入一个字节的数据,指针减一,一旦超出 $01E0 , CPU 则发生非法地址复位( IAR )。 当中断发生时,中断返回地址和状态寄存器的值被压入堆栈。中断服务子程序执行完毕,执行指令 RTI 后,中断返回地址和状态寄存器的值被弹出堆栈,程序返回。 同样,当调用子程序时,子程序的返回地址也会被压入堆栈。子程序执行完毕,执行指令 RTS 后,子程序的返回地址被弹出堆栈,程序返回。
图 1. 5 堆栈操作示意图 堆栈指针( SP )用于指示当前的堆栈状况,每当压入一个数据,指针会自动减 1 ,弹出数据时,指针先自动加 1 ,然后再弹出一个数据,所以堆栈指针( SP )总是指向堆栈的顶端。详细操作见 图 1.5 。 1.5.3 芯片配置选项及用户信息 SPMC65 系列单片机预留了 $7FF0~ $7FFF 的空间作为用户信息块,可以由用户写入序列号或版本控制信息等,详细设置方法见后在介绍软硬件开发工具的章节。 1.6 SPMC65P2408A单片机 SPMC65P2408A是SPMC65系列单片机中资源较多的一款芯片,下面将简单介绍一下 SPMC65P2408A 的特点及资源情况, SPMC65P2408A 资源情况见 表 1.3 ;更详细的资料请参考 SPMC65P2408A 的数据手册。 表 1. 3 SPMC65P2408 资源简介
资源特性: • 存储空间 - 8K 字节程序空间( OTP ROM ) - 256 字节数据空间( RAM ) • I/O 端口 - 最多 27 ( 32PIN 封装)个通用 I/O 端口 - 可设置为上拉 / 下拉 / 悬浮输入口,或者输出口 - 所有端口具备直接驱动 LED 的能力 - 2 个 I/O 端口具备 20mA 的驱动能力 • 中断 - 4 通道 外部中断(其中 1 通道可设为 NMI 非屏蔽中断) - 13 个内部事件中断 • 复位 - 增强的复位系统 - 上电复位( POR )、低电压复位( LVR )、看门狗复位( WDR )、外部复位( ERST )、错误地址复位( IAR ) • 时钟管理 - 3 种时钟源: RC 振荡器、晶体和外部时钟输入。 - 具备时钟频率输出能力 • 省电模式 - 2 种省电模式: STOP 、 HALT • 模拟外设 - 8 通道带内 / 外部参考电压的 10 位 ADC - 4.0V 或 2.5V 可选的低电压复位系统 • 2 个 8 位定时 / 计数器 - 定时、计数功能 - 捕获功能 ( 8 位脉宽测量 ) - 8 位比较输出 • 2 个 16 位定时 / 计数器 - 定时 / 计数器,事件计数模式 - 捕获功能 ( 8 位脉宽 / 周期测量, 16 位脉宽测量 ) - 8 位 /16 位比较输出 - 12 位 PWM 输出 • 时基 - 频率选择: 1Hz ~ 62.5kHz @8MHz • 蜂鸣器输出 - 频率选择: 1kHz to 2MHz @8MHz • 可编程看门狗定时器 - 频率选择: 1.5Hz to 195Hz @25KHz • 串行总线接口 - SPI 总线:最高 2MHz @8MHz - UART 总线:最高波特率: 38400 bps@8MHz 封装形式: SPMC65P2408A 有两种管脚形式的封装片: 32 管脚和 28 管脚的芯片。每种形式都提供了 PDIP 和 SOP 形式的封装;具体可参考 图 1.6 。 SPMC65P2408A 的最小系统图如 图 1.7 所示。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||