OK335xS,SPI总线连接多个SPI设备时的片选设置问题
ps: 技术支持区无人回答,有没有哪位大大支持一下!我使用的是OK335xS开发板,操作系统是安卓4.2。
我的需求是:需要通过SPI总线扩展3个SPI从设备。
待解决的问题是:开发板只引出了SPI1_CS0这个片选脚,如何配置将其他GPIO配置为另外两个设备的片选脚?
我的解决思路是:
a. spi_master使用TI提供的控制器驱动:spi-omap2-mcspi.c
b. spi_driver利用linux中的spidev.c进行修改,通过ioctrl扩展自己的接口;Android APP 通过 jni 直接访问 spi_driver 接口,完成与spi_device从设备的交互。
c. 修改board-am335xevm.c,注册生成spi_device从设备及设备文件节点
我现在已完成的工作是:
(1) 在board-am335xevm.c中,定义的board_info为:
static struct spi_board_info am335x_spi1_slave_info_s[] = {
{
.modalias = "spidev",
.max_speed_hz= 48000000,//48Mbps
.bus_num = 2,
.chip_select = 0,
.mode = SPI_MODE_1,
},
{
.modalias = "spidev",
.max_speed_hz= 48000000,//48Mbps
.bus_num = 2,
.chip_select = 1,
.mode = SPI_MODE_1,
},
{
.modalias = "spidev",
.max_speed_hz= 48000000,//48Mbps
.bus_num = 2,
.chip_select = 2,
.mode = SPI_MODE_1,
},
};
(2) 相关pin_mux定义已改为:
static struct pinmux_config spi1_pin_mux_s[] = {
{"mii1_col.spi1_sclk", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},
{"mii1_crs.spi1_d0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},
{"mii1_rxerr.spi1_d1", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},
// MY_nCS0准备用作从设备1的片选
{"rmii1_refclk.spi1_cs0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},
// MY_nCS1准备用作从设备2的片选
{"gpmc_wpn.gpio0_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT | AM33XX_PIN_OUTPUT_PULLUP},
// MY_nCS2准备用作从设备3的片选
{"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT | AM33XX_PIN_OUTPUT_PULLUP},
{NULL, 0},
};
请问:要如何才能将 gpio0_31 和 gpio1_31 设置为 McSPI 控制器驱动 能自动识别的片选脚?
您好:
您看一下am335xevm.c文件中原来的spi的csn是如何配置的,再看一下手册里要改的引脚能不能复用成cs
可以的话就参考之前csn的配置就行 飞凌-chongzi 发表于 2016-7-27 16:44
您好:
您看一下am335xevm.c文件中原来的spi的csn是如何配置的,再看一下手册里要改的引脚能不能复用 ...
在board-am335xevm.c中,原来的spi_board_info是:
static struct spi_board_info am335x_spi1_slave_info_s[] = {
{
.modalias = "spidev",
.max_speed_hz= 48000000,//48Mbps
.bus_num = 2,
.chip_select = 0, 【1】
.mode = SPI_MODE_1,
},
};
相应的pin_mux设置为:
/*spi1con9*/
static struct pinmux_config spi1_pin_mux_s[] = {
{"mii1_col.spi1_sclk", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},
{"mii1_crs.spi1_d0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN},
{"mii1_rxerr.spi1_d1", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_INPUT_EN},
{"rmii1_refclk.spi1_cs0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL| AM33XX_PULL_UP | AM33XX_INPUT_EN}, 【2】
{NULL, 0},
};
我的疑问是:【1】和【2】之间的关联在哪里体现,.chip_select的数值,与片选管脚之间有默认的关联规则吗?还是有其他配置来指明这个关联关系?
请指教!
页:
[1]