c8051f020端口配置说明Word格式文档下载.docx
《c8051f020端口配置说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c8051f020端口配置说明Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
voidPORT_Init(void)
{
EMI0CF|=0x2c;
/*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽
占1个SYSCL周期*/
EMI0TC|=0x6c;
周期*/
/*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个
P3MDOUT|=0xdf;
/*使能推挽输岀*/
}
11.避免高端口处于“浮空”状态,以避免因输入浮空为无效逻辑电平而导致不必要的功率消耗,为
此应采取如下措施的任何一种:
a.将位设置为逻辑0选择弱上拉状态
R/WR/WR/WR/WR/WR/W
R/W
复位值
WEAKPUDXBARE-
T4EXE
T4E
UART1E
EMIFLE
C
NVSTE00000000
位7
位6
位5
位4
位
3位2
位1
0SFR地址
位7WEAKPU[弱上拉禁止位
0弱上拉全局允许
1弱上拉全局禁止
位6XBARE交叉开关允许位
0交叉开关禁止端口012和3的所有引脚被强制为输入方式
1交叉开关允许
位5未用读0写=忽略
位4T4EXET4EX输入允许位
0T4EX不连到端口引脚
1T4EX连到端口引脚
位3T4ET4输入允许位
0T4不连到端口引脚
1T4连到端口引脚
位2UART1EUART1I/O允许位
0UART1I/O不连到端口引脚
1UART1TX和RX连到两个端口引脚
位1EMIFLE外部存储器接口低端口允许位
0和的功能由交叉开关或端口锁存器决定
1如果=0外部存储器接口为复用方式
则(/WR)(/RD)和(/ALE)被交叉开关跳过它们的输岀
状态由端口锁存器和外部存储器接口决定
1如果=1外部存储器接口为非复用方式
则(/WR)和(/RD)被交叉开关跳过它们的输岀状态由端口锁
存器和外部存储器接口决定
位0CNVSTE外部转换启动输入允许位
0CNVSTR不连到端口引脚
1CNVSTR连到端口弓I脚;
b.令P74OUT=0xF,将高端口输岀方式配置为推拉方式(P74OUT为高端口输岀方式寄存器);
c.向高端口数据寄存器P4、P5、P6和P7写0。
12.配置端口引脚的输岀方式
每个端口引脚的输岀方式都可被配置为漏极开路或推挽方式。
在推挽方式下向端口数据
寄存器中的相应位写逻辑0将使端口引脚被驱动到GND写逻辑1将使端口引脚被驱动到VDD,在漏
极开路方式下向端口数据寄存器中的相应位写逻辑0将使端口引脚被驱动
到GND写逻辑1将使端口引脚处于高阻状态,当系统中不同器件的端口引脚有共享连接
即多个输岀连接到同一个物理线时(例如SMBus连接中的SDA信号),使用漏极开路方式可
以防止不同器件之间的冲突。
(推挽方式在有些书中称为推拉方式)
关于开漏、推挽方式,漏级开路即高阻状态,适用于输入/输岀,其可独立输入/输岀低电平和高阻状
态,若需要产生高电平,则需使用外部上拉电阻或使用如LCX245等电平转换芯片。
有些朋友,尤其
是未学过此方面知识的朋友,在实际工作中将I/O口设置为漏开,并想输岀高电平,但向口线上写1
后对方并未认岀高电平,但用万用表测量引脚确有电压,这种认为是不对的,对于高阻状态来说,测量电压是无意义的,正确的方法应是外加上拉电阻,上拉电阻的阻值=上拉电压/芯片引脚最大灌
(拉)电流。
推挽方式可完全独立产生高低电平,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小
的电压(可忽略),保证输岀与电源相同的高电平,推挽适用于输岀而不适用于输入,因为若对推挽
(低阻)加高电平后,I=U/R,I会很大,将造成口的烧毁。
对与C8051F的很多型号片子,将I/O口设置为推挽方式的做法为:
PnMDOUT=0x,Pn=0x00,这样设
置I/O口为推挽,并输岀低电平(可降低功耗)将I/O口设置为漏开方式的做法为:
PnMDOUT=0x,0Pn=0x11,这样设置I/O口为漏开。
如果学过三极管放大电路一定知道,前置单管放大器和功放末级放大电路的区别。
单片机内部的逻辑经过内部的逻辑运算后需要输岀到外面,外面的器件可能需要较大的电流才能推动,因此在单片机的输出端口必须有一个驱动电路。
这种驱动电路有两种形式:
其中的一种是采用一只N型三极管(npn或n沟道),以npn三极管为例,就是e接地,b接内部的逻辑运算,c引岀,b受内部驱动可以控制三极管是否导通但如果三极管的c极一直悬空,尽
管b极上发生高低变化,c极上也不会有高低变化,因此在这种条件下必须在外部提供一个电阻,电阻的一端接c(引岀脚)另一端接电源,这样当三极管的b有高电压是三极管导通,c电压为低,当b为低电压时三极管不通,c极在电阻的拉动下为高电压,这种驱动电路有个特点:
低电压是三极管
驱动的,高电压是电阻驱动的(上下不对称),三极管导通时的ec内阻很小,因此可以提供很大的
电流,可以直接驱动led甚至继电器,但电阻的驱动是有限的,最大高电平输岀电流=(vcc-Vh)/r;
另一种是互补推挽输岀,采用2只晶体管,一只在上一只在下,上面的一只是n型,下面为
p型(以三极管为例),两只管子的连接为:
npn(上)的c连vcc,pnp(下)的c接地,两只管子
的ee,bb相连,其中ee作为输岀(引岀脚),bb接内部逻辑,这个电路通常用于功率放大点路的末级(音响),当bb接高电压时npn管导通输岀高电压,由于三极管的ec电阻很小,因此输岀的高
电压有很强的驱动能力,当bb接低电压时npn截至,pnp导通,由于三极管的ec电阻很小因此输岀的低电压有很强的驱动能力,简单的例子,9013导通时ec电阻不到10欧,以Vh=,vcc=5v计算,
高电平输岀电流最大=250MA短路电流500ma这个计算同时告诉我们采用推挽输岀时一定要小心千万不要岀现外部电路短路的可能,否则肯定烧毁芯片,特别是外部驱动三极管时别忘了在三极管
的基极加限流电阻。
推挽输岀电路的形式很多,有些单片机上下都采用n型管,但内部逻辑提供互补
输岀,以上的说明仅仅为了说明推挽的原理,为了更深的理解可以参考功率放大电路。
振荡器
问:
内部时钟振荡器是否稳定是否可以用于产生波特率的时基?
答:
不同器件的内部时钟振荡器的精度是不同的(士20%)。
随电源电压变化,它也将发生变化(%/V。
但基本不随温度变化(<1%温度变化范围-40C〜+85C)。
由于不同器件内部振荡器的离散性较大,
所以不能用于产生波特率,应该外接标准晶体。
而有些器件,如C8051F3xx/f12x/f04x/f06x内部振
荡器精度为士2%可用于产生波特率。
片内/外振荡器如何配置?
正确步骤:
1、允许外部振荡器;
2、等待1ms
3、查询XTLVLD'
0'
->
'
1'
4、切换到外部振荡器。
注意:
振荡器频率的选择,即OSCXC寄存器的配置(外部振荡器频率控制位的设置)。
关于更多的
信息以及源代码可以参看应用笔记AN002《配置内部和外部振荡器》。
应用笔记可以从我公司网站下
载:
C8051FMCU勺指令执行速度为多少?
C8051FMCU勺CIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。
标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051FMCI执行一个单
周期指令只需要一个系统时钟周期。
如果系统时钟频率为25MHz执行一个单周期指令所需时间为
40ns。
切换外部晶振时应注意哪些问题?
首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将
系统时钟源切换到外部振荡器上,否则会岀现切换不过去,系统死机的情况。
使用外部晶振应注意哪些问题?
1、所有的模拟和数字电源引脚都应接电源(~);
2、C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“主页”一“原理图/PCB
库”中有C8051F系列单片机的典型接线图);
3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。
系统时钟切换到外部时钟后,内部的时钟是否应关闭?
可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。
系统时钟可不可以在程序中随时切换?
可以,但是由内部再一次切换到外部时应按照技术问答2所介绍的步骤进行切换。
使用外部晶振时如何配置芯片的引脚?
答答:
对于芯片上有固定晶振引脚的设备(例如C8051F02X);
相应时钟输入引脚按选择的晶振模式自动分配引脚;
对于晶振引脚与GPIO共用的芯片(例如C8051F30X);
晶振引脚要按下述方式进行设置:
(1).外接晶体体时;
XTAL1与XTAL2都要配置为模拟输入
(2).外接振荡电路为“RC或“C'
方式时,XTAL2引脚要配置为模拟输入
(3).外接CMO时钟电路时,XTAL2引脚要配置为数字输入
(4).以上几种方式在引脚的配置中都要使用跳过功能将此引脚跳过
外接晶振的最高频率是多少
外接晶振的最高频率是30MHz
模数转换
从上电(或退岀掉电模式)到ADC稳定开始转换需要多长时间?
模拟建立时间也就是等待参考电平稳定的时间。
它取决于接在VREF引脚的电容容量。
此电容越
大VREF勺噪音就越小,ADC转换结果的噪音也就越小。
如果用卩F电容,则稳定时间大约为2ms如果无旁路电容(不推荐),稳定时间大约为10卩So
在开始转化之前,需要一个卩S的跟踪时间,这也就决定了ADC多路转换开关(MUX的切换
速度。
ADC的最大输入电压及输入阻抗?
ADC的最大输入电压为VREF它的输入电压范围是0V-AV+/VDD
输入电容为10pF;
输入阻抗等价于一个5kQ电阻和一个10pF电容的串联。
请参考应用笔记AN019“计算开关电容ADC的建立时间”。
ADC可编程窗口检测器有什么用途?
ADC可编程窗口检测器在很多应用中非常有用。
它不停地将ADCS岀与用户编程的限制量进行比
较,并在检查到越限条件时通知系统控制器,这在中断驱动的系统中尤其有效,既可以节省代码空间
和CPU带宽又能提供快速响应的时间。
为了使ADC或DACM有更好的性能,是否应在VREF引脚接电容?
推荐在VRE田I脚接一个卩F的陶瓷电容器与一个大的电容(典型为卩F钽电容)。
在VREF引脚
加电容是为了降低VREF的噪声。
因为VRE啲噪声越小,ADC或DAC转换结果的噪声也就越小。
且这两个电容在PCB板上应尽可能离VREF引脚近。
内部参考电平是否可以用于外部电路的参考?
可以,你可以用VREF言号作为输岀驱动其它电路(像放大器的偏置电压等)。
注意,VREF引
脚只能提供源电流,也就是说,要有负载接地使电流流岀C8051器件。
例如,如果你将VREF连到0P
运放的(+)节点,你要加一个下拉电阻对地(24K左右)将电流限制在100卩A
如果测试的模拟输入电压范围是0-5V怎么办?
因为模拟输入(AINx)引脚不能承受5V电压,任何引脚在任何情况下(不管ADC或PGA勺设置如何)必须使其输入电压保持在AGND^AW之间,这是为了避免沉(或源)电流通过ESD保护装置。
为了测试0-5V范围的信号,必须使信号衰减(衰减到AW以下)才能进入到ADO入。
当使用外部VREF寸,要求VREF勺最大值比AV+小300mV
F02x器件内部有PGA(可编程增益放大器)可以对输入模拟信号进行放大。
其中的一个放大倍数
为倍。
是否意味着我可以外接+6V的模拟输入电压,经过倍的放大变成3V输入到AINx呢?
请注意:
任何模拟引脚(数据IO口和VDD引脚除外)的最大输入电压为到VDD+。
如果超岀此范围可能造成器件永久损坏。
在单端输入方式,有两个限制因素如下:
1、AIN输入电压必须在AGND^AV+之间以避免吸/源电流流过ESD保护器件。
2、AIN电压必须在AGN[和(VREF/GAIN)之间。
假设一个12位的ADCAINx引脚的输入电压小于AGND结果将是0x000;
如果输入电压大于(VREF/GAIN),结果将是0xFFF。
例如,使用外部参考,PGA增益为,允许的电压输入范围是0V到/=。
如何提高系统的ADC勺性能?
第一、将模拟电源和数字电源分开,可以使用比较简单的方法,如在模拟电源和数字电源之间加
简单的滤波。
第二、将模拟地和数字地分开,并在电源附近通过磁珠连接。
第三、制板时,大面积覆铜。
第四、未使用到的模拟引脚要接地。
第五、为了确保参考电压的稳定,参考电压引脚一定要接去耦电容。
第六、模拟信号的输入电压范围是O-VDD,如果模拟输入的外围有可能侵入高电压(超过芯片的极限允许范围),就要采取保护措施(如加两个肖特级二极管)。
如果模拟输入会有瞬间过电流,也要加限流保护。
如果使用内部参考源,C8051F020/F021的参考电压引脚如何连接?
C8051F020/F022共有4个参考电压引脚,VREFVREF0VRFE1和VREFD允许ADC和DAC使用
一个外部电压基准或片内电压基准。
通过配置VREF0CF基准电压控制寄存器,ADC0还可以使用DAC0
的输岀作为内部基准,ADC1也可以使用模拟电源作为电压基准。
内部基准电压必须通过VREF引脚连
接到芯片内部。
所以当您的系统中使用到内部基准电压时,必须确保VREF与VREF0VREF1VREFD
(全部或部分)引脚的连接。
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)电流是多少?
10口的沉电流和拉电流的极限参数为100mA(但是此时已经不能保证端口的正常逻辑关系了)
具体的参数请参考datasheet的端口IO部分的“端口I/O直流电气特性”。
端口是否要加保护?
在端口电流瞬间跳变的情况下,建议加限流电阻进行保护。
另外如果端口可能有超过极限电压范
围的瞬变电平侵入,也要加瞬态保护。
(瞬态保护的通常方式为接入TVS器件)
C8051F系列单片机的IO口与传统8051单片机相比有什么区别?
①C8051F系列单片机的IO口全部为三态双向口(而传统8051单片机P1、P2、P3口为准双向口):
内部有弱上拉可禁止(传统8051单片机固有),可配置为开漏输岀和推挽输岀(传统8051单片机只有开漏输岀)。
②片内数字资源要通过数据交叉开关(crossbar)按一定的优先级配置到IO引脚(C8051F2xx系列除外,而传统8051单片机不具备这一功能)。
IO口的配置更加灵活。
C8051F系列单片机电源电压全部为,那么是否有与5V系统接口的比较简单的解决方案?
所有10口允许5V(极限值为)输入,但是输岀高电平为VDD如果与5V系统接口,最简单的方
法是开漏输岀并在输岀端加接5V上拉,关键是上拉电阻的选择。
具体参考应用笔记AN0I1“在5V系
统中使用C8051FxxX'
。
建议:
如果可能,请尽量选用供电电压兼容的芯片,这是一种最理想的选择。
模拟引脚能否简单地用于数字I/O
如果模拟引脚是独立的是不可以的。
但是如果模拟引脚和数字I0是复用的,是可以通过SFR勺
设置来完成配置。
C8051F020/022的p4-p7口和p0-p3口有什么不同?
P0-P3口复位时为通用口,可通过Crossbar(数据交叉开关)寄存器按优先级设置成第二功能。
而P4-P7口是通用口,另外P4-P7寄存器不能位寻址。
如果通过Crossbar寄存器使能并分配为和引脚,那么,我还可以用这两个引脚为通用I/O吗?
①如果你通过Crossbar使能一个外设,如UART那么这个外设将控制这些引脚的输岀状态(逻辑高/逻辑低)。
2你可以在任何时刻读引脚的状态,与Crossbar控制与否无关。
3当被禁止时,大部分外设的输岀弓I脚被置为高阻态(UAR■口是一个很好的例子)。
因为UARTI攵发
器无明确的禁止态,你可将相应的引脚置成开漏输岀模式,也可以达到相同的结果,因为UART攵发
器在空闲时引脚为逻辑1。
总的来说,Crossbar置配后在末使用时的外设引脚可以用于数据输入,但不能作为数据输岀。
其它器件,如F3xx系列,口引脚可通过Crossbar“重新声明”且用于GPIO引脚对器件管脚无影响,因为这些器件具有“引脚跳过”(PINSKIP)特性。
10口的开漏和推挽输岀如何使用?
将端口引脚置成推挽输出方式,这将使能端口引脚驱动器。
总体上来讲,数据输入端口引脚置成
开漏方式、数据输岀端口引脚置成推挽方式。
当引脚用于输岀连接上拉电阻(也就是说当与5V系统
接口时)时配置成开漏输岀。
引脚〜中断如何使用?
如果外部中断(EX4—EX7使能且相应的引脚〜变低(可以是外部输入信号、写输岀端口锁存或是Crossbar定义的外设启动的事件)。
那么中断标志()将置位,如果全局中断使能,将产生一个中断。
中断逻辑检测本身的逻辑状态,与产生逻辑状态变化的原因无关。
是不是所有的C8051F系列单片机的I/O口都是5V兼容?
不是,例如C8051F060只有P0口是5V兼容,具体的要参照相关型号的数据手册
P4口的某些引脚已用为外部存储器的控制信号,剩下的口线能否作为普通I/O使用?
可以,但不能直接给此端口送数,应通过“与”或者“或”的方式来对此端口进行操作。
为什么端口的数据寄存器置为0时,其引脚上的电平还是为高电平?
交叉开关使能位没有置位。
端口在停机(STOP濮式下是什么状态
端口在停机模式下将保持进入停机模式前的状态。