2410 SPI 驱动遇到的问题

sj81   2007-12-10 09:04 楼主
在LINUX 2.6下写了一个简单的SPI口驱动,
在驱动中遇到奇怪的问题,请大家帮忙指点:   

在2410的驱动程序中初始化SPI0的过程如下:
1)时使能S3C2410_CLKCON中的SPI位;
2)设置与SPI0有关的GPIO口,并将相应的PULL UP位设置为1;
3)预想将SPI设置为SLAVE,POLLING模式,所以对SPCON0写值:0x00;

至此,初始化完毕。

初始化后,遇到的问题如下:
1)发现SPSTA0中的REDY位始终为0,如对SPTSAT0写如一个字节,SPSTA0寄存器的返回值是4,即DCOL位置位;
2)如果通过前端DSP对2410的MOSI写入一个字节的数据,则在SPRDAT0中可以读到相应的值,但是REDY位依然还是0;

请问我的初始化过程是否有问题?
为什么REDY位始终为0?问题在哪里啊?谢谢。


回复评论 (12)

我对SPI口的SLAVE模式接收数据的过程理解是:
首先REDY位应该是1,要想收数据,首先对SPTSAT0写入一个字节,此时REDY清零,等待主机发送数据,如果此时主机发送一个字节的数据到SLAVE,则REDY置1,此时读取SPRDAT0则可得到输入的数据.
点赞  2007-12-10 09:08
我的SPI接口初始化程序,请大家帮我看看哪里的问题:

//使能系统时钟可以进入SPI模块
writel(readl(S3C2410_CLKCON)|SPI_INTERNAL_CLOCK_ENABLE,S3C2410_CLKCON
   
//配置SPI0所需要使用的IO口的功能
s3c2410_gpio_cfgpin(S3C2410_GPG2,S3C2410_GPG2_NSS0);
s3c2410_gpio_cfgpin(S3C2410_GPE11,S3C2410_GPE11_SPIMISO0);
s3c2410_gpio_cfgpin(S3C2410_GPE12,S3C2410_GPE12_SPIMOSI0);
s3c2410_gpio_cfgpin(S3C2410_GPE13,S3C2410_GPE13_SPICLK0);
   
//向所需IO口的PULL UP寄存器写1
s3c2410_gpio_pullup(S3C2410_GPG2,1);
s3c2410_gpio_pullup(S3C2410_GPE11,1);
s3c2410_gpio_pullup(S3C2410_GPE12,1);
s3c2410_gpio_pullup(S3C2410_GPE13,1);
   
//将SPI配置成SLAVE,POLLING,对SPCON0写0;
writel(0x00000000,spcon0);


至此初始化完毕


可是在此时读取SPSTA0的状态,REDY位为0,而不为1,不知道是什么原因。请高手指点
点赞  2007-12-10 12:26
我也要写SPI驱动,顶一下,关注ing
点赞  2007-12-10 12:57
不知道楼主解决了这个问题没?我也遇到了这个问题,正头疼呢!
望赐教!
点赞  2008-1-21 15:08
我的SPI口,没有时钟波形,我是配置的2410SPI为主模式的
为什么楼主的SPI口要禁止上拉呢?这一点不太清楚,可否指点 一下,谢谢
点赞  2008-1-27 16:04
你好~  不知道楼主解决了这个问题没?我刚刚写了一个类似程序也遇到了这个问题,正头疼呢!
望赐教!
点赞  2008-4-29 11:54
有点难度哦
点赞  2008-5-1 13:31
好久不来了,问题早解决了,对最后一个寄存器的赋值赋错了,呵呵,datasheet没看清楚。当时对寄存器的写值参考的一个网上的blog,那个blog里面提到的寄存器的写值问题比较多。
点赞  2008-5-3 00:18
2.6内核有s3c2410现成的SPI控制器驱动(drivers/spi/spi_s3c24xx.c),为何要自己写?

我用最新的2.6.25内核,SPI工作很正常。
点赞  2008-5-6 17:23
请问zgz:
   使用linux自带的spi_s3c24xx.c驱动后,/dev无法找到自动创建的接点,/proc/devices中也没有,但是把spidev.c文件编译模块后,/proc/devices中就有了major=153的设备了,,?/QQ:70438592,不吝赐教!
点赞  2008-5-20 17:57
spi_s3c24xx.c本身并没有生成设备节点,spidev.c的任务就是为了再user space访问spi设备而设,就是通过它来进行spi设备的读写。详细方法请阅读内核Documents/spi目录下的例子。
点赞  2008-5-20 18:21
感谢zgz:
   在加载spidev.ko后,生成spidev0.1 153 0接点了
点赞  2008-5-21 08:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复