C8051F系列单片机技术问答

时间:2022-02-05 19:21:33

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 MCUCIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051F MCU执行一个单周期指令只需要一个系统时钟周期。如果系统时钟频率为25MHz,执行一个单周期指令所需时间为40ns

 

问:切换外部晶振时应注意哪些问题?

答:首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将系统时钟源切换到外部振荡器上,否则会出现切换不过去,系统死机的情况。

 

问:使用外部晶振应注意哪些问题?

答:1、所有的模拟和数字电源引脚都应接电源(2.7~3.6V);

2C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“主页”—“原理图/PCB库”中有C8051F系列单片机的典型接线图);

3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。

 

问:系统时钟切换到外部时钟后,内部的时钟是否应关闭?

答:可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。

 

问:系统时钟可不可以在程序中随时切换?

答:可以,但是由内部再一次切换到外部时应按照技术问答2所介绍的步骤进行切换。

 

问:使用外部晶振时如何配置芯片的引脚?

答答:对于芯片上有固定晶振引脚的设备(例如C8051F02X);相应时钟输入引脚按选择的晶振模式自动分配引脚;

对于晶振引脚与GPIO共用的芯片(例如C8051F30X);晶振引脚要按下述方式进行设置:

(1).外接晶体体时;XTAL1XTAL2都要配置为模拟输入

(2).外接振荡电路为“RC”或“C”方式时,XTAL2引脚要配置为模拟输入

(3).外接CMOS时钟电路时,XTAL2引脚要配置为数字输入

(4).以上几种方式在引脚的配置中都要使用跳过功能将此引脚跳过

 

问:外接晶振的最高频率是多少?

答:外接晶振的最高频率是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带宽又能提供快速响应的时间。

问:为了使ADCDAC具有更好的性能,是否应在VREF 引脚接电容?

答:推荐在VREF引脚接一个0.1μF的陶瓷电容器与一个大的电容(典型为4.7μF钽电容)。在VREF引脚加电容是为了降低VREF的噪声。因为VREF的噪声越小,ADCDAC转换结果的噪声也就越小。且这两个电容在PCB板上应尽可能离VREF引脚近。

 

问:内部参考电平是否可以用于外部电路的参考?

答:可以,你可以用VREF信号作为输出驱动其它电路(像放大器的偏置电压等)。注意,VREF引脚只能提供源电流,也就是说,要有负载接地使电流流出C8051器件。例如,如果你将VREF连到OP运放的(+)节点,你要加一个下拉电阻对地(24K左右)将电流限制在100μA

 

问:如果测试的模拟输入电压范围是0-5V怎么办?

答:因为模拟输入(AINx)引脚不能承受5V电压,任何引脚在任何情况下(不管ADCPGA的设置如何)必须使其输入 电压保持在AGNDAV+之间,这是为了避免沉(或源)电流通过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。如果超出此范围可能造成器件永久损坏。

在单端输入方式,有两个限制因素如下:

1AIN输入电压必须在AGNDAV+之间以避免吸/源电流流过ESD保护器件。

2AIN电压必须在AGND(VREF / GAIN) 之间。假设一个12位的ADCAINx 引脚的输入电压小于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个参考电压引脚,VREFVREF0VRFE1VREFD。允许ADCDAC使用一个外部电压基准或片内电压基准。通过配置VREF0CF基准电压控制寄存器,ADC0还可以使用DAC0的输出作为内部基准,ADC1也可以使用模拟电源作为电压基准。内部基准电压必须通过VREF引脚连接到芯片内部。所以当您的系统中使用到内部基准电压时,必须确保VREFVREF0VREF1VREFD(全部或部分)引脚的连接。

C8051F021/F023共有两个参考电压引脚,VREFAVREF。如果ADC0ADC1使用内部参考源,必须将VREFAVREF引脚连接。

注意:如果使用ADCDAC,则不管电压基准取自片内还是片外,REF0CN寄存器中的BIASE位必须被置为逻辑1

 

问:为什么在进行A/D转换时测得的数据跳变很大?

答:当输入信号有干扰脉冲、ADC的转换时间太短、在通道切换后通道还没有稳定就开始转换等原因都会导致转换后的数据跳变大,请仔细检查以上三点并做相应的处理就可以解决此类问题。

 

问:在进行A/D转换时所测得的数据与计算所得的数据相差很大,但跳变不大,为什么?

