群内的各位同仁好!
我使用的是8127 RDK3.8版本,在启用SPI接口时遇到了棘手的问题.
因平台需要,我在kernel中启用了spi0~spi3,我在arch/arm/board-ti8148ipnc.c及devices.c中配置好,在kernel装载完毕后,在/dev/目录下也能看到
/dev/spi2.0, /dev/spi3.0, /dev/spi4.0
具体我选择了spi3.0来做测试,我将spi3.0所指定的2个数据引脚短接(MISO<–>MOSI),使用kernel的Documentation/spi目录下的spidev_test.c编译好测试程序spidev-test
当我执行 ./spidev-test -D /dev/spi3.0时,
open device(/dev/spidev3.0)…
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)
程序就卡在这里, 后面就没有回应了,就是没收到数据回来.
关于spidev3.0的引脚复用我是如下设置的:
TI814X_MUX(VOUT1_G_Y_YC2, OMAP_MUX_MODE5), // SPI2_CS (0x4814 0B8C –> AF27,GP3[20])
TI814X_MUX(VOUT1_R_CR3, OMAP_MUX_MODE5), // SPI2_CLK(0x4814 0B90 –> AG28,GP3[21])
TI814X_MUX(VOUT1_R_CR2, OMAP_MUX_MODE5), // SPI2_D1(0x4814 0B94 –> AE27,GP3[22])
TI814X_MUX(VOUT1_B_CB_C2, OMAP_MUX_MODE5), // SPI2_D0(0x4814 0B98 –> AF28,GP3[30])
请多指教,谢谢!!
Chris Meng:
你好,
SPI1默认是在M3侧用于sensor的配置的,你能否确认相关代码是否有冲突?
jensen zhang:
回复 Chris Meng:
谢谢Chris Meng的回复.目前我测试的是/dev/spi3.0,即spi2,我把spi2的D1,D0两个引脚短接了,但运行Documentataion/spi/下的spidev_test测试程序还是收不到数据,挂起在那里…能告诉我一般是什么原因吗?
/dev/spi2.0也测试了,能够执行过去但接收到的数据也不对,这个应该是有冲突,执行spidev_test -D /dev/spi2.0打印了如下的数据:
open device(/dev/spidev2.0)…spi mode: 0bits per word: 8max speed: 500000 Hz (500 KHz)
0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
….
而在spidev_test中发送的数据是:
uint8_t tx[] = { 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, };
我现在测试的是/dev/spi3.0,想找找为什么收不到数据的原因.
Chris Meng:
回复 jensen zhang:
你好,
你有使能EDMA么?
看看下面的讨论是否有帮助:
https://e2e.ti.com/support/embedded/tirtos/f/355/p/142054/512680
https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/430923
jensen zhang:
回复 Chris Meng:
感谢Chris Meng的回复…你所发的链接有一个遇到的问题跟我目前所提的问题一样,只可惜最后并没有提到解决办法