[导读] XC866是新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核、片内FLASH及功能强大的外设集。此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V单电源供电的嵌入式电压调节器(EVR)进一步增强了产品性能并有效地节省了系统成本。

  往期系列文章推荐:

  全球主流8位MCU芯片详细解剖No.1:飞思卡尔 MC9S08AC60

  简介

  XC866是 新型8位微控制器系列(XC800)的第一代系列产品,集成高性能8051核、片内FLASH及功能强大的外设集。此外,XC800系列产品内部集成的片 内振荡器和支持3.3V或5.0V单电源供电的嵌入式电压调节器(EVR)进一步增强了产品性能并有效地节省了系统成本。XC866除了提供片内 FLASH的产品外,同时推出同系列兼容ROM 产品,为大批量生产提供了进一步节省成本的空间。

  单片机结构图

  引脚图

  多功能引脚举例

  -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 外部标志输出

  模块分析

  存储器结构

  -8K 启动(boot)ROM 地址:C00H-E000H

  -256字节片内RAM,0~7FH使用直接寻址,80~FFH使用

  (1)寄存器间接寻址

  -128字节SFR 地址80~FFH,使用直接寻址

  -512字节XRAM 地址F000~F200,使用MOVX访问。当使用R0,R1作地址寄存器时,其XRAM地址的高位地址由寄存器XADDRH 中的值定义。

  -8K/16K 程序存储器,起始地址0000

  -特殊的EO寄存器操作,允许切换DPTR以及对程序ROM

  -写操作(指令:MOVC @(DPTR++),A)实现软件更新

  (2)基本端口结构图

  (3)端口相关寄存器

  - PX_PUDSEL 上拉/下拉选择寄存器

  -PX_PUDEN 上拉/下拉使能寄存器

  -PX_OD 漏极开路控制寄存器

  - PX_DIR 方向寄存器(P2口只能作为输入)

  - PX_ALTSEL0 第二功能选择寄存器0

  -PX_ALTSEL1 第二功能选择寄存器1

  - PX_DATA 端口数据寄存器

  其中PX的X为端口编号,寄存器都是8位,每位对应一个引脚

  I2C总线和SPI总线

  I2C总线和SPI总线同属于“位同步”的串行接口,但又有一些不同点:

  nn I2C总线的数据信号需要:起始、停止和ACK信号,要求对方作应答

  I2C总线电路链接

  SPI总线:两条串行数据线,一条时钟线。数据线分输出和输入。对多个部芯片,还需要片选CS。

  SPI总线结构

  XC866的SSC

  XC866具有高速同步串行通道SSC,可与SPI兼容,也可与8051串口方式0兼容;

  -波特率可独立编程:它具有专用的,具有重装载功能的16位波特率发生器;

  -数据宽规定为2~8位“字符”;

  -可先发送LSB(与8051串口方式0兼容),也可先发送MSB(与SPI兼容);

  -可在时钟的上升沿或者下降沿对数据进行移位;

  -可产生移位时钟或者接收移位时钟;

  -名称有所不同:MOSI=MTSR, MISO=MRST ;

  SSC组成框图

  数模转换器(DA)

  工作原理

  DA转换器芯片

  DA转换器主要组成部分是电阻网络和相应的模拟开关阵列。

    模拟量输出通常为电流输出,图中的运算放大器把电流输出转换成电压输出,按厂家设计的反馈电阻连接,输出电压与参考电压之间满足如下关系:

  Vout= - Vref X (data /(2n-1))

  其中:n为数字量的位数,data为输入的数字量有的芯片自带数据锁存器、自己提供参考电压。芯片型号繁多,常见的有DAC0832等。

  AD转换器

  -逐次逼近

  -8位或者10位精度,8路模拟通道

  -4个独立的结果寄存器

  -单次转换和自动扫描功能

  -采样时钟可编程,时钟分频器可编程

  -集成的采样保持电路

  -数据压缩滤波

  -灵活的中断产生方式,中断服务节点可配置

  -可以关闭ADC模块,以便降低功耗

  XC866的AD转换器框图

  AD转换初始化解说

  AD转换器初始化程序:

  -SFR_PAGE(_ad0, noSST); // switch to page 0

  -ADC_GLOBCTR = 0x70; // f32,8位宽度

  -ADC_PRAR = 0x94; // 设定仲裁方式和优先

  - SFR_PAGE(_ad1, noSST); // switch to page 1

  -ADC_QMR0 = 0x00; // ADC模式,禁止外部触发

  -ADC_CRMR1 = 0x01; // ADC模式,开启请求源

  -SFR_PAGE(_ad0, noSST); // switch to page 0

  -ADC_GLOBCTR |= 0x80; // 开启模拟部分

  - XC866的ADC使用SFR的7个页面,每个页面占用地址CAH~CFH和D2H,D3H。随页不同具有不同的内容,用D1H作为分页寄存器,确定使用那个页。GLOBCTR和PRAR在0页,QMR0和CRMR1在6页。

  可编程序计数器阵列PCA和捕获比较单元CCU

  增强的定时器/计数器模块,或者多个模块组合,称为PCA/CCU

  - 定时器时钟可选择:另一个定时器溢出或者固定分频器输出

  -可选择捕获/比较/重装/PWM输出等多种功能

  - 多个捕获/比较/重装数据寄存器组成多路PWM输出

  - 捕获/溢出/匹配均可产生中断

  - 单独的重装载寄存器可以设定PWM的周期

  XC866的捕获比较单元CCU6

  捕获/比较单元6(CCU6)中有两个独立的定时器(T12,T13)、可被用来产生脉宽调制(PWM)信号,尤其适用于控制交流电机的应用场合。CCU6 也支持一些用于块切换和多相电机的专用控制模式。

  定时器T12 的3 路通道可工作在捕获和/或比较模式。定时器T13 只能工作在比较模式。

  多通道控制单元产生的输出序列可由T12 和/或T13 调制。调制源可选择并组合使用。

  定时器T12,T13 特性:

  -定时器T12 特性:

  1. 3 路捕获/比较通道,每路可用作捕获或比较通道

  2. 支持产生三相PWM(6 路输出,每路信号对应上桥臂或下桥臂开关)

  3. 16 位精度,最大计数频率 = 外设时钟频率

  4. 单通道死区时间控制 ,避免功率级短路

  5. 同步刷新T12/T13 寄存器

  6. 产生中间对齐和边缘对齐PWM

  -定时器T13 特性:

  1. 单一比较通道,单输出

  2. 16 位精度,最大计数频率 = 外设时钟频率

  3. 可与T12 同步

  三相马达PWM生成简单介绍

  三相不同的脉宽值需实时写入CCU6i的映射寄存器CCU6iSR

  U,V,W三相输出通过CCU6i和COUT6i引脚配对输出,极性相反

  各种设置:时钟选择,预分频选择,死区时间,输出脚配置,以及多种模式选择,在此略讲。

  三相马达SPWM信号原理

  三角波称为“载波”,正弦波称为“调制波”。A,B,C三相相位差120度,他们的SPWM波形参数表其实也是相同的,但是也是差120度。

  SPWM波形参数表实际就是每个三角波周期内相应的脉冲宽度

  三相马达/无刷电机控制举例

  单片机CCU6输出的U+/U-;V+/V -和W+/W-经驱动后连接到IGBT。

  实时改变周期和脉宽,可以达到变频目的,以及调整输出功率,从而控制马达转速。

  工程师们对于XC866的使用问答:

  (1)XC866 应该选择哪种IDE

  A:“Miniwigger+KEIL V3破解版

  keil for c51 v8

  infineon dave v2.1

  infineon memtool v4.01.05

  fload 下载器”

  (2)想用Proteus仿真英飞凌的XC866,可是元件库里没有,该怎么办?

  A:“由于Proteus的元件库里没有英飞凌的MCU,自己制作比较困难,如果是其他常用器件,找一个相近的替换一下。可以采用miniwager, 是英飞凌自家的仿真器,也可以用南京伟福的Multi-Infineon仿真器。 ”

  (3)英飞凌XC866中SCLK时钟问题

  Q:在DAVE中SSC都已经设置好了,但在keil中编完程序进行仿真时发现SCLK始终为0,XC866不是SSC设置好就能产生时钟信号吗?

  A:“自带的SPI外设,发数据的时候才会有时钟输出。”

  (4)XC866 mbc 电平 ocds模式求助

  Q: xc866开发板。使用ulink通过ocds接口调试,书上说:如果(MBC,TMS,P0.0)= (0,1,1),将进入OCDS 模式进行程序代码的调试。首先初始化OCDS,接下来跳转到程序存储器的地址0000H 处,执行Flash 或ROM存储器中的用户代码,开始进行调试。在OCDS 模式下,内部数据存储器的低64 字节(地址00H- 3FH)可选择映射为64 字节的监控RAM或内部数据RAM。

  为什么用ulink调试时,mbc引脚为始终高电平啊,跟书上说的不一样啊。用万用表看的,难道是mbc瞬间置低电平后进入ocds模式,然后又置高。

  用xc800_fload烧写程序时,必须将mbc引脚专门给接到地,要不不能烧写。

  A1:“(MBC,TMS,P0.0)= (0,1,1) 指的是芯片复位后这些脚的电平,xc866在复位后会自动检测这三个脚的电平决定芯片进入下载模式、JTAG模式,还是运行程序。对于你的问题

  1。  OCDS模式:你的理解可能是对的,因为MBC, TMS, P0.0都会连到Ulink, 所以我猜实际流程是这样的,Ulink先将MBC, TMS, P0.0设置为0,1,1. 然后复位芯片(Ulink 拉低Reset),释放复位芯片,这时候芯片就进入 OCDS模式了。

  2。 如果MBC = 0. TMS = 0,则芯片复位后进入BSL 模式,进行串口下载(通过FLoad)”

  A2:也就说,在ulink连接下,keil软件界面点击debug按钮后,ulink首先让芯片复位,然后设定MBC, TMS, P0.0为(0,1,1)让芯片进入ocds模式。进入模式后,则MBC, TMS, P0.0的设定则恢复的正常模式。这样的话,比如在断点调试时,人为的按下reset键后,芯片可以进入正常运行模式,程序在正常运行,而不是又进入ocds模式。

  而fload模式,从电路上看,mbc只能被ulink的ocds信号控制,所以需要人工的加低电平,并且烧完程序后,程序是不能运行。

  XC86相关资料下载

  1、基于XC866的步进电机阀门控制系统

  2、基于XC866的PWM直流无刷电机的正弦波控制

  3、XC866系列微控制器设计的电动自行车控制器技术