答:1、计算时所用的基准电压是多少,如果用的是内部基准,把内部基准电压通过交叉开关分配到芯片引脚上,再进行测量;

2、换别的通道转换看是否正常。

 

问:ADC的单端输入与差分输入的区别?

答答:在单端方式工作时;ADC转换的是单输入引脚对地的电压值;在增益为1时,测量的值就是输入的电压值;范围是0VVREF;当增益增加时,输入的范围要相应的减小;

在差分方式工作时;ADC转换的是AIN+AIN-两个引脚的差值;在增益为1时,测量的值等于(AIN+)-(AIN-),范围是-VREF+VREF;当增益增加时,输入的范围要相应的减小。

注意:在差分方式时所提的负压是指AIN-引脚的电压大于AIN+引脚的电压,实际输入到两个引脚的电压对地都必需是正的;例如:如果AIN+引脚输入的电压为0VAIN-引脚的输入电压为1/2VREF时,差分的输入电压为(0V-1/2VREF) = -1/2VREF  

 

   

端口

问:器件IO口的吸收(sink)电流和源(source)电流是多少?

答:IO口的沉电流和拉电流的极限参数为100mA(但是此时已经不能保证端口的正常逻辑关系了)。具体的参数请参考datasheet的端口IO部分的“端口I/O直流电气特性”。

 

问:端口是否要加保护?

答:在端口电流瞬间跳变的情况下,建议加限流电阻进行保护。另外如果端口可能有超过极限电压范围的瞬变电平侵入,也要加瞬态保护。(瞬态保护的通常方式为接入TVS器件)

 

问:C8051F系列单片机的IO口与传统8051单片机相比有什么区别?

答:①C8051F系列单片机的IO口全部为三态双向口(而传统8051单片机P1P2P3口为准双向口),内部有弱上拉可禁止(传统8051单片机固有),可配置为开漏输出和推挽输出(传统8051单片机只有开漏输出)。

②片内数字资源要通过数据交叉开关(crossbar)按一定的优先级配置到IO引脚(C8051F2xx系列除外,而传统8051单片机不具备这一功能)。IO口的配置更加灵活。

 

问:C8051F系列单片机电源电压全部为2.7-3.6V,那么是否有与5V系统接口的比较简单的解决方案?

答:所有IO口允许5V(极限值为5.8V)输入,但是输出高电平为VDD。如果与5V系统接口,最简单的方法是开漏输出并在输出端加接5V上拉,关键是上拉电阻的选择。具体参考应用笔记AN011“在5V系统中使用 C8051Fxxx”。

建议:如果可能,请尽量选用供电电压兼容的芯片,这是一种最理想的选择。

 

问:模拟引脚能否简单地用于数字IO

答:如果模拟引脚是独立的是不可以的。但是如果模拟引脚和数字IO是复用的,是可以通过SFR的设置来完成配置。

 

问:C8051F020/022p4-p7口和p0-p3口有什么不同?

答:P0-P3口复位时为通用口,可通过Crossbar(数据交叉开关)寄存器按优先级设置成第二功能。而P4-P7口是通用口,另外P4-P7寄存器不能位寻址。

 

问:如果通过Crossbar寄存器使能并分配为P0.0P0.1引脚,那么,我还可以用这两个引脚为通用I/O吗?

答:①如果你通过Crossbar使能一个外设,如UART,那么这个外设将控制这些引脚的输出状态(逻辑高/逻辑低)。

②你可以在任何时刻读引脚的状态,与Crossbar控制与否无关。

③当被禁止时,大部分外设的输出引脚被置为高阻态(UART口是一个很好的例子)。因为UART收发器无明确的禁止态,你可将相应的引脚置成开漏输出模式,也可以达到相同的结果,因为UART收发器在空闲时引脚为逻辑1

总的来说,Crossbar置配后在末使用时的外设引脚可以用于数据输入,但不能作为数据输出。其它器件,如F3xx系列,口引脚可通过Crossbar“重新声明”且用于GPIO引脚对器件管脚无影响,因为这些器件具有“引脚跳过”(PIN SKIP)特性。

 

问:IO口的开漏和推挽输出如何使用?

答:将端口引脚置成推挽输出方式,这将使能端口引脚驱动器。总体上来讲,数据输入端口引脚置成开漏方式、数据输出端口引脚置成推挽方式。当引脚用于输出连接上拉电阻(也就是说当与5V系统接口时)时配置成开漏输出。

 

