打印

求助:请各位大哥帮我看看这个问题,谢谢!【

[复制链接]
2969|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-4-19 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
15.1 优先权交叉开关译码器
优先权交叉开关译码器(图15.3)为每个I/O功能分配优先权,从优先权最高的UART0开始。

当一个数字资源被选择时,尚未分配的端口引脚中的最低位被分配给该资源(UART0总是使用

引脚4和5)。如果一个端口引脚已经被分配,则交叉开关在为下一个被选择的资源分配引脚

时将跳过该引脚。此外,交叉开关还将跳过在PnSKIP寄存器中被置‘1’的那些位所对应的引

脚。PnSKIP寄存器允许软件跳过那些被用作模拟输入、特定功能或GPIO的引脚。
注意:如果一个端口引脚被一个外设使用而不经过交叉开关,则该引脚在PnSKIP寄存器中的

对应位应被置‘1’。这种情况适用于VREF信号、外部振荡器引脚(XTAL1、XTAL2)、ADC的

外部转换启动信号(CNVSTR)、EMIF控制信号和任何被选择为ADC或比较器输入的引脚。

PnSKIP寄存器也可以用于跳过被用作GPIO的引脚。交叉开关跳过那些所选择的引脚(如同这

些引脚已经被交叉开关分配),移向下一个未被分配的引脚。图15.3示出没有引脚被跳过的

优先权交叉开关译码表;图15.4给出了P0.2和P0.3被跳过情况下(P0SKIP = 0x0C)的交叉开

关优先权译码表。 


寄存器XBR0、XBR1和XBR2用于为数字I/O资源分配物理I/O引脚。注意,当SMBus被选择时,交

叉开关将为其分配两个引脚(SDA和SCL)。当UART被选择时,交叉开关也为其分配两个引脚

(TX和RX)。UART0的引脚分配是固定的(这是出于引导装载的目的): UART的TX0总是被分

配到P0.4;UART的RX0总是被分配到P0.5。在优先功能被分配之后,标准端口I/O是连续的。
注意:SPI可以工作在三线或四线方式,取决于SPI0CN寄存器中NSSMD1-NSSMD0位的状态。根

据SPI方式不同,NSS信号可以连到端口引脚,也可以不连到端口引脚。



15.2 端口I/O初始化
端口I/O初始化包括以下步骤:
1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。
2. 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推挽)。
3. 用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。
4. 将引脚分配给要使用的外设(XBR0、XBR1、XBR2)。
5. 使能交叉开关(XBARE = 1)。
所有端口引脚都必须被配置为模拟或数字输入。被用作比较器或ADC输入的任何引脚都应被配

置为模拟输入。当一个引脚被配置为模拟输入时,它的弱上拉、数字驱动器和数字接收器都

被禁止,这可以节省功耗并减小模拟输入的噪声。被配置为数字输入的引脚可以被模拟外设

使用,但不建议这样做。要将一个端口引脚配置为数字输入,向PnMDOUT寄存器中的对应位写

‘0’,并向对应的端口锁存器(寄存器Pn)写‘1’。
此外,应将交叉开关配置为跳过所有被用作模拟输入的引脚(通过将PnSKIP寄存器中的对应

位置‘1’来实现)。端口输入方式在PnMDIN寄存器中设置,其中‘1’表示数字输入,‘0’

表示模拟输入。复位后所有引脚的缺省设置都是数字输入。
I/O引脚的输出驱动器特性由端口输出方式寄存器PnMDOUT决定,每个端口输出驱动器都可被

配置为漏极开路或推挽方式。不管交叉开关是否将端口引脚分配给某个数字外设,都需要对

端口驱动器的输出方式进行设置。唯一的例外是SMBus引脚(SDA,SCL),不管PnMDOUT的设

置如何,这两个引脚总是被配置为漏极开路。
当XBR1寄存器中的WEAKPUD位为‘0’时,输出方式为漏极开路的那些引脚的弱上
拉被使能。WEAKPUD不影响被配置为推挽方式的端口I/O。当漏极开路输出被驱动为逻辑‘0’

时,弱上拉被自动关断(禁止)以避免不必要的功率消耗。
寄存器XBR0和XBR1必须被装入正确的值以选择所需要的数字I/O功能。置‘1’XBR1中的XBARE

位将使能交叉开关。不管XBRn寄存器的设置如何,在交叉开关被使能之前,外部引脚保持标

准端口I/O方式(输入)。对于给定的XBRn设置,可以使用优先权译码表确定I/O引脚分配;

