|
LPC1766 SSP1配置成SPI 操作fm1702sl 读写失败 ,看看我的配置有问题吗?
void SPI1Init(void)
{
PINSEL0 |= 0x000A8000; // set p0.9 as MOSI1 p0.8 as MISO1 p0.7 as sck1 p0.6 nss as GPIO
PINSEL1 |= 0x00000000; //
FIO0DIR |= 0x00800040; // set p0.6 p0.23 output
SSP1CPSR = 0xF0; //设置SPI时钟分频
SSP1CR0 = (0x01 << 8) | // SCR 设置SPI时钟分频 SSP时钟=Fpclk/(CSPDVR*(SCR+1)) = 28800000/(0xf0*2)
(0x00 << 7) | // CPHA 时钟输出相位,仅SPI模式有效
(0x00 << 6) | // CPOL 时钟输出极性,仅SPI模式有效
(0x00 << 4) | // FRF 帧格式 00=SPI,01=SSI,10=Microwire,11=保留
(0x07 << 0); // DSS 数据长度,0000-0010=保留,0011=4位,0111=8位,1111=16位
SSP1IMSC = 0x00; //禁止中断
SSP1CR1 = (0x00 << 3) | // SOD 从机输出禁能,1=禁止,0=允许
(0x00 << 2) | // MS 主从选择,0=主机,1=从机
(0x01 << 1) | // SSE SSP使能,1=允许SSP与其它设备通信
(0x00 << 0); // LBM 回写模式
SSP1ICR = 0x00;
}
void SPI1Send( BYTE buf)
{
BYTE Dummy;
SSP1DR = buf;
while(0==(SSP1SR&0x01));
Dummy = SSP1DR;
Dummy = Dummy;
return;
}
BYTE SPI1ReceiveByte( void )
{
BYTE data;
SSP1DR = 0xFF;
while ( !(SSP1SR & 0x04));
data = SSP1DR;
return ( data );
} |
|