问:引脚P1.4~P1.7中断如何使用?

答:如果外部中断(EX4EX7)使能且相应的引脚P1.4~P1.7变低(可以是外部输入信号、写输出端口锁存或是Crossbar定义的外设启动的事件)。那么中断标志(PRT1IF.n)将置位,如果全局中断使能,将产生一个中断。中断逻辑检测本身的逻辑状态,与产生逻辑状态变化的原因无关。

 

问:是不是所有的C8051F系列单片机的I/O口都是5V兼容?

答:不是,例如C8051F060只有P0口是5V兼容,具体的要参照相关型号的数据手册。

 

问:P4口的某些引脚已用为外部存储器的控制信号,剩下的口线能否作为普通I/O使用?

答:可以,但不能直接给此端口送数,应通过“与”或者“或”的方式来对此端口进行操作。

 

问:为什么端口的数据寄存器置为0时,其引脚上的电平还是为高电平?

答:交叉开关使能位没有置位。

 

:端口在停机(STOP)模式下是什么状态?

答:端口在停机模式下将保持进入停机模式前的状态。

 

电源管理

问:模拟电源和数字电源是否可以源于同一个线性稳压器的输出输出?

答:模拟电源和数字要分别供电。可以使用两个稳压源分别供电,但是两个电源之间的电压差必须满足在数据手册中的规定( <0.5V,相差0.3V是比较理想的)。 实际上模拟电源和数字电源可以来自同一个稳压器的输出,只在AV+VDD之间接简单的滤波器也是很有效的。这里要加一个小电感,也可以用低阻值的线绕电阻(通常2欧姆)。线绕电阻要有足够的寄生电感。这种方式既能降低成本又能减少体积。(关于这一点可以参考目标板的原理图的电源部分)。

 

问:C8051F系列单片机有几种电源管理模式?是否可以在低功耗中应用?在低功耗应用时应该怎么做?

答:C8051F系列单片机有两种电源管理模式,空闲(IDLE)和停止(STOP)。在IDLE模式CPU停止,而振荡器和所有的数字和模拟外设可以处于激活状态。IDLE模式可由复位或一个中断请求来结束。在STOP模式,停止振荡器、CPU和所有的外设。STOP模式只能通过复位结束。

IDLESTOP提供了一种低功耗备用模式。此外,振荡器的控制也能用于提供一种低功耗工作模式。

实现方法为:你可以在XTAL引脚接一个低频音叉晶体(32.768kHz)。当你的系统需要高速运行时,可以选择内部振荡器作为时钟源(2481625MHz(仅限F3xx)),接着将系统时钟切换到外部进入低功耗模式。

请参考应用笔记:AN016“电源管理技术及计算”。该应用笔记可以从我公司网站下载www.xhl.com.cn

 

问:如果在我的系统中未使用到模拟部分,请问芯片的模拟电源和模拟地是否可以不连接?

答:必须连接。   

 

   

存储器

问:C 8051F系列单片机的片内FLASH可用于非易失数据存储,但FLASH的寿命是多少呢?

答:FLASH的擦/写次数:保证20000次擦/写,典型值为:100000次。

 

问:片内flash擦除及写入过程及所需时间?

答:片内flash擦除及写入的时序由芯片内自动控制,当发出擦除或写入指令时,CPU暂时停止工作,外围设备(串行口、ADCTimer等仍处于活动状态),外围设备产生的中断此时被挂起,中断在擦除或写入完成后按优先级顺序执行。以F020为例,扇区(512字节)擦除时间为10m~14ms;典型值12ms,写入时间 50μS

 

问:C8051F020ALE引脚是否象传统51那样上电工作后一直有脉冲输出呢?

答:外部存储器接口(EMIF)信号(ALE/RD/WR,地址和数据线) 只有在执行对片外的SRAM的操作指令MOVX时才被激活。在其他时刻,这些信号的状态是由相对应的端口锁存器的内容支配。

 

问:用程序代码写Flash的注意事项有那些?

答:下面以C8051F020为例进行说明

第一步、禁止中断

第二步、置位FLWEFLSCL.0),以允许由用户软件写/擦除FLASH

第三步、置位PSEEPSCTL.1),以允许FLASH扇区擦除

第四步、置位PSWEPSCTL.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#0000HOPTR指向SRAM地址

