你好,SPI这样初始化有问题么?为什么初始化不了?帮忙看一下
void SPI_Init(void) { LPC_SYSCON->PRESETCTRL |= (0x1<<0); LPC_SYSCON->SYSAHBCLKCTRL |= (1<<11); /* 除以 2 */ LPC_SYSCON->SSP0CLKDIV = 0x02; LPC_IOCON->PIO0_8 &= ~0x07; LPC_IOCON->PIO0_8 |= 0x01; /* SSP MISO */ LPC_IOCON->PIO0_9 &= ~0x07; LPC_IOCON->PIO0_9 |= 0x01; /* SSP MOSI */ #ifdef __JTAG_DISABLED LPC_IOCON->SCKLOC = 0x00; LPC_IOCON->JTAG_TCK_PIO0_10 &= ~0x07; LPC_IOCON->JTAG_TCK_PIO0_10 |= 0x02; /* SSP CLK */ #else #if 1 /* 在 HummingBird 1(HB1), SSP CLK 可以被重定向到不同的引脚, 而不像 JTAG TCK, 可以是 P2.11 func. 1 或 P0.6 func. 2. */ LPC_IOCON->SCK_LOC = 0x01; LPC_IOCON->PIO2_11 = 0x01; /* P2.11 功能 1 是 SSP 时钟, 需要 同时设置 IOCONSCKLOC 寄存器 */ #else LPC_IOCON->SCK_LOC = 0x02; LPC_IOCON->PIO0_6 = 0x02; /* P0.6 功能 2 是 SSP 时钟, 需要 同时设置 IOCONSCKLOC 寄存器 */ #endif #endif /* endif __JTAG_DISABLED */
#if USE_CS LPC_IOCON->PIO0_2 &= ~0x07; LPC_IOCON->PIO0_2 |= 0x01; /* SSP SSEL */ #else /* 使能 AHB 到 GPIO 时钟 */ LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);
/* SSP SSEL 是 GPIO 引脚 */ LPC_IOCON->PIO0_2 &= ~0x07; /* port0, 第 2 位设置为 GPIO 输出并为高 */ GPIOSetDir( PORT0, 2, 1 ); GPIOSetValue( PORT0, 2, 1 ); #endif
LPC_SSP0->CR0=(0x07<<0)| (0x00<<4)| (0x00<<6)| (0x00<<7)| (0x07<<8);
LPC_SSP0->CR1=(0x00<<0)| (0x01<<1)| (0x00<<2)| (0x00<<3); /* SSPCPSR 时钟分频器,主模式,最小分频系数 0x02 */ LPC_SSP0->CPSR = 0x2; LPC_SSP0->ICR= 0x03; LPC_SSP0->IMSC = SSPIMSC_RORIM | SSPIMSC_RTIM;
}
|