×
电源 > 电源硬件技术 > 详情

一种CSR电源控制系统设计与实现

发布时间:2020-11-06 发布时间:
|

引言

实际应用系统往往需要进行高精度的测量,同时还必须进行实时快速控制,提高其开发效率。为此人们常采用高精度A/D芯片加带ISP开发功能的单片机系统来实现。德州仪器(TI)的MSC1210单片机解决了上述问题。它集成了一个增强型8051内核、高达33 MHz的时钟周期、8路24位高精度∑-△A/D转换器、Flash存储器等。

1 微控制器MSC1210的工作原理

微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。微控制器(Microcontroller Unit,即MCU)可从不同方面进行分类:根据数据总线宽度可分为8位、16位和32位机;根据存储器结构可分为Harvard结构和Von Neumann结构;根据内嵌程序存储器的类别可分为OTP、掩膜、EPROM/EEPROM和闪存Flash;根据指令结构又可分为CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。

微控制器MSC1210是TI推出的一种集模拟、数字、闪速存储器于一体的高性能微控制系统。其应用范围十分广泛。使用增强的数字处理内核和高速闪存并带有高性能模拟和外围部件,可以实现优越的系统性能。MSC1210包含闪存、片内SFR、SRAM、闪存、暂存和Boot ROM.其存储器在物理结构上有四个存储空间:片内、片外程序存储器,片内、片外数据存储器。由不同的寻址指令对0000H~FFFFH共64KB的空间进行寻址。由于采用不同的寻址方式,程序段和数据段可以重叠。程序存储器由MCU自动读取,也可使用指令MOVC指定所要读取的程序区,这通常用来查找表格。数据存储区使用指令MOVX进行读取,这条指令提供了多种寻址方式以指定目的地址,对64KB数据存储器进行读取。当片内存储器使能时,片内范围的操作将对片内存储器进行读取,片外范围的操作将通过P0和P2口读取外部存储器。

MSC1210提供了双数据指针(DPTR)加速数据块的移动速度,它能根据外部存储器的速度调节读写速度,在2~9个指令周期之间变化;它还提供给外部存储器16位地址总线(P0和P2)。低位地址通过P0口复用得到,硬件可以控制P0和P2口是作为地址线还是作为通用的I/O.为了更好地提高效率,外围设备也在8051基础上作了改进。如SPI端口就增加了FIFO,使得传输数据有了缓冲区间。32位累加器的使用在处理ADC采样或其它数据源来的多字节数据时将大大减轻CPU的负担,使得24位加法和移位可以在几个指令周期内完成,而无需通过软件用数百个指令周期来完成。

2硬件系统设计

国家"九五"重大科学工程HIRFL-CSR(兰州重离子加速器冷却储存环)电源控制系统的主要功能是通过电源与计算机的通信模块完成与中央控制中心的信息交换,接收远程控制中心的各种监测与遥控命令,并将电源的各种状态信息反馈给控制中心。控制系统通信模块的设计是组建开关电源控制系统的关键,所设计的通信模块与计算机通信,实现了计算机与电源的主从总线1∶N(本系统N=26)通信方式,并且采用了RS232C和RS485双串行通信总线标准接口。

3软件设计

软件设计的开发平台是Keil公司的Keil C7.0. 为了实现对微控制器MSC1210Y5进行命令操作,应用 C1210语言编写的CSR电源控制系统的主要程序代码如下。

void serial_init (void) file://串行口初始化

{

PCON |=0x80;

SCON = 0x52;

TMOD |= 0x20;

file://TH1 = 0xfe;

TH1 = 0xff;

TR1 = 1;

IE=0x80;

ES0 = 1;

CON_TXD=0;

}

void read_cmd(char i_cmd_buf) file://读命令操作

{

··· ···

}

··· ···

void init_I_O(void) file://初始化I/O口

{

P0DDRL= 0x55; file://P0 是输出模式

P0DDRH= 0x55;

P2DDRL= 0xff; file://P2 是输入模式

P2DDRH= 0xff;

P3DDRH= 0x55;

P0=0xff;

P3 |=0xc0;

}

void init_dac_adc(void) file://初始化 DAC 和ADC

{

int decimation=1728;

/* Timer Setup */

CKCON = 0;

USEC= 10;

/* ADC-Vref, SPI and Systimers */PDCON = 0x1b;

PDCON &= 0x14;

SPICON = 0x06;

SPITCON = 0x28;

ACLK = 9;

/* Set up Aux interrupt */

AIE=0x40;

EAI=1 ;

/* Setup ADC */

PDCON &=0x0f7;

ADMUX=0x78;

ADCON0=0x00;

ADCON2=decimation &0xff;

ADCON3=(decimation 》8)&0x07;

ADCON1=0x41;

AI=CLEAR;

SSCON=0x00;

SSCON=0xDB;

}

void dacout (unsigned int val) file://DAC输出

{

Sync = SET;

Sync = CLEAR;

SPIDATA = 0;

SPIDATA = (char)(val》8 & 0x00ff);

SPIDATA = (char)(val & 0x00ff);;

}

serial () interrupt 4 using 2 { file://寄存器组2用于中断

unsigned char c,i;

if (RI) { // 如果接收器产生中断

c = SBUF; file://读数据

RI = 0; file://清除中断请求标志位

if(!(cmd_err==0&&cmd_finish==1&&addr_ok==1)){

switch (c) { file://处理数据

··· ···}

ADCcmd_proc() interrupt 6 using 3 file://ADC命令处理

{

unsigned long sum;

sum = ((unsigned long int)SUMR3 《 24)

+ ((unsigned long int)SUMR2 《 16)

+ ((unsigned long int)SUMR1 《 8)

+ (unsigned long int)SUMR0;

adcsum[adcin_p]=(float)(sum*LSB);

adcin_p++;

adcin_p=adcin_p&7;

AI=CLEAR;

SSCON=0x00;

SSCON=0xDB; file://acc shift enable, accum 16x, right shift 4

}

4 结语

美国TI公司的带24位A/D转换的51内核混合信号处理器MSC1210具有很高的性能、很高的集成度、很大的灵活性。带可编程增益放大的24位A/D转换器可以实现非常高精度的模数转换。经过几个月的运行表明,该电源控制系统工作稳定,较好地完成了系统的实时监控和显示任务。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
无线充电手机使用了什么原理