MOVX A@DPTR 读字节到A

另外,对于任何寻址方式,16位外部数字存贮器的地址的高5位是被“忽略”的。因此这2K的片内SRAM以取模的方式映射到整个64K外部数据存贮器地址范围。例如,位于地址0x00000x08000x10000x18000x2000等地址的数据是一样的。在进行循环连续存贮器填充时这是一个很有用的特性。因为到达SRAM的边界时不必对地址指针复位。

 

问:如何对程序代码加密(或如何写FLASH程序存储器安全字节)?

答:程序存储器安全字节的地址:64K_0xFDFE0xFDFF32K_0x7DFE0x7DFF16K_0x3DFE0x3DFF8K_0x1DFE0x1DFF

您可在你原有的IDE工程里面追加一个汇编文件,一起编译连接下载;以8K Flash芯片为例,汇编文件内容如下:

org 1dfeh

nop

nop

end

或用更改hex格式文件的形式将0x1dfe0x1dff写入00,此方法适用于批量生产,直接下载hex格式文件。以32K为例:在hex文件倒数第一行与倒数第二行之间插入一个记录: 027DFE00000083 *

注:为hex文件的记录开始符,

02 是要写入的字节数

7DFE 为写入地址的首地址

00 为写入的数据的类型(00为数据;01hex文件结束标志)

0000 是写入的两个数据

83 是校验和(将它的值与记录中所有字节相加,其结果为0

     

 

   

定时器

问:定时器的计时时钟的最大频率是多少?

答:在定时器(C/Tn = ‘0’)方式,为SYSCLKSYSCLK/12,这取决于CKCON寄存器的相关位的状态。

在计数器(C/Tn = ‘1’)方式,定时器的增加取决与外部引脚电平由高到低的跳变。在此方式,最大频率允许为SYSCLK /4,外部输入信号必须维持至少2个系统时钟周期的高电平,才能确保电平被采样。

 

问:C8051F02xPCA模块的最大输出频率是多少?

答:PCA模块的频率输出模式,当PCA的时钟频率为系统时钟,而系统时钟频率为25MH时,产生的方波频率最大值为12.5MHz。计算公式为:fCEXn=fPCA/2×PCA0CPHn

     

 

   

串行口

问:SPI总线能够实现2MHz的传输速度吗?

答:以C8051F000为例,在主模式时最高为SYSCLK/2,或在从模式时为SYSCLK/10。为了达到2MHz位的速度,需要将系统始终设置为2MHz×10 即20MHz(从模式)或 2MHz×2 即 4MHZ(主模式)。

问:C8051F02x芯片,除去本身有的两个硬件串行口(UART0UART1),动用芯片的一切资源,总共可以实现几个串行口(包括软件和硬件)?

答:6个串行口(硬件串口波特率最高可达1.152Mbps/18.432MHZ晶体,软件串口波特率可达57.6K6bps)软件UART实现全双工操作最多可达4(占用4PCA2个定时器)

软件UART的实现方法请参考应用笔记AN015“软件UART示例”。该应用笔记可以从新华龙公司的网站下载。

 

问:在调试UART程序时,为什么在IDE中查看不到SBUF0的值?那么如何察看接收和发送是否正确?

答:UART发送寄存器和UART接收锁存器共用一个SFR地址,但是占用不同的物理存储区域。请参看器件的数据手册的UART框图部分。

SBUF将返回接收数据锁存器的内容。写SBUF将写发送移位寄存器的内容。在Silabs IDE中写数据到传输 寄存器是不可见的。如果你想确认发送和接收是否正确,你可将UARTTXRX引脚连在一起来测试发送和接收是否正确。

 

问:C8051F02x系列有外扩数据RAM接口,可以扩展片外64KXRAM,而片内还有4KXRAM,那么是否可以作到68K XRAM的数据存取?

答:可以。在“split”模式,低4K字节存储空间访问片内4KXRAM。为了读取片外的低4K字节的XRAM,你必须变换访问模式,将模式设置为仅读取片外。你可以在你的应用中切换读取模式实现68K XRAM的访问。

 

问:F02x芯片有两个UART,我需要两个不同的波特率,UART09600UART119200。请问如何配置呢?

答:UART0可以用Timer1Timer2作为波特率源(选择T2CON寄存器RCLK0TCLK0的状态)。UART1可以用Timer1Timer4作为波特率源(选择T4CON寄存器RCLK1TCLK1的状态)。

关于具体的例程可以参看应用笔记AN022 《 F02x 系列的C例程》,该应用笔记可以从我公司网站上下载。(www.xhl.com.cn)

 

问:SPI (SERIAL PERIPHERAL INTERFACE)中的NSS信号作用?

答:从选择(NSS)信号是一个输入信号,主器件用它来选择处于从方式的SPI器件,在器件为主方式时用于禁止SPI。注意:NSS信号总是作为SPI的输入。当一个器件的SPI工作于主方式时,该器件的NSS信号应为高电平,当NSS被拉低时用于禁止该SPI,该器件应用IO口的输出控制与其相连的SPINSS,输出低电平,即外部NSS拉低时,被选为从器件。

 

问:如何在同一台PC上使用多个CP210X设备?

答:当CP210X接到PC后,PC是依靠VIDPIDSERIAL NUMBER来识别设备的;当有两个以上具有相同识别信息的设备连接到PC上时,只有第一个识别出的设备可以正常通信;

为了在应用时使用多个CP210X器件,可以通过网站上的应用笔记AN144中的CP210XSETIDS.EXE文件修改SERIAL NUMBER实现;

注意:在修改时如无特殊需要请不要修改VIDPID;因为修改VIDPID后要同时修改驱动程序此器件才可以正常工作;而修改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协议转换适配)相同而目标板不同?

