|
C8051F020 SPI特殊功能寄存器和I/O引脚的配置:
C8051F020的SPI引脚分配为
P0.0——CLK
P0.1——MISO
P0.2——MOSI
P0.3——NSS(一主多从模式,接高电平+Vdd)
P0.4~P0.7——Slaves 片选信号
C8051F020SPI特殊功能寄存器的配置:
①SPI控制寄存器SPI0CN的配置:
选择MSTEN=1,使能主方式;SPIEN=1,使能SPI。
SPIF WCOL MODF RXOVRN TXBSY SLVSEL MSTEN SPIEN
0 0 0 0 0 0 1 1
所以,PI0CN=03H。
②SPI配置寄存器SPI0CFG的配置:
CKPHA CKPOL BC2 BC1 BC0 SPIFRS2 SPIFRS1 SPIFRS0
1 1 0 0 0 1 1 1
选择CKPHA=1,在SCK周期的第二个边沿采样数据;CKPOL=1,SCK在空闲状态处于高电平;BC2~BC0=000,表示数据从最高位一直发送到最低位;SPIFRS2~ SPIFRS0=111,表示发送8位数据。
所以,SPI0CFG=16H。
③内部振荡器控制寄存器OSCICN的配置
MSCLKE —— —— IFRDY CLKSL IOSCEN IFCN1 IFCN0
0 0 0 1 0 1 1 1
选择IFRDY=1,内部振荡器频率按照IFCN位确定的频率运行;IOSCEN=1使能内部振荡器;IFCN1~IFCN0=11,内部振荡器频率为16MHz。
所以,OSCICN=17H。
④SPI时钟速率寄存器SPI0CKR配置:
SCR7 SCR6 SCR5 SCR4 SCR3 SCR2 SCR1 SCR0
0 1 0 0 0 0 0 1
设定SPI的时钟为fSCK=100KHz,
则SPI0CKR =[(SYSCLK/2)/ fSCK]—1=79=41H。
所以,SPI0CKR=41H。
⑤端口I/O交叉开关寄存器0(XBR0)的配置:
CP0E ECI0E PCA0ME UART0EN SPI0EN SMB0EN
0 0 0 0 0 0 1 0
选择SPI0EN=1,SPI总线使能,SPI的SCK、MISO、MOSI、NSS分别连到P0.0、P0.1、P0.2和P0.3四个端口引脚。
所以,XBR0=02H。
⑥端口I/O交叉开关寄存器1(XBR1)的配置:
WEAKPUD XBARE — T4EXE T4E UART1E EMIFLE CNVSTE
0 1 0 0 0 0 0 0
选择WEAKPUD=0,全局弱上拉;XBARE=1,交叉开关使能。
所以,XBR1=40H。
⑦端口0输出方式寄存器P0MDOUT的配置:
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 1 1 1
选择SCK、MISO、MOSI、NSS为推挽输出方式。
所以,P0MDOUT=0DH。
|
|