的步骤如下:
1. 使能外部振荡器。 2. 等待至少1ms。
3. 查询XTLVLD =>?1?。
4. 将系统时钟切换到外部振荡器。
图13.5 OSCXCN:外部振荡器控制寄存器
20
2.3.4 系统时钟选择
寄存器CLKSEL中的SEL1-0位选择用作系统时钟的振荡器。当选择内部振荡器作为系统时钟时,外部振荡器仍然可以给外设(定时器、PCA)提供时钟。系统时钟可以在内部振荡器和外部振荡器之间自由切换,只要所选择的振荡器被使能并稳定运行。内部振荡器的起动时间很短,因此可以在同一个OSCICN写操作中使能和选择内部振荡器。外部晶体和陶瓷谐振器通常需要较长的起动时间,应待其稳定后方可用作系统时钟。当外部振荡器稳定后,晶体有效标志(寄存器OSCXCN中的XTLVLD)被硬件置?1?。在晶体方式,为了防止读到假XTLVLD标志,软件在使能外部振荡器和检查XTLVLD之间至少应延时1ms。RC和C方式通常不需要起动时间。
图13.6 CLKSEL:时钟选择寄存器
2.4 I/O端口和交叉开关特点及配置
数字和模拟资源可以通过17个I/O引脚使用。端口引脚被组织为两个8位口和一个1位口。每个端口引脚都可以被定义为通用I/O(GPIO)或模拟输入。P0.0 ~ P1.7 可以被分配给内部数字资源,如图14.3所示。设计者完全控制数字功能的引脚分配,只受I/O引脚数的限制。这种资源分配的灵活性是通过使用优先权交叉开关译码器实现的。注意,不论交叉开关的设置如何,端口I/O引脚的状态总是可以被读到相应的端口锁存器。交叉开关根据优先权译码表(图14.3和图14.4)为所选择的内部数字资源分配I/O引脚。寄存器XBR0和XBR1(见图14.5 – 14.6)用于选择内部数字功能。所有端口I/O都耐5V电压(端口I/O单元示于图14.2)。端口I/O单元可以被配置为漏极开路或推挽方式(在端口输出方式寄存器PnMDOUT中设置,n = 0,1)。表14.1给出了端口I/O的电气特性。
表14.1 端口I/O 直流电气特性
VDD = 2.7V – 3.6V, -40℃到+85℃(除非特别说明)。 条件 最小值 典型值 最大值 单位 I= -10μA,端口I/O为推挽方式 VDD-0.1 OH VDD-0.7 输出高电压(V) I= -3mA,端口I/O为推挽方式 V OHOH I= -10mA,端口I/O为推挽方式 VDD-0.8 OH I= 10μA 0.1 OL 0.6 输出低电压(V) IOL= 8.5mA V OL 1.0 I= 25mA OL参数 21
输入高电压(V) IH 弱上拉禁止 弱上拉使能,V= 0 V IN2.0 25 V 输入低电压(V) IL0.8 V ±1 50 μA 输入漏电流
图14.1 端口I/O功能框图
2.4.1 优先权交叉开关译码器
优先权交叉开关译码器(图14.3)为每个I/O功能分配优先权,从优先权最高的UART0开始。当一个数字资源被选择时,尚未分配的端口引脚中的最低位被分配给该资源(UART0总是使用引脚4和5)。如果一个端口引脚已经被分配,则交叉开关在为下一个被选择的资源分配引脚时将跳过该引脚。此外,交叉开关还将跳过在PnSKIP寄存器中被置?1?的那些位所对应的引脚。PnSKIP寄存器允许软件跳过那些被用作模拟输入、特定功能或GPIO的引脚。
22
注意:如果一个端口引脚被一个外设使用而不经过交叉开关,则该引脚在PnSKIP寄
存器中的对应位应被置‘1’。这种情况适用于:
? P0.0(如果使用VREF);
? P0.3和/或P0.2(如果外部振荡器电路被使能);
? P0.6(如果ADC或IDAC被配置为使用外部转换启动信号CNVSTR); ? 任何被选择的ADC或比较器输入。
交叉开关跳过那些已经被分配的引脚,移向下一个未被分配的引脚。图14.3示出没有引脚被跳过(P0SKIP, P1SKIP = 0x00)的优先权交叉开关译码表;图14.4给出了XTAL1(P0.2)脚和XTAL2(P0.3)脚被跳过情况下(P0SKIP = 0x0C)的交叉开关优先权译码表。
图14.3 没有引脚被跳过的交叉开关优先权译码表
23
图14.4 晶体引脚被跳过的交叉开关优先权译码表
寄存器XBR0和XBR1用于为数字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 信号可以连到端口引脚,也可以不连到端口引脚。
图14.10 P0SKIP:端口0跳过寄存器
24