答:开发套件中串行适配器(核心部件)是通用的,只是目标板不同。只要您购买一套开发套件,就可以开发全系列单片机,只要将集成开发环境软件升级就可以了。为了加快您的开发进程,您只要购买带有相关型号单片机的目标板就可以了。

 

问:C8051F单片机是怎样调试用户系统的?

答:C8051F 单片机是用开发套件来调试用户系统的。单片机开发套件包括开发软件IDE(集成开发环境),U-EC2PCUSB口和单片机JTAG接口的协议转换模块和一个目标板(板上有C8051F MCU)。IDE中集成编译器,汇编器和连接器,支持汇编语言和C语言(第三方支持);U-EC2是从USB口到JTAG协议的转换模块。

目标板上带有一块相应的C8051F MCU和一些简单的外围电路构成一个最小单片机系统,并将所有引脚连接到插座。C8051F单片机片内集成了一个以JTAG协议为基础的调试电路,这样在调试您的系统时,不需要专用仿真芯片、目标仿真头及目标RAM等。您在IDE上编译生成程序代码后,通过U-EC2(连接到计算机USB口和JTAG接口)将代码下载到用户系统板的C8051F MCUFlash存储器中,然后您就可以调试您的目标系了。

 

问:可以用Keil uVision2 IDE调试全系列C8051F单片机应用系统吗?

答:可以。但必须安装动态链接库。该驱动程序可以在我公司的网站上下载。

 

问:如何将绝对目标代码转换成hex格式文件?

答:第一,可以使用KEIL C,在编译时直接生成。

第二,使用OH51DOS命令)将目标文件转换成hex格式的文件。

Oh51 inputfile [hexfile]

 

问:Silabs IDE中带有4K代码限制版的Keil C51,那么如何将无限制版的Keil C51嵌入到Silabs IDE中呢?

答:先将您完全版的Keil C51安装到您的PC机中;然后进入Silabs IDE界面,选择Project->Tool Chain Integration,弹出对话框,单击Browse按钮,更换A51C51BL51的目录(换成keil\c51\bin)即可。

 

问:程序代码加密后,IDE不能与目标系统连接怎么办?

答:进入IDE界面,选择ToolsErase Code Space来擦除FLASH后,自动与目标系统连接。

 

问:使用IDEU-EC2/5连接硬件时出现“Target Did Not Halt....”应如何处理?

答:1).检查10芯扁平电缆及USB线是否正确连接

2).检查目标板的电源是否正确连接

3).使用IDE环境下的命令TOOLS-ERASE CODE SPACE擦除芯片

4).检查JTAG接口的TMSTCKTDITDOC2接口的C2CKC2D是否正确连接到适配器

5).保证芯片的所有电源(数字/模拟)及地都正确连接

6).如果芯片上有MONEN引脚;要保证此引脚已经接到VDDGND上;

7).检查RST引脚的状态,在连接的过程中要保证此引脚为高电平;

8).检查芯片的焊接是否有虚焊或短路 

 

     

