深入解析C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7混合信号MCU
引言
在当今的电子设计领域,混合信号MCU凭借其强大的功能和高集成度,成为了众多工程师的首选。Silicon Labs的C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7系列MCU就是其中的佼佼者。本文将对这一系列MCU进行全面而深入的剖析,涵盖其系统概述、各模块功能、寄存器配置等方面,为电子工程师们提供一份详尽的参考资料。
文件下载:C8051F012-GQR.pdf
一、系统概述
1.1 产品特性
C8051F000系列MCU是高度集成的混合信号片上系统,具备真正的12位多通道ADC(F000/01/02/05/06/07)或10位多通道ADC(F010/11/12/15/16/17)。它集成了可编程增益前置放大器、两个12位DAC、两个电压比较器(F002/07/12/17只有一个)、电压基准以及与8051兼容的微控制器内核,还拥有32KB的FLASH内存。同时,它还具备I2C/SMBus、UART和SPI串行接口,以及可编程计数器/定时器阵列(PCA)等。C8051F000/01/02/10/11/12拥有256字节的RAM,最高执行速度可达20MIPS;而C8051F005/06/07/15/16/17则拥有2304字节的RAM,最高执行速度可达25MIPS。
1.2 产品选择指南
| 型号 | MIPS (Peak) | 内部RAM | 通信接口 | ADC分辨率(位) | ADC输入 | 温度传感器 | 封装形式 |
|---|---|---|---|---|---|---|---|
| C8051F012 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 32LQFP |
| C8051F011 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 48TQFP |
| C8051F010 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 64TQFP |
| C8051F007 | 25 | 2304 | SPI、UART等 | 12 | 100 | 有 | 48TQFP |
| C8051F000 | 20 | 256 | SPI、UART等 | 12 | 100 | 有 | 64TQFP |
二、核心CPU——CIP - 51
2.1 兼容性与性能
CIP - 51微控制器内核与MCS - 51™指令集完全兼容,这意味着标准的803x/805x汇编器和编译器都可用于开发软件。与标准8051架构相比,CIP - 51采用流水线架构,大大提高了指令吞吐量。在标准8051中,除MUL和DIV指令外,所有指令执行需要12或24个系统时钟周期,且最大系统时钟通常为12MHz。而CIP - 51内核70%的指令在1或2个系统时钟周期内执行,无指令执行时间超过8个系统时钟周期。在25MHz的最大系统时钟下,其峰值吞吐量可达25MIPS。
2.2 指令集与CPU定时
CIP - 51的指令集与标准MCS - 51™指令集完全兼容,但指令定时有所不同。它基于时钟周期计时,大部分指令的执行时钟周期数与指令的程序字节数相同。条件分支指令在不跳转时比跳转时少一个时钟周期。
2.3 MOVX指令与程序内存
MOVX指令通常用于访问外部数据内存,在CIP - 51中,它可通过PSCTL寄存器的控制位访问片上作为可重编程Flash内存实现的程序内存空间,这为程序代码更新和非易失性数据存储提供了便利。
三、内存组织
3.1 程序内存
CIP - 51拥有64KB的程序内存空间,其中32896字节实现为可在系统中重编程的Flash内存,从地址0x0000到0x807F连续排列。需注意的是,512字节(0x7E00 - 0x7FFF)的内存为工厂预留,不可用于用户程序存储。程序内存通常为只读,但通过设置PSCTL.0位并使用MOVX指令,CIP - 51可对其进行写入操作。
3.2 数据内存
CIP - 51实现了256字节的内部RAM,映射到数据内存空间的0x00到0xFF。数据内存的低128字节用于通用寄存器和暂存内存,可通过直接或间接寻址访问。0x00到0x1F的位置可作为四个通用寄存器组进行寻址,接下来的16字节(0x20到0x2F)既可以字节寻址,也可以位寻址。数据内存的高128字节只能通过间接寻址访问,它与特殊功能寄存器(SFR)占用相同的地址空间,但物理上是分离的。C8051F005/06/07/15/16/17还在CIP - 51的外部数据内存空间中有2048字节的RAM,可使用MOVX指令访问。
3.3 通用寄存器与位寻址位置
数据内存的低32字节(0x00到0x1F)可作为四个通用寄存器组进行寻址,每个组由八个字节宽的寄存器R0到R7组成。程序状态字中的RS0(PSW.3)和RS1(PSW.4)两位用于选择活动寄存器组,方便在子程序和中断服务程序中进行快速上下文切换。此外,0x20到0x2F的16个数据内存位置还可作为128个可单独寻址的位进行访问。
3.4 堆栈
程序员的堆栈可位于256字节数据内存的任何位置,通过堆栈指针(SP,0x81)SFR指定堆栈区域。复位时,堆栈指针初始化为0x07,因此第一个压入堆栈的值将位于0x08位置。MCU还具备内置的堆栈记录硬件,可检测堆栈的溢出或下溢,并在全速调试时通知调试软件。
四、特殊功能寄存器(SFR)
4.1 SFR概述
直接访问数据内存中从0x80到0xFF的位置构成了特殊功能寄存器(SFR),它们用于与CIP - 51的资源和外设进行控制和数据交换。CIP - 51不仅复制了典型8051实现中的SFR,还实现了额外的SFR,用于配置和访问MCU特有的子系统,在保持与MCS - 51™指令集兼容性的同时增加了新功能。
4.2 部分重要SFR介绍
- SP(堆栈指针):保存堆栈顶部的位置,每次PUSH操作前会递增。复位后默认值为0x07。
- DPL和DPH:分别是16位数据指针DPTR的低字节和高字节,用于间接寻址访问RAM和Flash内存。
- PSW(程序状态字):包含多个标志位,如进位标志CY、辅助进位标志AC、寄存器组选择位RS1 - RS0等,用于反映程序执行状态和控制寄存器组的选择。
- ACC(累加器):用于算术运算。
- B寄存器:作为某些算术运算的第二个累加器。
五、中断处理
5.1 中断源与向量
CIP - 51包含一个扩展的中断系统,支持总共22个中断源,具有两个优先级级别。中断源包括复位、外部中断、定时器溢出、串口中断等。每个中断源都有一个或多个关联的中断挂起标志位于SFR中,当外设或外部源满足有效中断条件时,关联的中断挂起标志将被置为逻辑1。
5.2 外部中断
两个外部中断源(/INT0和/INT1)可配置为低电平敏感或下降沿敏感输入,通过设置IT0(TCON.0)和IT1(TCON.2)来选择。其余四个外部中断(外部中断4 - 7)为低电平、下降沿敏感输入,中断挂起标志位于Port 1中断标志寄存器中。
5.3 中断优先级
每个中断源可单独编程为低或高优先级。低优先级中断服务程序可被高优先级中断抢占,高优先级中断不可被抢占。每个中断都有一个关联的中断优先级位在SFR(IP - EIP2)中,用于配置其优先级级别,默认优先级为低。
5.4 中断延迟
中断响应时间取决于CPU在中断发生时的状态。最快响应时间为5个系统时钟周期,最长响应时间在特定情况下(如CPU执行RETI指令后接DIV指令)可达18个系统时钟周期。
六、电源管理模式
6.1 空闲模式
设置空闲模式选择位(PCON.0)会使CIP - 51在指令执行完成后暂停CPU并进入空闲模式,所有内部寄存器和内存保持原始数据,所有模拟和数字外设可保持活动。空闲模式可通过使能的中断或/RST信号终止,此时空闲模式选择位将被清除,CPU恢复运行。
6.2 停止模式
设置停止模式选择位(PCON.1)会使CIP - 51进入停止模式,CPU和振荡器停止,所有数字外设关闭。每个模拟外设必须在进入停止模式前单独关闭。停止模式只能通过内部或外部复位终止。
七、Flash内存
7.1 编程与擦除
这些设备包含32k + 128字节的片上可重编程Flash内存,可通过JTAG接口或使用MOVX指令在系统中逐字节编程。Flash位一旦清零,必须通过擦除操作才能重新置为1。写入和擦除操作由硬件自动定时,无需数据轮询来确定操作结束。Flash内存设计可承受至少20,000次写入/擦除周期。
7.2 非易失性数据存储
Flash内存可用于非易失性数据存储,允许在运行时计算和存储校准系数等数据。数据通过MOVX指令写入,通过MOVC指令读取。此外,MCU还在0x8000 - 0x807F位置有一个128字节的Flash扇区,适合作为通用非易失性暂存内存。
7.3 安全选项
CIP - 51提供安全选项来保护Flash内存,防止软件意外修改以及防止查看专有程序代码和常量。Program Store Write Enable(PSCTL.0)和Program Store Erase Enable(PSCTL.1)位可保护Flash内存,必须显式设置为逻辑1才能通过软件修改Flash内存。此外,位于0x7DFE和0x7DFF的安全锁字节可防止通过JTAG接口读取或修改Flash程序内存。
八、外部RAM(C8051F005/06/07/15/16/17)
C8051F005/06/07/15/16/17 MCUs在外部数据内存空间中包含2048字节的RAM,可使用外部移动指令(MOVX)和数据指针(DPTR)或MOVX间接寻址模式访问。该2048字节的RAM以模方式映射在整个64k外部数据内存地址范围内,方便进行线性内存填充操作。
九、复位源
9.1 复位类型
MCU有七种复位源,包括上电复位、软件强制复位、掉电复位、外部复位、缺失时钟检测器复位、比较器0复位和看门狗定时器复位。每种复位源都有其特定的触发条件和操作方式。
9.2 上电复位
C8051F000系列包含电源监控器,在上电时将MCU保持在复位状态,直到VDD上升到(V_{RST}) 电平以上。/RST引脚在100ms的VDD监控器超时结束前保持低电平,以确保VDD电源稳定。
9.3 看门狗定时器复位
MCU包含一个可编程的看门狗定时器(WDT),由系统时钟驱动。当看门狗定时器溢出时,将强制MCU进入复位状态。为防止复位,应用程序软件必须在溢出发生前重启WDT。
十、振荡器
10.1 内部振荡器
每个MCU都包含一个内部振荡器和一个外部振荡器驱动电路,可生成系统时钟。MCU在任何复位后从内部振荡器启动,内部振荡器可通过内部振荡器控制寄存器(OSCICN)进行启用/禁用和频率更改。
10.2 外部振荡器
外部振荡器需要一个外部谐振器、并联模式晶体、电容器或RC网络连接到XTAL1/XTAL2引脚。可通过OSCXCN寄存器配置振荡器电路的源。外部CMOS时钟也可通过驱动XTAL1引脚提供系统时钟。
十一、端口输入/输出
11.1 端口资源与交叉开关
MCU通过四个数字I/O端口(P0、P1、P2和P3)提供广泛的数字资源。每个端口的引脚可定义为相应的端口I/O或分配的内部数字资源。通过优先级交叉开关解码器,可将内部数字资源分配到物理I/O引脚,实现资源分配的灵活性。
11.2 端口初始化
端口I/O初始化包括加载XBR0、XBR1和XBR2寄存器以选择所需的数字I/O功能,设置XBR2中的XBARE位以启用交叉开关。通过端口配置寄存器(PRT0CF、PRT1CF、PRT2CF、PRT3CF)定义I/O引脚的输出驱动特性,可配置为推挽或开漏模式。
11.3 通用端口I/O
每个MCU有四个字节宽的双向并行端口,可作为通用I/O使用。通过相应的特殊功能寄存器(SFR)访问端口时,写入的值将被锁存以保持输出数据值,读取时返回端口输入引脚的逻辑电平。
十二、串行接口
12.1 SMBus / I2C总线
SMBus串行I/O接口符合系统管理总线规范1.1版,与I2C串行总线兼容。它是一个两线、双向串行总线,数据传输速率可达系统时钟的(1/8) 。支持主从设备之间的数据传输,具备仲裁和时钟低扩展机制,以适应不同速度的设备。
12.2 串行外设接口总线(SPI)
SPI提供一个四线、全双工的串行总线,支持多个从设备连接到主设备。可配置为主设备或从设备,主设备模式下最大数据传输速率为系统时钟频率的一半,从设备模式下全双工操作最大数据传输速率为系统时钟频率的(1/10) 。
12.3 UART
UART是一个能够进行异步传输的串行端口,可工作在全双工模式。它有四个操作模式,提供不同的波特率和通信协议。支持多处理器通信,通过第九数据位实现主从处理器之间的通信。
十三、定时器
13.1 定时器概述
每个MCU实现了四个计数器/定时器,包括三个与标准8051兼容的16位计数器/定时器和一个用于ADC、SMBus或通用用途的16位定时器。它们可用于测量时间间隔、计数外部事件和生成周期性中断请求。
13.2 定时器0和定时器1
定时器0和定时器1有四种主要操作模式,包括13位计数器/定时器、16位计数器/定时器、8位计数器/定时器带自动重载和两个8位计数器/定时器(仅定时器0)。可通过TCON和TMOD寄存器进行控制和配置。
13.3 定时器2
定时器2是一个16位计数器/定时器,可使用系统时钟或外部输入引脚的转换作为时钟源。它有三种操作模式:16位计数器/定时器带捕获、16位计数器/定时器带自动重载和波特率发生器模式。
13.4 定时器3
定时器3是一个16位定时器,输入为系统时钟(根据T3M位选择除以1或12)。它总是配置
发布评论请先 登录
深入解析C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7混合信号MCU
评论