TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3354的SDK的是否不支持3线制的SPI设备?

各位好!有问题需要请教一下!

我用AM3354 SDK里的linux驱动spidev.c生成驱动模块,然后用/Documentation/spi里的spidev_test.c生成应用程序,运行时,提示如下:

spidev spi2.0: setup: unsupported mode bits 10
can't set spi mode: Invalid argument
Aborted

PS:#define SPI_3WIRE 0x10 /* SI/SO signals shared */

Steven Liu1:

这个三线SPI的设备,需要在同一数据根线上能同时做MOSI和MISO。目前335上数据线可以配成MOSI,或者MISO,但是同时做,实现三线SPI,应该还不能支持。在TRM24.2.3中,对数据线的description描述中:Can be configured as either input or output (MOSI or MISO)

Jian Zhou:

回复 Steven Liu1:

请问您这个驱动是在哪个驱动文件里修改的?

我们的SPI总线配置是在spi-omap2-mcspi.c进行修改的,spidev.c只是某一个SPI设备的驱动。

Wayne.Woo:

回复 Jian Zhou:

(1)我只是想用spidev.c这个应用层程序去测试AM3354是否支持3-wire的SPI。

(2)我现在的开发需求如下:

a.  我有一个液晶屏,该LCD接口集成了3-wire的SPI,而该SPI接口是连接AM3354的,该SPI的作用是:在LCD显示之前需要对液晶屏上的驱动IC进行初始化;

b.  因此,我单独写一个初始化LCD驱动IC的SPI设备驱动,同时在board-am335xevm.c中添加如下代码:

static struct pinmux_config spi1_pin_mux[] = {{"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},{"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},{"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},{"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},{NULL, 0},};

static struct spi_board_info xxx_spi1_slave_info[] = {  {        .modalias = "xxx_spi_init",        // .platform_data = &xxx_spi_info,        .max_speed_hz = 24000000,        .bus_num = 2,        .chip_select = 0,        .mode = SPI_3WIRE,   },};

但是系统启动时打印信息:

spi spi2.0: setup: unsupported mode bits 10

(3)求指教,谢谢!

Jian Zhou:

回复 Wayne.Woo:

我看了下这部分的代码,首先drivers/spi/spidev.c这个是个通用的SPI设备的驱动程序哦,并不是应用程序。

另外.mode 这个参数应该设为:

#define SPI_MODE_0  (0|0)#define SPI_MODE_1  (0|SPI_CPHA)#define SPI_MODE_2  (SPI_CPOL|0)#define SPI_MODE_3  (SPI_CPOL|SPI_CPHA)

当中的一个。

SPI_3WIRE应该通过应用层的IOCTL函数进行设置。

Jian Zhou:

回复 Jian Zhou:

另外多问一句,你指的SPI 3线是指不需要SPI_CS(SPIEN)这个信号线么,如果是这种模式,我们AM335x的SPI控制器是支持的,可以通过配置MCSPI_MODULCTRL寄存器的bit1来实现。

Wayne.Woo:

回复 Jian Zhou:

(1)我的3线SPI接口是:SCLK(时钟)、CS(片选)、DA(数据线,MISO和MOSI共用同一根数据线)。

Wayne.Woo:

回复 Jian Zhou:

Jian Zhou 于 2015-3-3 12:11 发表了以下帖子 :

我看了下这部分的代码,首先drivers/spi/spidev.c这个是个通用的SPI设备的驱动程序哦,并不是应用程序。

=====》【回复】 抱歉!笔误,我之前已经了解到drivers/spi/spidev.c是个通用的SPI设备的驱动程序,既然是通用驱动程序,那么也可以用在我的案例上。我是通过documentation/spi/spidev_test.c生成应用程序测试的。

运行命令如下:spidev_test  -3 (注:3表示–3wire   SI/SO signals shared)

打印信息:spidev spi2.0: setup: unsupported mode bits 10

PS:#define SPI_3WIRE 0x10 /* SI/SO signals shared */

【回复】

Jian Zhou:

回复 Wayne.Woo:

你可以看下我们TRM的table 24-17,我们的三线指的是SCLK和2个数据线。

数据线同时做输入输出目前没看到有支持,不过可以动态配置

Wayne.Woo:

回复 Jian Zhou:

如何动态配置?请指教

Jian Zhou:

回复 Wayne.Woo:

简单来讲,就是通过IOCTL来实现,读的时候将数据线设成receive,写的时候设置成transmit。

在应用层通过IOCTL控制这条数据线的收发。

赞(0)
未经允许不得转载:TI中文支持网 » AM3354的SDK的是否不支持3线制的SPI设备?
分享到: 更多 (0)