730 likes | 946 Views
英飞凌 8 位单片机 增强内核的 51 单片机 XC866. (自动化学院单片机原理课程补充内容) 康戈文 07 年 编写. 主要包含以下内容:. XC866 单片机体系结构 并行接口的配置(基本端口操作) I 2 C 总线, SPI 总线 AD 转换器 定时器 2 及定时器中捕获比较单元及 PWM 输出。 根据课时进行选择讲解. XC866 单片机特点. 与 8051 兼容内核 具有片内振荡器和锁相环产生时钟 具有片内看门狗 WDT 8 通道 10 位 AD 转换器
E N D
英飞凌8位单片机增强内核的51单片机XC866 (自动化学院单片机原理课程补充内容) 康戈文 07年编写
主要包含以下内容: • XC866单片机体系结构 • 并行接口的配置(基本端口操作) • I2C 总线,SPI 总线 • AD 转换器 • 定时器2及定时器中捕获比较单元及PWM输出。 • 根据课时进行选择讲解
XC866 单片机特点 • 与8051兼容内核 • 具有片内振荡器和锁相环产生时钟 • 具有片内看门狗WDT • 8通道 10位AD转换器 • 具有PWM产生的捕获比较单元CCU6 • 支持片上调试(JTAG)和在线编程ISP • 3个定时器,256字节RAM,4KB FLASH+16K ROM,512字节XRAM • 两个DPTR 双数据指针 • 支持多种省电模式
多功能引脚举例 • P0.0 引脚12 TCK_0 JTAG 时钟输入 T12HR_1 CCU6 定时器12 硬件运行输入 CC61_1 捕获/比较通道1 输入/输出 CLKOUT 时钟输出 RXDO_1 UART 发送数据输出 • P0.1 引脚14 TDI_0 JTAG 串行数据输入 T13HR_1 CCU6 定时器13 硬件运行输入 RXD_1 UART 接收数据输入 COUT61_1 捕获/比较通道1 输出 EXF2_1 定时器2 外部标志输出
XC866的存储器结构 • 8K 启动(boot)ROM 地址:C00H-E000H • 256字节片内RAM,0~7FH使用直接寻址,80~FFH使用寄存器间接寻址 • 128字节SFR 地址80~FFH,使用直接寻址 • 512字节XRAM 地址F000~F200,使用MOVX访问。当使用R0,R1作地址寄存器时,其XRAM地址的高位地址由寄存器XADDRH 中的值定义。 • 8K/16K 程序存储器,起始地址0000 • 特殊的EO寄存器操作,允许切换DPTR以及对程序ROM写操作(指令:MOVC @(DPTR++),A)实现软件更新
扩展操作寄存器(EO) • 指令集还包括一条指令MOVC@(DPTR++),A ,允许对程序存储器写操作。初始化CPU 时用该指令将代码下载到程序存储器中,也用该指令进行软件更新 • 该指令将累加器中的内容复制到当前数据指针指向的程序存储器地址中,接着数据指针加1。 • 该指令的操作码为A5H,和软件断点指令TRAP 的操作码相同(见表 2-1)。位EO.TRAP_EN 用来选择A5B 操作码执行的指令。当TRAP_EN 为0(缺省值)时,A5H执行MOVC 指令;当TRAP_EN 为1 时,A5H 执行软件断点指令TRAP,该指令将 • CPU 切换至调试模式执行断点操作。
EO • 扩展操作寄存器 复位值: 00H • DPSEL 数据指针选择 • 0 选择DPTR0 • 1 选择DPTR1 • TRAP_EN TRAP 使能位 • 0 选择MOVC@(DPTR++),A • 1 选择软件TRAP 指令
扩展的SFR • 由于XC866功能强大,128个字节的SFR不够用,特作了映射和分页处理 • 对地址8FH的SYSCON0寄存器位0(RMAP)写1可以访问映射区的SFR • 映射后的SFR还不够用,再采用分页进行管理:对MOD_PAGE寄存器的低3位(PAGE)进行设置,可以访问需要的SFR页。
上拉/下拉 寄存器 使能寄存器 VDDP 开漏控制 上拉 器件 方向选择 第二功能选择 (两个) 数据输出1 数据输出2 数据输出3 下拉 器件 引脚 端口数据 数据输入 GND 基本端口结构
端口相关寄存器 • PX_PUDSEL 上拉/下拉选择寄存器 • PX_PUDEN 上拉/下拉使能寄存器 • PX_OD 漏极开路控制寄存器 • PX_DIR 方向寄存器(P2口只能作为输入) • PX_ALTSEL0 第二功能选择寄存器0 • PX_ALTSEL1 第二功能选择寄存器1 • PX_DATA 端口数据寄存器 • 其中PX的X为端口编号,寄存器都是8位,每位对应一个引脚 • 回忆:51单片机没有这些寄存器——准双向口
端口控制寄存器介绍1 • PX_DATA 端口数据寄存器 • 8位,作为输出时,存放输出的端口数据,作为输入时,可以读到端口引脚的锁存值。 • PX_DIR 方向寄存器 • 8位,双向口时,0=输入,1=输出 • 单项输入口时(P2口),0=禁止输入驱动,1=输入驱动使能
端口控制寄存器介绍2 • PX_OD 漏极开路控制寄存器 • 8位,0=正常模式,1=开漏输出模式 • PX_PUDSEL 上拉/下拉选择寄存器 • 8位,0=下拉,1=上拉 • PX_PUDEN 上拉/下拉使能寄存器 • 8位,0=禁止上拉或者下拉,1=使能
端口控制寄存器介绍3 • PX_ALTSEL0 第二功能选择寄存器0 • PX_ALTSEL1 第二功能选择寄存器1 • 两个8位,对应位的两个寄存器组成2位控制代码,其意义如下: • GPIO=通用输入输出
I2C总线和SPI总线 • I2C总线和SPI总线同属于“位同步”的串行接口,但又有一些不同点: • 51的串口方式0(回忆) • I2C总线的数据信号需要:起始、停止和ACK信号,要求对方作应答 • SPI总线:两条串行数据线,一条时钟线。数据线分输出和输入。对多个外部芯片,还需要片选CS。
I2C总线介绍 • I2C总线是PHILIPS公司提出的“片间总线”的英文缩写 • 典型应用在串行E2PROM存储芯片的读写中。 • 常见型号有24CXX,24LCXX,94CXX等,这里XX表示容量,单位1KBIT。例如24C02表示容量2KBIT=256字节 • 这类芯片有8个引脚,除2个电源,三个地址,一个备用外,剩余两个引脚就是I2C的SDA和SCK。 • 器件的3个地址由电路链接设定(接GND或者接VCC),可以确定8个器件的不同地址。 • 这类存储芯片常用于掉电需保存的数据存储,例如彩电频道信息,产品特性信息等。
I2C总线电路链接 器件 1 单片机 • I2C总线使用2条通讯线路:SDATA和SCLK。SDATA为双向串行数据线,SCLK为同步时钟,通常由单片机发出。 • 器件自身地址3个引脚用“接地/接电源”方式确定,各器件应当设计为不同地址。(最多8个器件,地址:0~7) 。。。。。。 。。。。。。 SDATA 器件 n SCLK
I2C 总线基本时序 (A) 总线空闲,当SCL和SDA都为高电平时 (B) START 数据开始传输,当SCL为高时,SDA变低。 (C) STOP 数据停止传输,当SCL为高时,SDA由低变高。 (D) 数据有效,当SCL高电平期间,SDA为一个稳定电平。即:先发出SDA数据,然后在SCL线上产生一个正方波。
I2C总线E2PROM常见封装 • A0~A2 芯片地址,链接VCC/GND确定,访问命令中应包含此芯片的地址。 • SDA 双向串行数据线 • SCL 同步时钟线 • VSS=GND • PIN 7 一些芯片定义为“写保护WP”,设为低电平时不能对芯片写入。 • 常见型号:24CXX,94CXX,其中XX为容量(K位),例如XX=02,容量=2048/8=256字节 图中XX=65,容量为8KB
I2C 总线操作时序和控制码 • 容量超过256字节时,地址长度为两字节,ADDR1和ADDR0,其中ADDR1为高地址,ADDR0为低地址;在控制码、ACK后,送ADDR1、ACK、ADDR0、ACK,然后是数据。 • 字节写:一次一字节。 • 页写:前面部分同“字节写”,一次可连写8字节 • 控制码前4位为标志,其后3位为器件地址,最末位为1则读,为0则写。
XC866实验四:ZLG7290显示和键盘扫描 • ZLG7290和HD7279/7289等芯片是专用于LED数码管显示和键盘扫描的专用芯片,单片机可以通过I2C总线与其相连实现显示控制和键盘扫描。单片机对芯片用约定的命令对其进行初始化,然后把显示数据送入芯片内部的显示寄存器,就能在数码管上看到显示结果。 • 芯片自动扫描键盘和刷新显示。一旦有键按下会发出中断申请。 • SDA 串行数据,输入 • SCL 串行移位时钟,输入 • INT 中断申请输出(有键按下),低电平 • RST (低电平)复位输入 • SA;SB;SC…..SG;DP 数码管8个笔划。KR0;KR1……KR7键盘阵列”行”。SA/KR0;SB/KR1…..分时使用 • DIG0/CK0;DIG1/CK1;….8个数码管选择和8列键盘扫描共用信号
模拟I2C总线要点 • 编写几个子程序,分别完成和产生:START;STOP;ACK;NOACK以及写数(发送)读数(接收)功能,然后按照芯片规定的时序依次调用它们。 • 例如随机读:START、发控制字(写命令)、ACK、写ADDR1、ACK、写ADDR0、ACK、发START、发控制字(读命令)、读数、STOP • 前面8051部分已经举例说明过模拟方式写数和收数程序,这里再举例START和STOP
(1)起始位 送出起始位,若SDA和SCL不全高,起始位发送失败,返回C=1,发送成功则返回C=0。 START: SETB SDA SETB SCL JNB SDA,RETERR JNB SCL,RETERR NOP CLR SDA NOP×5 CLR SCL CLR C JMP RETST RETERR:SETB C RETST: RET (1)停止位 STOP: CLR SDA NOP NOP SETB SCL NOP NOP NOP NOP NOP SETB SDA RET SCL SDA 产生START和STOP
(3)写数 数据存在ACC中,程序返回为C=ACK SEND:PUSH B MOV B,#8;8位数 SENDLP:RLC A MOV SDA,C NOP SETB SCL NOP×4 CLR SCL DJNZ B,SENDLP;判8位完否 SETB SDA ;以下读取ACK NOP NOP SETB SCL NOP×4 MOV C,SDA CLR SCL POP B RET 写数举例同时判读ACK,返回时如果C=0则发送成功
MOSI 移位寄存器 移位寄存器 MISO SCLK 时钟 时钟 主机 从机 SPI总线结构 • SPI总线使用三条信号线,除SCLK外,两条串行数据线MISO和SIMO。字母M为“主”,字母S为“从”,I入O出。 • SPI总线:主方(MAST)和从方(SLAV)都有各自的“移位寄存器”,并且串连在同一条电路上,主方发出的移位时钟同时移动两个“移位寄存器”,主方的数据发向从方,同时也将从方数据读回。 • 可以并联多个从机,主/从机可以用软件设定,SCLK只能由主机发出。 • SPI数据顺序是高位(MSB)先发/先收。(注:与8051串口方式0相反)
MOSI 移位寄存器 移位寄存器 MISO SCLK 时钟 时钟 从机1 端口1 SS 移位寄存器 端口2 SS 时钟 从机2 主机 通常SPI多机通讯时,由主机选择跟那一个从机通讯,可在端口上输出低电平到相应从机的SS端。 从机n 常见的SPI多机通讯
英飞凌8位单片机XC866的SSC • XC866具有高速同步串行通道SSC,可与SPI兼容,也可与8051串口方式0兼容。 • 波特率可独立编程:它具有专用的,具有重装载功能的16位波特率发生器。 • 数据宽规定为2~8位“字符” • 可先发送LSB(与8051串口方式0兼容),也可先发送MSB(与SPI兼容) • 可在时钟的上升沿或者下降沿对数据进行移位 • 可产生移位时钟或者接收移位时钟 • 名称有所不同:MOSI=MTSR, MISO=MRST
XC866的SSC双工方式 XC866没有SS从机选择引脚。可以增加这个选择信号,也可以用特殊命令进行选择。 被选中的从机才可以使能MRST,否则大家都输出移位寄存器中的数据会导致。。。。 所有从机CLK引脚应当设置成输入方式。
时钟极性和数据顺序 • CON寄存器的PO和PH位决定时钟极性。如图所示。 • CON寄存器的HB位决定先发送LSB或者MSB, • HB=0 先发送/接收LSB • HB=1先发送/接收MSB
引脚信号 • MRST 主机接收(串行数据)(MOSI) • MTSR 主机发送(串行数据)(MISO) • SCLK 双向,主机发送的移位时钟,作为从机时为输入
SSC的部分相关寄存器介绍 • CON SSC控制寄存器,16位,分别是:CONH和CONL • 根据CON中的CONH.EN设定,可为: • CONH.EN=0 编程模式,实现控制功能 • CONH.EN=1 工作模式,状态标志
控制寄存器CONH编程模式介绍EN=0 • TEN =1允许发送出错中断 • REN =1允许接收出错中断 • PEN =1允许相位出错中断 • BEN =1允许波特率出错中断 • AREN =1波特率出错时SSC被自动复位 • MS =1主机模式,MS=0从机模式 • EN =0 禁止发送和接收,编程模式 • O 保留
控制寄存器CONL介绍 • BM 数据宽度选择,通常设为0111 • HB HB=0,先送LSB;HB=1,先送MSB • PH PH=0,时钟前沿移出发送数据,后沿锁存接收数据。PH=1,前沿锁存接收数据,后沿移出发送数据 • PO 时钟极性控制, PO=0 低电平空闲,上升沿为前沿,PO=1高电平空闲,下降沿为前沿
控制寄存器CONH状态模式介绍EN=1 • TE =0发送未出错 • RE =0接收未出错 • PE =0相位未出错 • BE =0波特率未出错 • BSY 传输过程中=1 • MS =0 从模式 • EN =1 工作
16位重装载寄存器 /2 16位计数器 fpclk SCLK SSC波特率设定 • SSC通道具有专用16位重载功能的波特率发生器。 • 重载寄存器BR存放分频值,定时器对此值进行递减计数,发生下溢时,定时器被此值重装。 • 计数器时钟源fpclk/2进行分频 • 当作为主机,发送数据的同时需要接收从机数据时,波特率应当设置为不超过最高波特率的一半。 主模式fsclk<fpclk/2 从模式fsclk<fpclk/2
SSC 其它设定 • 中断控制等,本课程略
DA转换器芯片 • DA转换器主要组成部分是电阻网络和相应的模拟开关阵列。 • 模拟量输出通常为电流输出,图中的运算放大器把电流输出转换成电压输出,按厂家设计的反馈电阻连接,输出电压与参考电压之间满足如下关系: Vout= - Vref X (data /(2n-1)) 其中:n为数字量的位数,data为输入的数字量 • 有的芯片自带数据锁存器、自己提供参考电压。 • 芯片型号繁多,常见的有DAC0832等。
可以用于中断申请 逐次逼近AD转换器原理
逐次逼近AD转换器芯片基本信号 • 基本输入信号: Vref:参考电压输入 ФAD:AD转换器工作时钟 Vin:输入要转换的模拟电压 START:启动转换 • 基本输出信号: EOC:转换结束信号,可以用于触发中断。 • 某些芯片自带参考电压,用电位器调节后再连接到Vref引脚。某些芯片带有采样保持功能。 • ADC0809 自带8通道选择,可以输入8路模拟量。
XC866的AD转换器特性 • 逐次逼近 • 8位或者10位精度,8路模拟通道 • 4个独立的结果寄存器 • 单次转换和自动扫描功能 • 采样时钟可编程,时钟分频器可编程 • 集成的采样保持电路 • 数据压缩滤波 • 灵活的中断产生方式,中断服务节点可配置 • 可以关闭ADC模块,以便降低功耗
预分频器 /2/3/4/32可选 模拟单元 fADC=fPLCK fADCI<10M 参看13-3 AD转换器的工作时钟 • ADC模拟单元工作时钟应当小于10兆赫兹。 • 当不需要AD工作于最高性能时,建议采用32分频(缺省值)。 • 预分频因子在寄存器GLOBCTR的CTC位域。
AD转换时序 • 转换被触发后,先作“同步”,然后对信号进行采样(保持),此后才开始转换。 • 转换过程结束,将转换结果存入规定的数据存储单元,并产生中断申请。
XC866降低功耗机制 • 基本51的电源控制寄存器可以设置: • 掉电模式PCON.PD=1(关闭MCU), • 节电模式PCON.IDLE=1(除部分接口外,关闭所有操作)。也叫“空闲模式” • XC866增加了低速模式和关闭部分接口功能 • 低速模式PMCON0.SD=1,选择系统时钟频率降低功耗。 • 对PMCON1的低4位设置(置1)以关闭:ADC/SSC/CCU/T2的工作
AD转换功能描述 • 带有各自独立寄存器的两个不同的转换请求源。请求源用来触发由外部事件、序列方案等引起的转换。 • 每个请求源的优先级可单独编程设定,从而具有高度灵活性,可覆盖期望的应用领域。 • 八路通道中每路的控制寄存器定义了每种模拟输入的行为(例如中断行为,结果寄存器指针,通道级别指针,等)。 • 输入综合控制寄存器给出总的通道控制信息(采样时间)。 • 四个结果寄存器(并非每路模拟输入通道对应一个结果寄存器)用来保存转换结果并控制数据压缩。 • 转换结果的抽取阶段,将新的转换值累加到目标结果寄存器所保存的转换结果上,从而即使CPU 低频工作,仍可快速、连续进行转换而且没有数据损失的危险。