1、温升速率:小于6℃/秒
2、预热区芯片引脚的最大温度:125℃
3、回流焊的最大温度:建议215℃到220℃(最大值为235℃) 4、芯片通过液态焊料温度状态的时间:30至85秒(建议75秒) 5、最大冷却速率:4℃/秒
如果使用手工焊接,也应注意电烙铁的温度不易过高,与芯片的接触时间不易过长; 关于焊接的详细资料参见附页<<超小型芯片(SMT)焊接指南:QFP和MLP封装器件。
九、编写软件方面的注意事项
1、如使用C51编程,在使用指针变量(对FLASH进行写操作)按如下方式定义: unsigned char xdata *idata(或data) pwrite;
这样做的目的是确保写FLASH的指针的地址被分配在或
基于C8051F060单片机的DMA技术
作者:武汉理工大学自动化学院 唐穗欣 一、引言
由于在C8051F060单片机中采用了双16位模数转换器(ADC),采集速度较之前面产品有了大幅度提高,CPU既要控制ADC信号采集,又要队ADC的转换数据进行存储控制。这样一来,CPU对于实时采集的信号不能加以迅速处理,甚至发生在数据缓冲器里数据重叠并丢失的现象,造成整个系统的性能下降,因而,采取了DMA存储技术,以缓解CPU的工作压力。
二、 C8051F060简介
C8051F060(简称060)是美国德州Cygnal公司推出的一种混合信号SOC型8位单片机,它属于C8051F系列中的F06x子系列,其性价比在目前应用领域极具竞争力。其模拟外设包括:两个由DMA控制的16位1Msps 的ADC、一个10位逐次逼近型(SAR)ADC,可多达8个外部输入,可编程为单端输入或差分输入、两个12位DAC、内部高精度基准电源、一个温度传感器、三个模拟比较器以及精确的VDD监视器和欠压检测器。数字外设包括:8个8位的I/O端口、五个16位定时/计数器、两个可同时使用硬件SMBus(I2C兼容)、SPI及两个增强型UART串口、可编程的16位计数器/定时器阵列(PCA)、六个捕捉/比较模块、专用的看门狗定时器。此外,高速8051位控制器内核,流水线式指令结构使其速度可达25MIPS,存储器部分为片内4352字节数据RAM和64KB Flash程序存储器可作非易失性存储,此外外部可扩展64KB数据存储器接口。
三、C8051F060中的DMA介绍 1、DMA原理
DMA是一种新型的存储技术,在DMA传送方式下,数据的传送不经过CPU,由DMA控制器来实现内存和外设,外设和外设之间的直接快速传送。它多用于需要高速大批量数据传送的系统中,以提高数据的吞吐率。但是,DMA传送方式的优点是以增加系统硬件的复杂性和成本为代价的。
2、DMA接口技术
C8051F060单片机中的DMA是配合着两个模数转换器ADC0 和ADC1 来使用,它把ADC0和ADC1转换结果直接存到XRAM的一个专门的区域。DMA接口是由特殊功能寄存器(SFR)来配置使用的。在DMA中,有一个指令缓冲器,可编入多达64条DMA指令来对DMA 产生一连串的操作。这个指令缓冲器可有DMA控制逻辑来访问。这些DMA指令会告诉DMA控制逻辑将要存储那一个ADC的转换结果。值得注意的是,在开始DMA接口前,务必把ADC的参考电压、逐次比较的时钟频率要设置好。
3、如何向指令缓冲器写指令
指令缓冲器是一个64字节的存储区域,能够写一些指令在里面,这些指令就成为DMA指令。如何向其中写指令是由特殊功能寄存器DMA0IPT和DMA0IDT控制。DMA0IPT寄存器控制的是地址,DMA0IDT控制的是数据,当在DMA0IDT区中读出或写入一条指令时,DMA0IPT寄存器指针将自动指向下一个指令区域。
4、数据存储的选择
DMA要存储的数据来自于AD转换的结果,分为ADC0的转换结果、ADC1的转换结果以及它们转换结果的差分输出。如何设定请见下列宏定义中所示: #define DMA0_END_OF_OP 0x00 // 不存储
#define DMA0_END_OF_OP_C 0x80 // 不存储并继续转换
#define DMA0_GET_ADC0 0x10 // 存储ADC0的转换结果
#define DMA0_GET_ADC1 0x20 // 存储ADC1的转换结果
#define DMA0_GET_ADC01 0x30 // 存储ADC0 和ADC1的结果
#define DMA0_GET_DIFF 0x40 // 存储差分输出结果
#define DMA0_GET_DIFF1 0x60 // 存储差分输出和ADC1结果
5、数据存储器的编址与设置
DMA接口可设置为即可以访问内部数据存储器也可以访问外部存储器。但是,只有CPU不使用片内数据存储器时,DMA才可以对片内存储器进行访问,这样就保证了DMA和CPU在时序上不会冲突。
片外数据存储器的访问权由DMA0CF寄存器中的DMA0HLT为控制。当DMA0HLT=0时,片外数据存储器完全由DMA访问;当DMA0HLT=1时,CPU访问片外数据存储器。当DMA和CPU都要求访问片外数据存储器时,DMA0HLT位由软件控制置‘1’或置‘0'。软件应检查DMA0XBY位,它为‘0'时,DMA没有在访问片外数据存储器,为‘1'时,表明DMA正在访问片外数据存储器。当DMA0HLT=‘0'时,CPU不能访问外部数据存储器。这时,CPU好像仍然继续访问片外数据存储器,但是,数据却不能从片外数据存储器读出或写入。当CPU访问完片外数据存储器后,要把DMA0HLT设为‘0',以便DMA接口能访问外部数据存储器。DMA控制逻辑将总是等到DMA0HLT=‘0'时,才存数据到片外数据存储器。如果在新的数据到来时DMA接口上的数据还没有被写入片外数据寄存器,那么,新来的数据将丢失。
DMA将数据写在片外数据存储器的哪个地方是由数据地址指针寄存器DMA0DSH和DMA0DSL来决定,DMA0DSH和DMA0DSL组成16位地址。在写数据之前,DMA0DSH和DMA0DSL被初始化为DMA0DAH和DMA0DAL。当写入一个数据后,数据地址寄存器将自动加‘1'。
6、中断源
DMA有多个中断源,并且一些中断源在需要时可单独使用,DMA控制寄存器(DMA0CN)和配置寄存器(DMA0CF)包含了DMA的中断位。DMA中断如下表所示:
四、DMA寄存器
1、 DMA控制寄存器(DMA0CN)
MSB LSB DMA0EN:DMA允许位
当写数据时:0:禁用DMA 1:启动DMA 当读数据时:0:DMA口是空闲的 1:正在使用 DMA0INT:DMA操作完成标志位
0:DMA还没有完成所有操作 1:DMA完成所有操作 DMA0MD:DMA模式选择位 0:模式0 1:模式1 DMA0DE1:ADC1数据溢出错误标志位
0:数据未溢出 1:数据溢出,ADC1的转换结果丢失,软件清此位 DMA0DE0:ADC0数据溢出错误标志位
0:数据未溢出 1:数据溢出,ADC0的转换结果丢失,软件清此位 DMA0DOE:数据溢出警告中断使能位
0:禁止数据溢出警告中断 1:允许数据溢出警告中断 DMA0DO1:ADC1数据溢出警告标志位
0:ADC1没有数据溢出警告 1:ADC1有数据溢出警告,软件置0
DMA0DO0:ADC0数据溢出警告标志位
0:ADC0没有数据溢出警告 1:ADC0有数据溢出警告,软件置0 2、DMA配置寄存器(DMA0CF)
MSB LSB DMA0HLT:阻止DMA访问片外数据存储器
0:DMA已经完成对片外数据存储器的访问 1:CPU已经完成对片外数据存储器的访问
DMA0XBY:片外数据寄存器忙标志
0:DMA没有正在使用片外数据存储器 1:DMA0正在访问片外数据存储器 位5-4:保留,置0
DMA0CIE:指令计数器溢出中断允许位
0:禁止指令计数器溢出中断 1:允许指令计数器溢出中断 DMA0CI:指令计数器溢出标志位
0:指令计数器还未溢出 1:指令计数器已经溢出,软件清0 DMA0EOE:操作结束中断使能位
0:禁止操作结束中断 1:允许操作结束中断 DMA0EO:操作结束标志位
0:操作结束指令还未收到 1:操作结束指令已经收到,软件清0此位 3、DMA指令写数据寄存器(DMA0IDT) MSB LSB CCNV:连续转换位
0:禁止连续转换位 1:允许连续转换,指令计数器忽略,转换继续 DIFFSEL:等差分输出数据位
0:不收集差分输出数据 1:等待差分输出数据并储存至片外数据存储器 ADC1EN:等ADC1的数据
0:不收集ADC1数据 1:等待ADC1数据并储存至片外数据存储器 ADC0EN:等ADC0的数据
0:不收集ADC0数据 1:等待ADC0数据并储存至片外数据存储器 位3-0:保留 ,置0 五:软件编程 1、DMA初始化程序
void DMA0_Init (unsigned int XRAM_START_ADD,unsigned int NUM_SAMPLES) {
char old_SFRPAGE = SFRPAGE; //储存当前寄存器页
SFRPAGE = DMA0_PAGE;
相关推荐: