C8051F应用笔记 C8051F单片机快速入门 交叉开关的使用说明

交叉开关的使用说明

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

以C8051F320为例,优先权交叉开关(如下图)为每个I/O功能分配优先权,从优先权最高的UART0开始。当一个数字资源被选择时,尚未分配的端口引脚中的最低位被分配给该资源(UART0总是使用引脚4和5)。如果一个端口引脚已经被分配,则交叉开关在为下一个被选择的资源分配引脚时将跳过该引脚。此外,交叉开关还将跳过在PnSKIP寄存器中被置'1'的那些位所对应的引脚。PnSKIP寄存器允许软件跳过那些被用作模拟输入、特定功能或GPIO的引脚。

注意:如果一个端口引脚被一个外设使用而不经过交叉开关,则该引脚在PnSKIP寄存器中的对应位应被置'1'。这种情况适用于P0.7(如果使用VREF)、P0.3和/或P0.2(如果外部振荡器电路被使能)、P0.6(如果ADC被配置为使用外部转换启动信号CNVSTR)和任何被选择为ADC或比较器输入的引脚。交叉开关跳过那些已经被分配的引脚,移向下一个未被分配的引脚。图一列出了没有引脚被跳过(P0SKIP, P1SKIP, P2SKIP = 0x00)的优先权交叉开关译码表;图二列出了XTAL1(P0.2)脚和XTAL2(P0.3)脚被跳过情况下(P0SKIP = 0x0C)的交叉开关优先权译码表。

图一:晶振端口未被跳过

图二:晶振端口未被跳过

交叉开关配置的优先列表如下

下面将举例说明其运用方法:
A先生使用外部晶振同时使用SPI,原本SPI的MOSI与NSS位是在P0.2与P0.3但由于A先生使用外部晶振,而外部晶振是固定在P0.2与P0.3,因此SPI的MOSI与NSS位只能往后推移,由图二可得,最近的位置为P0.4与P0.5。在配置完成后各功能所对应的引脚为,SPI:SCK→P0.0,MISO→P0.1,MOSI→P0.4,NSS→P0.5;晶振位:XTAL1→P0.2,XTAL2→P0.3

代码如下:
/***外部12M晶振设置***/
unsigned char i;
P0SKIP |= 0x0C;
P0MDIN &= ~0x0C;
OSCXCN |= 0x67;
for(i=0;i<255;i++); //Wait 1ms for initialization
while((OSCXCN & 0x80) == 0);
CLKSEL |= 0x01;
OSCICN = 0x00;

/***SPI初始化设置***/
XBR0 |= 0x02;
P0SKIP |= 0x80;
P0MDOUT |= 0x31;
SPI0CFG = 0x40;
SPI0CN = 0x01;
SPI0CKR = 0x05;

注:若需要了解更多型号的信息,请查看各型号的PDF

交叉开关的使用说明

——