zhujian621 发表于 2013-12-24 15:44

[Linux] SPI自发自收数据检测不到时钟信号,自己添加CS信号也不成功的问题!

请问大神们:
      1、 我在做S5PV210开发板的SPI口自发自收数据时,用自带的spidev.c驱动和spidev_test.c测试程序,串口工具显示可以发送数据,但为什么出不来时钟信号?
一般检测不到时钟信号都是由什么造成的?准确的说有波形出来,但不是标准方波,而是高电平往低电平跳2下马上回到高电平。(我发的一组数据是spidev_test.c自带的,时钟应该是标准方波才对。)
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x40, 0x00, 0x00, 0x00, 0x00, 0x95,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xDE, 0xAD, 0xBE, 0xEF, 0xBA, 0xAD,
0xF0, 0x0D,)
      2、同样在做SPI自收自发数据时,在spidev.c驱动程序的open函数中将cs拉高
{gpio_direction_output(S5PV210_GPB(1), 1);},cs还是默认的低电平状态呢?无论我加入中断后,在读写函数里分别拉高拉低,cs都没有任何反应,全是低电平呢?是因为cs复用了吗?那我重新设置寄存器状态
{s3c_gpio_cfgpin(S5PV210_GPB(1), S3C_GPIO_OUTPUT);s3c_gpio_setpin(S5PV210_GPB(1), 1);}再拉高也不行啊?这样设置直接烧进去后,不能正常开机了?
注:我在这添加cs信号是主从模式收发数据时,需要cs信号拉低来判断是否有数据发送,这个是项目要求的,其实可以用其他GPIO口,但是最好要cs口。我觉得是不是我在驱动程序里面直接拉低GPIO口的写法有误啊?还是需要怎么设置下?这个问题困扰我耽误项目几天了,请教大神们啊,拜谢@!
       请教大神啊,项目特别急,特别是第二个问题,求教版主。谢谢~!

Yan_2013 发表于 2013-12-26 14:00

hi LZ,
你可以做这么一个测试,VA = ioremap(PA); 把CS的地址直接map出来再用readlwritel来操作下,看看你能不能控制对这cs.
还有看你的操作是用GPIO来作CS线的?很大怀疑你的GPIO没有配置好,你可以检查一下这个GPIO状态。

zhj1011 发表于 2014-01-17 16:29

楼主执行完SPI的初始化后,先看看SPI和GPIO控制器的寄存器的值,看是否设的是正确的。

曲绕指柔 发表于 2014-02-15 16:27

页: [1]
查看完整版本: [Linux] SPI自发自收数据检测不到时钟信号,自己添加CS信号也不成功的问题!