中断、复位源

问:C8051FXXX MCU的外部中断是怎样分布的?

答:C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7/INT0/INT1/INT4/INT5/INT6/INT7

C8051F020/1/2/3/INT0/INT1/INT6/INT7

C8051F120/1/2/3/4/5/6/7/INT0/INT1( 注意:当需要使用C8051F12xC8051F02x 进行升级时,要注意在原来的系统中是否使用了/INT6/INT7,在C8051F12x中没有这两个外部中断。)

C8051F040/1/2/3/INT0/INT1

C8051F060/1/2/3/INT0/INT1

C8051F206/220/221/226/230/231/236/INT0/INT1(另外,有4个软件控制中断,SCI0SCI1SCI2SCI3

C8051F30x/C8051F31x/C8051F32x/C8051F33x/C8051F35x/INT0/INT1

 

问:C8051F系列单片机的中断有几级?

答:C8051F系列单片机的中断只有两级:低优先级与高优先级,上电后所有的中断默认的是低优先级;互相之间不能打断中断。

 

问:使用软件强制复位时应注意哪些问题?

答:如有需要在程序中使用软件强制复位,切记不可在程序复位后,就进行软件复位, 这 样会导致系统不停的循环复位,并且无法解除,从而出现系统不能正常工作现象。

 

问:看门狗已经关闭了,系统为什么总是不停的复位?

答:可以在复位后查看“复位标志寄存器”的值,以确定到底是什么原因引起复位,并作相应的处理。

 

问:单片机系统“死机”时,按复位键也复不了位,只有重新断电后再上电才可以运行,为什么?

答:这种现象叫“死锁”,也称为“可控硅效应”,造成这种情况的主要原因是单片机的某些引脚有强干扰侵入,应采取限流及各种抗干扰措施。

 

问:使用外部看门狗电路需要注意什么?

答:如果外部看门狗电路的输出是低阻输出;建议在看门狗电路到复位引脚之间加400~1000欧的限流电阻;

 

问:复位引脚是否有必要加上拉电阻?

答:芯片复位引脚内部有100K的上拉电阻;为避免干扰建议在复位引脚再加上1K~5K的上拉电阻  

 

     

手工焊接

问:如何焊接TQFP表贴芯片?

答:购买一可焊接表贴器件的进口电烙铁(烙铁头(端部)不超过1mm),优质助焊剂,放大镜,吸锡网(必备),及其他工具。就可以焊接了。(一用户:现在我是用自制的吸锡线:将带屏蔽网的音频线抽去线芯和外皮,在酒精松香溶液中浸一下晾干。比进口的吸锡线还好用。)具体请参考应用笔记“C8051F TQFP和 LQFP器件的焊接方法”一节。      

 

     

C8051F单片机使用注意事项

由于C8051F单片机是3.3V低功耗、高速单片机,与大家过去应用传统的5V供电低速单片机在引脚处理与PCB布板方面会有一些区别,我们总结了这方面的经验,提供给大家,以避免在应用设计上走弯路。

一、电源和地线方面的处理

1、模拟电源和数字电源要分别供电,可以使用两个稳压源分别供电,但是两个电源之间的电压差必须满足数据手册中的规定(<0.5V,小于0.3V是比较理想的)。实际应用中模拟电源和数字电源可以来自同一个稳压器的输出,只在AV+VDD之间接简单的滤波器也是很有效的。这里要加一个小电感,也可以用低阻值的电阻(通常2欧姆,电阻要有足够的寄生电感。) 这种方式既能降低成本又能减少体积。(关于这一点可以参考C8051F各种目标板的原理图的电源部分)。

2、在地线方面,模拟地和数字地要分开布线,然后在一点通过磁珠连接,在实际应用中也可以使用0欧姆绕线电阻连接的。该绕线电阻要有寄生电感,另外,在布线时一定要注意地线应该尽可能的粗,或者采用大面积覆地,电源线也要尽量粗,并且在单片机所有电源和地之间以及每个外围集成电路的VDDGND间加去耦合电容。

3、如果所使用的器件上有模拟电源,模拟地,数字电源和数字地,所有这些引脚不可以悬空,必须连接。

 

二、在严酷环境下使用C8051F器件时,在PCB设计时应注意那些问题?

在严酷条件下使用C8051F器件时,我们提供给您的一般性建议如下:

1) 在器件的每个电源引脚处放置0.1μF1.0μF的去耦电容,而且要尽可能地靠近芯片。这一点适用于板上所有的IC(集成电路)。*

