分类: 嵌入式
2010-11-10 18:28:31
摘自:http://blog.sina.com.cn/s/blog_530f95e90100fcpu.html
注意:要让S3C2440的一路SPI去控制外设,就必须把给nSSn外接一个上拉电阻!才能保证数据的正常传输。可以再找一个I/0口来控制74HC595的片选。
74HC595是8位串行输入转并行输出移位寄存器。74HC595引脚图!
控制原理图:
RCK也就是STCP ,在采集数据前要给RCK低电平,采集完信号要给高电平。
控制图程序:
void SPI_TEST(void)
{
int i;
U32 k;
rGPBDAT=0xFF;
delay(1000);
}
void SPI_Init(void)
{
rGPECON=(2<<26)|(2<<24)|(2<<22);
rGPGCON=(3<<14)|(3<<12)|(3<<10)|(3<<6)|(1<<4);
rGPGUP&=0xFF13;
rGPEUP&=0xC7FF;
rSPPRE0=PCLK/2/ucSpiBaud-1;
rSPCON0=(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|(0<<0);
rSPPRE1=PCLK/2/ucSpiBaud-1;
rSPCON1=(0<<5)|(1<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);
rSPPIN0=(0<<2)|(1<<1)|(0<<0);
rGPGDAT&=0xFFFB;
}
void delay(U32 dly)
{
U32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
同时可以把74HC595移出的数据用SPI读取
while(!(rSPSTA0&0x01));
k= rSPRDAT1;
Uart_Printf("RX %x\n",k);
入图