您的当前位置:首页正文

单片机常见问题回答

2021-12-16 来源:钮旅网


振荡器

问:内部时钟振荡器是否稳定?是否可以用于产生波特率的时基?

答:不同器件的内部时钟振荡器的精度是不同的(±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电阻(在新华龙网站的“主页”—“原理图/PCB库”中有C8051F系列单片机的典型接线图);

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

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

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

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

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

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

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

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

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

(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带宽又能提供快速响应的时间。

问:为了使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。

端口

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

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

问:端口是否要加保护?

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

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

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

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

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

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

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

问:模拟引脚能否简单地用于数字I/O?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

因篇幅问题不能全部显示,请点此查看更多更全内容