最新文章

  1. ChannelHandler
  2. Spring里PropertyPlaceholderConfigurer类的使用
  3. Google 面试
  4. c# 正则表达式 匹配回车
  5. CPU虚拟化技术(留坑)
  6. JQ 获取单选按钮选中的值
  7. 4. 星际争霸之php设计模式--工厂方法模式
  8. SSRS和SSAS是支持VB的
  9. Servlet中字节字符流的输出
  10. NodeJS会是昙花一现吗?
  11. canvas绘制百分比圆环进度条
  12. bash构造tmux显示tmux ssh状态
  13. 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
  14. Lifting the Stone(求多边形的重心—)
  15. Node笔记二
  16. 2.5、CDH 搭建Hadoop在安装(设置Cloudera Manager数据库)
  17. ReentrantLock和AQS
  18. 【多线程】java多线程实现生产者消费者模式
  19. 下载Sourceforge等国内无法下载站点文件的另一种方法
  20. HA 高可用mysql集群

热门文章

  1. Inno Setup入门(十二)——Pascal脚本(1)
  2. postfix防垃圾邮件
  3. git conflict
  4. List<T>转换为ObservableCollection<T>
  5. 转 dos 下的 find 和 重定向
  6. Windows 常用消息及含义
  7. iOS 判断数组不为空
  8. webview h5页面 关闭
  9. 视频录制SurfaceView
  10. AI 人工智能 探索 (四)