2) 尽可能将板上不使用的空间接地,即所谓的大面积覆铜。

3) 在靠近器件外部振荡器引脚处放置外部晶体和其他振荡器元件(如果可行的话)。

4) 使用最短的连线以避免产生“天线”,尤其在下列引脚处:/RSTMONENXTAL1XTAL2TMSTCKTDITDO

5) 应使用一个1k - 4.7k 的电阻将/RST拉为高电平。且应该在/RST走线和地之间设一个0.1uF的去耦电容*

6) 应将MONEN直接接至片上的VDD (首选)或接地。*

7) TMSTCKTDI 和接固定电平。*

8) 连接至系统电缆或其他电路板上的信号应在PCB的连接点处适当地滤波。

* 避免使这些连接在板上形成大的回路。

 

三、对JTAG引脚的处理

在电路设计时,JTAG口的TCK要加3.3V上拉。上拉电阻值取4.7K。另外,要考虑到在成品阶段(此时已不需要通过JTAG编程),将TCK.TMS.TDI引脚接地,这样更能提高系统的抗干扰能力,对于提高系统的稳定性是非常主要的。

 

四、对未用到的IO口/模拟输入口的处理

对未用到的IO口建议:设置为漏极开路;并加固定电平;或设置为推挽方式;未用的模拟输入也要接地(接模拟地)

 

五、在电路设计时的IO口/模拟输入口的保护

1、在可能对IO口有瞬态冲击的情况下,一定要对IO口进行保护,如可能会有瞬间大电流,就要在IO口上串接限流电阻,建议取值100欧姆。如有瞬态大电压,就要在IO口上接TVS或快速反应二极管。

2、对在产品中使用的模拟输入引脚的输入电平,要在器件的允许范围值内(具体的参数见数据手册)。一般的ADC的输入电压范围是0V~VREF。同时不可以超过器件的极限参数(见数据手册),否则可能造成永久性损坏。具体的做法可以加两个肖特基二极管到电源和地。

 

六、对复位引脚/MONEN(电源监视)引脚的处理

1、为了提高系统的抗干扰能力和可靠性,建议不要将复位引脚悬空,推荐电路为:在复位引脚加强上拉,电阻可以选择2~10K,还要加一个0.1uF~10uF的去耦电容。

2、如果接有外部看门狗电路,在调试及下载程序的过程中要将看门狗电路断开

3、如果所使用的芯片上有MONEN引脚,此引脚不要悬空,建议直接接电源(使能MONEN)

 

七、外接晶振的注意事项

1、选择质量好的晶振、选择损耗小的晶振电容。

2X TAL1XTAL2口不要接入5V电压,在接入CMOS时钟输入时,要注意。

3、晶体振荡电路部分对在PCB的板上布局非常敏感,应将晶体尽可能地靠近器件XTAL引脚,并在晶体引脚接上微调(10PF~33PF)电容。布线应尽可能地短并用地线屏蔽,防止其它引线引入噪声或干扰。

4、晶体外壳最好接地。

5、对于C8051F3XX器件,在外接晶体时,一定不要忘记在晶体两端接10MW的电阻。

6、晶体微调电容的地要接模拟地。

 

八、焊接温度的注意事项

当使用自动焊接时应严格控制以下参数:

1、温升速率:小于6/

2、预热区芯片引脚的最大温度:125

3、回流焊的最大温度:建议215℃到220(最大值为235)

4、芯片通过液态焊料温度状态的时间:3085(建议75)

5、最大冷却速率:4/

如果使用手工焊接,也应注意电烙铁的温度不易过高,与芯片的接触时间不易过长;

关于焊接的详细资料参见附页<<超小型芯片(SMT)焊接指南:QFPMLP封装器件。

 

九、编写软件方面的注意事项

1、如使用C51编程,在使用指针变量(FLASH进行写操作)按如下方式定义:

unsigned char xdata *idata(data) pwrite

这样做的目的是确保写FLASH的指针的地址被分配在或空间。

2、不用的代码空间全部清为“0”,这可以在程序跑飞后再重新运行。在跳转指令前加两到三个NOP指令。这样也可以在程序跑飞后重新运行。


原文地址:http://blog.sina.com.cn/s/blog_6edf67100101oivd.html