以下是LPC2148的SSP的初始化及发送接收程序,不能正常通信,请知道的高手帮忙指点一下,另外SSP寄存器设置中的SCR与SSPCPSR和PCLK是什么关系,怎样设置,串行时钟速率又是什么?
void ssp_init() //SSP初始化
{
PINSEL0 &=~(0x03<<22|0x03<<26);
PINSEL1=0x02<<2|0x02<<4|0x02<<6|0x02<<8;//0x2a8选择SSP功能
//SSPCR0=0x0107;
SSPCR0 = (0x01 << 8) | //(0x01 << 8) | //SPI时钟分频
(0x00 << 7) | //时钟输出相位
(0x00 << 6) | //时钟输出极性 //0
(0x00 << 4) | //帧格式:00=SPI;01=SSI;10=MW;11保留
(0x07 << 0) ; //数据长度0011=4bit,0111=8bit,1111=16bit
SSPCPSR=0x02;
SSPICR =0x03; //清除中断
SSPCR1 = (0x00 << 3) | //1禁止从机输出,0允许
(0x00 << 2) | //0为主机1为从机
(0x01 << 1) | //1允许SSP与其它设备通讯
(0x00 << 0) ; //回写模式
}
uint8 ssp_senddata(uint8 data)
{
SSPDR = data;
//while( (SSPSR & 0x01) == 0 ); // 等待TFE置位,即发送FIFO空
//while( (SSPSR & 0x10));
while( (SSPSR & 0x014) != 0x04 );
return(SSPDR);
}
哪位大侠能帮忙指点一下?万分感激~~