另一种方法是使用Silicon Labs IDE软件的配置向导功能来确定基于XBRn寄存器设置的端口

I/O引脚分配。
注意:为使端口P0、P1、P2和P3工作在标准端口I/O输出方式,交叉开关必须被使能。当交叉

开关被禁止时,端口输出驱动器被禁止。端口4总是作为标准GPIO使用。




SFR定义15.1 XBR0:端口I/O交叉开关寄存器0
R/W    R/W    R/W   R/W   R/W    R/W    R/W    R/W   复位值
CP1AE CP1E CP0AE   CP0E  SYSCKE  SMB0E  SPI0E URT0E 00000000

位7:
CP1AE:比较器1异步输出使能位
0:CP1A不连到端口引脚。
1:CP1A连到端口引脚。
位6:
CP1E:比较器1输出使能位
0:CP1不连到端口引脚。
1:CP1连到端口引脚。
位5:
CP0AE:比较器0异步输出使能位
0:CP0A不连到端口引脚。
1:CP0A连到端口引脚。
位4:
CP0E:比较器0输出使能位
0:CP0不连到端口引脚。
1:CP0连到端口引脚。
位3:
SYSCKE:/SYSCLK输出使能位
0:/SYSCLK不连到端口引脚;
1:/SYSCLK连到端口引脚。
位2:
SMB0E:SMBus I/O使能位
0:SMBus I/O不连到端口引脚。
1:SMBus I/O连到端口引脚。
位1:
SPI0E:SPI I/O使能位
0:SPI I/O不连到端口引脚。
1:SPI I/O连到端口引脚。
位0:
URT0E:UART I/O使能位
0:UART I/O不连到端口引脚。
1:UART TX0, RX0连到端口引脚P0.4和P0.5。




SFR定义15.2 XBR1:端口I/O交叉开关寄存器1
R/W      R/W    R/W   R/W   R/W    R/W     R/W   R/W  复位值
WEAKPUD XBARE   T1E   T0E   ECIE         PCA0ME        00000000

位7:
WEAKPUD:端口I/O弱上拉禁止位。
0:弱上拉使能(被配置为模拟输入或推挽输出的端口除外)。
1:弱上拉禁止。
位6:
XBARE:交叉开关使能位
0:交叉开关禁止。
1:交叉开关使能。
位5:
T1E:T1使能位
0:T1不连到端口引脚。
1:T1连到端口引脚。
位4:
T0E:T0使能位
0:T0不连到端口引脚。
1:T0连到端口引脚。
位3:
ECIE:PCA0外部计数输入使能位
0:ECI不连到端口引脚。
1:ECI连到端口引脚。
位2-0:
PCA0ME:PCA模块I/O使能位
000:所有的PCA I/O都不连到端口引脚。
001:CEX0连到端口引脚。
010:CEX0、CEX1连到端口引脚。
011:CEX0、CEX1、CEX2连到端口引脚。
100:CEX0、CEX1、CEX2、CEX3连到端口引脚。
101:CEX0、CEX1、CEX2、CEX3、CEX4连到端口引脚。
110:保留。
111:保留。




SFR定义15.3 XBR2:端口I/O交叉开关寄存器2
R/W   R/W  R/W  R/W  R/W  R/W   R/W   R/W    复位值
                                     URT1E  00000000
位7-1:
保留:总是写0000000b。
位0:
URT1E:UART1 I/O输出使能位(仅C8051F340/1/4/5)
0:UART1的I/O不连到端口引脚。
1:UART1的TX1、RX1连到端口引脚。



请教:
问题1:
假设我把 SDL 配置给 P0.6 
那么  XBR0,XBR1,XBR2 的值分别为多少呢?

问题2:
假设我把 CEX2 配置给 P1.5 
那么  XBR0,XBR1,XBR2 的值分别为多少呢?


问题2:
假设我把 CEX2 配置给 P1.5 
那么  XBR0,XBR1,XBR2 的值分别为多少呢?


问题2:
假设我把 T1 配置给 P2.7 
那么  XBR0,XBR1,XBR2 的值分别为多少呢?


问题4:
1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。
模拟和数字有什么区别?

谢谢!

相关帖子

沙发
lyjian| | 2007-4-19 11:25 | 只看该作者

用config软件

使用特权

评论回复
板凳
蓝色日出| | 2008-1-3 17:23 | 只看该作者

我现在也在搞这个交叉开关译码器

用的是C8051F060
真的是很麻烦啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

121

帖子

1

粉丝