微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > dsPIC30F6010单片机的原理及应用

dsPIC30F6010单片机的原理及应用

时间:11-06 来源:互联网 点击:
2.3 程序存储器结构

图3所示的程序存储器映射图分为两部分:用户程序空间和用户配置空间。用户程序空间包括复位矢量、中断矢量表、程序存储器和数据EEPROM存储器;配置空间包括一些设备配置寄存器以及器件的ID位等。PC指针最低位恒为“0”,增量为2。

访问4M×24位程序存储器的方法有三种,第一种是通过23位PC指针;第二种是通过特殊的表格读/写指令(TBLRDL、TBLWTL、TBLRDH和TBLWTH),第三种是通过PSV操作模式(程序空间可见)把16k字程序空间页面映射到数据存储器地址空间的高32kB。

dsPIC30F6010的外围模块比PIC丰富许多。首先,通信模式增加了CAN模块接口,其它通信模块的数量也增加了,因而可适应大系统的设计需求。其次,dsPIC30F6010有5个16位timer模块,其中TMR2和TMR3、TMR4和TMR5可以分别组合成32位定时器,程序员可以选择多种工作方式,例如16位/32位定时器、32位同步计时器、门控等模式。此外,dsPIC30F6010还增加了电机控制PWM模块以及积分编码模块。

3 指令特点

dsPIC30F系列单片机在增加了DSP功能后,其指令也只有84条,因此,和其它DSP相比,可大大简化编程难度。dsPIC30F6010在指令上的主要特点有:

(1)dsPIC30F6010的指令格式有别于PIC单片机,它的格式为: 操作符 源操作数 目的操作数,此外还增加了许多三操作数指令;

(2)dsPIC30F6010为16位CPU,因而在指令操作上有字操作和字节操作两种模式,可实现8位和16位操作;

(3)dsPIC30F6010除了保留有PIC单片机的大部分指令功能外,还增加了许多传送、数学运算、逻辑运算指令;相比PIC单片机,它的最大优点是增加了乘除法指令,因而可大大减少编程难度并优化程序。为了适应字操作,相应增加了减2、加2等指令;

(4)增加了相应的DSP功能指令,如DSP指令、程序流指令等;

(5)由于有多种堆栈形式,因而也就增加了不同形式的堆栈指令。

4 编程示例

dsPIC30F6010可支持C编译、汇编以及混合编译等多种模式,用户可根据自身能力选择不同的编程方式。

4.1 C编译

dsPIC30F6010的编程模式基本上和C语言及其它单片机或DSP的C编译相似,下面以A/D采样为例给出其编程应用,设计时需要注意的是:

(1)寄存器必须大写;

(2) 直接对某些位进行操作时,可在该寄存器后加bits,如ADCON1bits.ADON=1;

(3) 牢记先定义后使用的原则,调用的数学函数必须由编译软件库函数所支持。

int main (void) ? ;主程序

{ portinitial();



adinitial();

ADCON1bits.ADON=1;

ADCON1bits.SAMP=1;

delay();

ADCON1bits.SAMP=0;

… … … …

}

void portinitial()? ;初始化I/O口

{

TRISE=0x0000;

PORTE=0x0000;

}

void adinitial()? ;AD初始化子程序

{ ADCON1=0x2208;

ADCON2=0x0000;

ADCON3=0x0000;?

ADCHS=0x0000;

ADCSSL=0x0000;

ADPCFG=0x0000;

IFS0bits.ADIF=0;

IEC0bits.ADIE=1;

}

void delay() ?;延时子程序

{

for (j=1000;--j;) continue?

}

4.2 混编技术

在C语言中调用汇编语言时,只要在C汇编中定义一个extern型变量或函数并在其前面加一前缀( )即可。如在C程序中:

… … … …

extern void modulo(unsigned int *, unsigned int *, unsigned int);声明函数类型

… … … …

int main (void)

{… … … …

modulo( array1, array2, PRODLEN-1);在C程序中调用

… … … …

}

在汇编中调用:

.global_modulo ;定义全局变量

_modulo:

… … … …

.end

5 结束语

在某些应用场合,综合了16位单片机和DSP功能的dsPIC30F器件要大大优于32位单片机,而且可降低成本,同时,C代码效率也降低了对存储器的需求,从而缓解了16位单片机和低端数字信号处理器DSP存在的性能差。由于它本身的DSP功能大大提高了运算和响应能力,因而提高了系统的实时性,可完全适应现代工业控制技术发展的要求。丰富的外围模块以及I/O设备,必然使得dsPIC30F在未来的DSP市场中占有重要地位。目前,该产品已经开始在电机控制、网络连接、语音和音响、电源变换和监视、传感器控制、汽车控制等领域中开发应用。可以预见,随着dsPIC30F系列产品的不断开发和完善,以及开发工具、开发软件的不断丰富,dsPIC30F必将得到广大用户的青睐。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top