` 新华龙 电子C8051F系列单片机技术问答?
问:内部时钟振荡器是否稳定 ?是否可以用于产生波特率的时基?
答:不同器件的内部时钟振荡器的精度是不同的 (±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(<1%温度变化范围-40℃~+85℃)。由于不同器件内部振荡器的离散性较大,所以不能用于产生波特率,应该外接标准晶体 。而有些器件,如C8051F3xx/f12x/f04x/f06x内部振荡器精度为±2%,可用于产生波特率。
问:片内 /外振荡器如何配置?
答:正确步骤:
1、允许外部振荡器;
2、等待1ms;
3、查询XTLVLD '0'->'1'
4、切换到外部振荡器。
注意:振荡器频率的选择,即 OSCXCN寄存器的配置(外部振荡器频率控制位的设置)。关于更多的信息以及源代码可以参看应用笔记AN002《配置内部和外部振荡器》。应用笔记可以从新华龙电子网站下载:www点xhl点com点cn
问: C8051F MCU的指令执行速度为多少?
答: C8051F MCU的CIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051F MCU执行一个单周期指令只需要一个系统时钟周期。如果系统时钟频率为25MHz,执行一个单周期指令所需时间为40ns。
问:切换外部晶振时应注意哪些问题 ?
答:首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将系统时钟源切换到外部振荡器上,否则会出现切换不过去,系统死机的情况。
问:使用外部晶振应注意哪些问题 ?
答: 1、所有的模拟和数字电源引脚都应接电源(2.7~3.6V);
2、C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“www点xhl点com点cn”—“原理图/PCB库”中有C8051F系列单片机的典型接线图);
3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。
问:系统时钟切换到外部时钟后,内部的时钟是否应关闭 ?
答:可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。
问:系统时钟可不可以在程序中随时切换 ?
答:可以,但是由内部再一次切换到外部时应按照技术问答 2所介绍的步骤进行切换。
问:使用外部晶振时如何配置芯片的引脚 ?
答:对于芯片上有固定晶振引脚的设备 (例如C8051F02X);相应时钟输入引脚按选择的晶振模式自动分配引脚;
对于晶振引脚与 GPIO共用的芯片(例如C8051F30X);晶振引脚要按下述方式进行设置:
(1).外接晶体体时;XTAL1与XTAL2都要配置为模拟输入
(2).外接振荡电路为“RC”或“C”方式时,XTAL2引脚要配置为模拟输入
(3).外接CMOS时钟电路时,XTAL2引脚要配置为数字输入
(4).以上几种方式在引脚的配置中都要使用跳过功能将此引脚跳过
问: C8051F系列单片机有几种电源管理模式?是否可以在低功耗中应用?在低功耗应用时应该怎么做?
答: C8051F系列单片机有两种电源管理模式,空闲(IDLE)和停止(STOP)。在IDLE模式CPU停止,而振荡器和所有的数字和模拟外设可以处于激活状态。IDLE模式可由复位或一个中断请求来结束。在STOP模式,停止振荡器、CPU和所有的外设。STOP模式只能通过复位结束。
IDLE和STOP提供了一种低功耗备用模式。此外,振荡器的控制也能用于提供一种低功耗工作模式。
实现方法为:你可以在 XTAL引脚接一个低频音叉晶体(32.768kHz)。当你的系统需要高速运行时,可以选择内部振荡器作为时钟源(2、4、8、16或25MHz(仅限F3xx)),接着将系统时钟切换到外部进入低功耗模式。
请参考应用笔记: AN016“电源管理技术及计算”。该应用笔记可以从我公司网站下载www点xhl点com点cn
问:外接晶振的最高频率是多少 ?
答:外接晶振的最高频率是 30MHz;
模数转换
问:从上电 (或退出掉电模式)到ADC稳定开始转换需要多长时间?
答:模拟建立时间也就是等待参考电平稳定的时间。它取决于接在 VREF引脚的电容容量。此电容越大VREF的噪音就越小,ADC转换结果的噪音也就越小。如果用4.7μF电容,则稳定时间大约为2ms,如果无旁路电容(不推荐),稳定时间大约为10μS。
注意:在开始转化之前,需要一个 1.5μS的跟踪时间,这也就决定了ADC多路转换开关(MUX)的切换速度。
问: ADC的最大输入电压及输入阻抗?
答: ADC的最大输入电压为VREF,它的输入电压范围是0V-AV+/VDD。
输入电容为 10pF;输入阻抗等价于一个5kΩ电阻和一个10pF电容的串联。
请参考应用笔记 AN019“计算开关电容ADC的建立时间”。
问: ADC可编程窗口检测器有什么用途?
答: ADC可编程窗口检测器在很多应用中非常有用。它不停地将ADC输出与用户编程的限制量进行比较,并在检查到越限条件时通知系统控制器,这在中断驱动的系统中尤其有效,既可以节省代码空间和CPU带宽又能提供快速响应的时间。
问:为了使 ADC或DAC具有更好的性能,是否应在VREF 引脚接电容?
答:推荐在 VREF引脚接一个0.1μF的陶瓷电容器与一个大的电容(典型为4.7μF钽电容)。在VREF引脚加电容是为了降低VREF的噪声。因为VREF的噪声越小,ADC或DAC转换结果的噪声也就越小。且这两个电容在PCB板上应尽可能离VREF引脚近。
问:内部参考电平是否可以用于外部电路的参考 ?
答:可以,你可以用 VREF信号作为输出驱动其它电路(像放大器的偏置电压等)。注意,VREF引脚只能提供源电流,也就是说,要有负载接地使电流流出C8051器件。例如,如果你将VREF连到OP运放的(+)节点,你要加一个下拉电阻对地(24K左右)将电流限制在100μA。
问:如果测试的模拟输入电压范围是 0-5V怎么办?
答:因为模拟输入 (AINx)引脚不能承受5V电压,任何引脚在任何情况下(不管ADC或PGA的设置如何)必须使其输入 电压保持在AGND和AV+之间,这是为了避免沉(或源)电流通过ESD保护装置。为了测试0-5V范围的信号,必须使信号衰减(衰减到AV+以下)才能进入到ADC输入。当使用外部VREF时,要求VREF的最大值比AV+小300mV。
问: F02x器件内部有PGA(可编程增益放大器)可以对输入模拟信号进行放大。其中的一个放大倍数为0.5 倍。是否意味着我可以外接+6V的模拟输入电压,经过0.5倍的放大变成3V输入到AINx呢?
答:请注意:任何模拟引脚 (数据IO口和VDD引脚除外)的最大输入电压为-0.3V到 VDD+0.3V。如果超出此范围可能造成器件永久损坏。
在单端输入方式,有两个限制因素如下:
1、AIN输入电压必须在AGND和AV+之间以避免吸/源电流流过ESD保护器件。
2、AIN电压必须在AGND和(VREF / GAIN) 之间。假设一个12位的ADC,AINx 引脚的输入电压小于AGND,结果将是0x000;如果输入电压大于(VREF / GAIN) ,结果将是0xFFF。
例如,使用外部 1.25V参考,PGA增益为0.5,允许的电压输入范围是0V到 (1.25V / 0.5 = 2.5V)。
问:如何提高系统的 ADC的性能?
答:第一、将模拟电源和数字电源分开,可以使用比较简单的方法,如在模拟电源和数字电源之间加简单的滤波。
第二、将模拟地和数字地分开,并在电源附近通过磁珠连接。
第三、制板时,大面积覆铜。
第四、未使用到的模拟引脚要接地。
第五、为了确保参考电压的稳定,参考电压引脚一定要接去耦电容。
第六、模拟信号的输入电压范围是 0-VDD,如果模拟输入的外围有可能侵入高电压(超过芯片的极限允许范围),就要采取保护措施(如加两个肖特级二极管)。如果模拟输入会有瞬间过电流,也要加限流保护。
问:如果使用内部参考源, C8051F020/F021的参考电压引脚如何连接?
答: C8051F020/F022共有4个参考电压引脚,VREF,VREF0,VRFE1和VREFD。允许ADC和DAC使用一个外部电压基准或片内电压基准。通过配置VREF0CF基准电压控制寄存器,ADC0还可以使用DAC0的输出作为内部基准,ADC1也可以使用模拟电源作为电压基准。内部基准电压必须通过VREF引脚连接到芯片内部。所以当您的系统中使用到内部基准电压时,必须确保VREF与VREF0,VREF1,VREFD(全部或部分)引脚的连接。
C8051F021/F023共有两个参考电压引脚,VREFA和VREF。如果ADC0和ADC1使用内部参考源,必须将VREFA与VREF引脚连接。
注意:如果使用 ADC或DAC,则不管电压基准取自片内还是片外,REF0CN寄存器中的BIASE位必须被置为逻辑1。
问:为什么在进行 A/D转换时测得的数据跳变很大?
答:当输入信号有干扰脉冲、 ADC的转换时间太短、在通道切换后通道还没有稳定就开始转换等原因都会导致转换后的数据跳变大,请仔细检查以上三点并做相应的处理就可以解决此类问题。
问:在进行 A/D转换时所测得的数据与计算所得的数据相差很大,但跳变不大,为什么?
答: 1、计算时所用的基准电压是多少,如果用的是内部基准,把内部基准电压通过交叉开关分配到芯片引脚上,再进行测量;
2、换别的通道转换看是否正常。
问: ADC的单端输入与差分输入的区别?
答答:在单端方式工作时 ;ADC转换的是单输入引脚对地的电压值;在增益为1时,测量的值就是输入的电压值;范围是0V到VREF;当增益增加时,输入的范围要相应的减小;
在差分方式工作时 ;ADC转换的是AIN+与AIN-两个引脚的差值;在增益为1时,测量的值等于(AIN+)-(AIN-),范围是-VREF到+VREF;当增益增加时,输入的范围要相应的减小。
注意:在差分方式时所提的负压是指 AIN-引脚的电压大于AIN+引脚的电压,实际输入到两个引脚的电压对地都必需是正的;例如:如果AIN+引脚输入的电压为0V,AIN-引脚的输入电压为1/2VREF时,差分的输入电压为(0V-1/2VREF) = -1/2VREF。端口
问: C8051F020的ALE引脚是否象传统51那样上电工作后一直有脉冲输出呢?
答:外部存储器接口 (EMIF)信号(ALE,/RD,/WR,地址和数据线) 只有在执行对片外的SRAM的操作指令MOVX时才被激活。在其他时刻,这些信号的状态是由相对应的端口锁存器的内容支配。
问:用程序代码写 Flash的注意事项有那些?
答:下面以 C8051F020为例进行说明
第一步、禁止中断
第二步、置位 FLWE(FLSCL.0),以允许由用户软件写/擦除FLASH
第三步、置位 PSEE(PSCTL.1),以允许FLASH扇区擦除
第四步、置位 PSWE(PSCTL.0),以允许FLASH写
第五步、用 MOVX指令向待擦除扇区内的任何一个地址写入一个数据字节
第六步、清除 PSEE以禁止FLASH扇区擦除
第七步、用 MOVX指令向刚擦除的扇区中所希望的地址写入数据字节。重复该步直到所有字节都已写入(目标扇区内)
第八步、清除 PSWE以禁止FLASH写,使MOVX操作指向XRAM数据空间
第九步、重新允许中断
另外还要特别注意:第一,将 VDD Monitor使能是至关重要的,因为这样会防止在电源电压低于2.7V时代码对FLASH进行操作。第二,在调试时,不可以在代码对FLASH进行操作的程序段设置断点、单步、运行到光标等。
具体的例子代码,您可以参考应用笔记 AN029 《从应用代码写FLASH 》,应用笔记可以从新华龙公司网站www点xhl点com点cn下载。
问:片内扩展的 SRAM如何访问和如何寻址?
答:以 C8051F005为例,片内2K SRAM,其地址空间为0x0000-0x07ff。可以用MOVX指令访问,
如: MOV DPTR,#0000H;OPTR指向SRAM地址
MOVX A@DPTR 读字节到A
另外,对于任何寻址方式, 16位外部数字存贮器的地址的高5位是被“忽略”的。因此这2K的片内SRAM以取模的方式映射到整个64K外部数据存贮器地址范围。例如,位于地址0x0000,0x0800,0x1000,0x1800,0x2000等地址的数据是一样的。在进行循环连续存贮器填充时这是一个很有用的特性。因为到达SRAM的边界时不必对地址指针复位。
问:如何对程序代码加密 (或如何写FLASH程序存储器安全字节)?
答:程序存储器安全字节的地址: 64K_0xFDFE和0xFDFF;32K_0x7DFE和0x7DFF;16K_0x3DFE和0x3DFF;8K_0x1DFE和0x1DFF。
您可在你原有的 IDE工程里面追加一个汇编文件,一起编译连接下载;以8K Flash芯片为例,汇编文件内容如下:
org 1dfeh
nop
nop
end
或用更改 hex格式文件的形式将0x1dfe和0x1dff写入00,此方法适用于批量生产,直接下载hex格式文件。以32K为例:在hex文件倒数第一行与倒数第二行之间插入一个记录: 027DFE00000083 *
注:为 hex文件的记录开始符,
02 是要写入的字节数
7DFE 为写入地址的首地址
00 为写入的数据的类型(00为数据;01为hex文件结束标志)
0000 是写入的两个数据
83 是校验和(将它的值与记录中所有字节相加,其结果为0)
定时器
问:定时器的计时时钟的最大频率是多少 ?
答:在定时器 (C/Tn = ‘0’)方式,为SYSCLK或SYSCLK/12,这取决于CKCON寄存器的相关位的状态。
在计数器 (C/Tn = ‘1’)方式,定时器的增加取决与外部引脚电平由高到低的跳变。在此方式,最大频率允许为SYSCLK /4,外部输入信号必须维持至少2个系统时钟周期的高电平,才能确保电平被采样。
问: C8051F02x的PCA模块的最大输出频率是多少?
答: PCA模块的频率输出模式,当PCA的时钟频率为系统时钟,而系统时钟频率为25MH时,产生的方波频率最大值为12.5MHz。计算公式为:fCEXn=fPCA/2×PCA0CPHn
串行口
问: SPI总线能够实现2MHz的传输速度吗?
答:以 C8051F000为例,在主模式时最高为SYSCLK/2,或在从模式时为SYSCLK/10。为了达到2MHz位的速度,需要将系统始终设置为2MHz×10 即20MHz(从模式)或 2MHz×2 即 4MHZ(主模式)。
问: C8051F02x芯片,除去本身有的两个硬件串行口(UART0和UART1),动用芯片的一切资源,总共可以实现几个串行口(包括软件和硬件)?
答: 6个串行口(硬件串口波特率最高可达1.152Mbps/18.432MHZ晶体,软件串口波特率可达57.6K6bps)软件UART实现全双工操作最多可达4个(占用4个PCA,2个定时器)。
软件 UART的实现方法请参考应用笔记AN015“软件UART示例”。该应用笔记可以从新华龙公司的网站下载。
问:在调试 UART程序时,为什么在IDE中查看不到SBUF0的值?那么如何察看接收和发送是否正确?
答: UART发送寄存器和UART接收锁存器共用一个SFR地址,但是占用不同的物理存储区域。请参看器件的数据手册的UART框图部分。
读 SBUF将返回接收数据锁存器的内容。写SBUF将写发送移位寄存器的内容。在Silabs IDE中写数据到传输 寄存器是不可见的。如果你想确认发送和接收是否正确,你可将UART的TX和RX引脚连在一起来测试发送和接收是否正确。
问: C8051F02x系列有外扩数据RAM接口,可以扩展片外64KXRAM,而片内还有4K的XRAM,那么是否可以作到68K XRAM的数据存取?
答:可以。在 “split”模式,低4K字节存储空间访问片内4K的XRAM。为了读取片外的低4K字节的XRAM,你必须变换访问模式,将模式设置为仅读取片外。你可以在你的应用中切换读取模式实现68K XRAM的访问。
问: F02x芯片有两个UART,我需要两个不同的波特率,UART0为9600,UART1为19200。请问如何配置呢?
答: UART0可以用timer1或Timer2作为波特率源(选择T2CON寄存器RCLK0和TCLK0的状态)。UART1可以用Timer1或Timer4作为波特率源(选择T4CON寄存器RCLK1和TCLK1的状态)。
关于具体的例程可以参看应用笔记 AN022 《 F02x 系列的C例程》,该应用笔记可以从我公司网站上下载。(www点xhl 点com点cn)
问: SPI (SERIAL PERIPHERAL INTERFACE)中的NSS信号作用?
答:从选择 (NSS)信号是一个输入信号,主器件用它来选择处于从方式的SPI器件,在器件为主方式时用于禁止SPI。注意:NSS信号总是作为SPI的输入。当一个器件的SPI工作于主方式时,该器件的NSS信号应为高电平,当NSS被拉低时用于禁止该SPI,该器件应用IO口的输出控制与其相连的SPI的NSS,输出低电平,即外部NSS拉低时,被选为从器件。
问:如何在同一台 PC上使用多个CP210X设备?
答:当 CP210X接到PC后,PC是依靠VIDID 及SERIAL NUMBER来识别设备的;当有两个以上具有相同识别信息的设备连接到PC上时,只有第一个识别出的设备可以正常通信;
为了在应用时使用多个 CP210X器件,可以通过网站上的应用笔记AN144中的CP210XSETIDS.EXE文件修改SERIAL NUMBER实现;
注意:在修改时如无特殊需要请不要修改 VIDID; 因为修改VIDID 后要同时修改驱动程序此器件才可以正常工作;而修改SERIAL NUMBER后不需要修改驱动程序就可以正常工作;
开发工具及调试
问:为什么在 IDE下编译的C代码大于4K时出错,在4K内正常?
答: IDE中所使用的编译和链接文件是Keil公司提供的评估版(有4K代码限制),如果要编译超过4K代码的C程序,必须购买正版Keil并安装好,再把IDE中编译和链接文件的路径指定到Keil中的编译和链接文件所在的位置。
问: IDE下对汇编代码的编译有限制吗?在IDE下最多能设几个断点?
答: IDE环境下对汇编编译时没有代码长度的限制。在调试时最多可以设置4个断点。
问: 1、在IDE下能不能把C8051F系列单片机芯片内的目标代码读出来;2、如果能,读出的代码是否可以再下载到相同型号的另一块单片机芯片?
答: 1、如果芯片没有加密就可以把代码读出来;2、在IDE下不能直接下载目标代码,只能把Hex格式的文件通过U-EC2转换成目标代码后下载到芯片中。
问:在 IDE下打不开寄存器观察窗口,不能设断点,为什么?
答: PC机的系统属性会导致出现这类问题,这时你需要打开“我的电脑”—“文件夹选项”—“查看”中的“隐藏文件”设置为:显示所有文件,同时将“隐藏已知文件类型扩展名”选项取消。
问:在 IDE中如何设置才可以正确的进行硬件调试?
答:在硬件调试前要先正确的设置适配器接口及调试接口,设置步骤如下:
1.打开OPTIONS-CONNECTIN OPTIONS;如果是使用的U-EC2选择RS232 DEBUGER INTERFACE下的端口;如果在端口中已经有虚拟的端口直接选择对应的端口;如果没有对应的端口则选择OTHER COM在弹出的端口中输入对应的端口号(注意:只输入端口的数字号;例如虚拟端中为:COM3;则输入3),如果使用的是U-EC5则选择USB DEBUGER INTERFACE
2.在DEBUG INTERFACE中选择器件对应的接口(例如:F02X选择JTAG接口;F3XX选择C2接口)
问: C8051Fxx系列单片机的开发工具是不是串行适配器(PC机串口和JTAG协议转换适配)相同而目标板不同?
答:开发套件中串行适配器 (核心部件)是通用的,只是目标板不同。只要您购买一套开发套件,就可以开发全系列单片机,只要将集成开发环境软件升级就可以了。为了加快您的开发进程,您只要购买带有相关型号单片机的目标板就可以了。
`
|