管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
Micro2440底板上con8上是spi1的引脚,其中spi0的引脚不知道在哪,似乎没引出。
在网上找了TQ2440的spi.c驱动,修改后,短接spi1的数据输出输入线,可以实现读取数据。然而跟传感器通信后,却无法成功。
后来用示波器看了下时序,发现数据线数据发送正常,而SCLK时钟线却没有时钟,但是我看了很多遍spi1的寄存器配置,跟S3C2440手册对照,就是没发现问题。
最后搞明白了,竟然是因为SPI_Port_Init(1)函数里面,GPGIO口的配置问题,原来有句代码是:
rGPGCON=(rGPGCON&0xffff033f)|(3<<6)|(3<<10)|(3<<12)|(1<<14);
参考S3C2440的数据手册,正确配置应该是:
rGPGCON=(rGPGCON&0xffff033f)|(3<<6)|(3<<10)|(3<<12)|3<<14);
哎,其中3<<14,就是将端口G的引脚配置寄存器GPGCON [15:14]位配置成11,开启SCLK功能。
另外,片选信号需要自己写代码实现,我的外部传感器,每通信一次,必须把片选信号开关一次才能使用。
附spi1寄存器的配置:
rSPPRE1=0x3; //if PCLK=50Mhz,SPICLK=25/4Mhz
rSPCON1=(0<<6)|(0<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);//Polling,en-SCK,master,low,A,normal
rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
[ 此帖被afche在2012-04-27 22:06重新编辑 ]