我想使用 SPIDEV 驱动程序访问嵌入式 Linux 系统上的 SPI 设备(Avago Tech 的光学鼠标设备)。该设备连接到 SPI0。
我在 menuconfig >“设备驱动程序”>“SPI”中启用了 SPI 和“用户模式 SPI 设备驱动程序支持”。
我将代码添加到 board.c 文件
static struct spi_board_info spidev_board_info[] {
{
.modalias = "spidev",
.max_speed_hz = 1000000,
.bus_num = 1,
.chips_select = 0,
.mode = SPI_MODE_3,
},
{
.modalias = "spidev",
.max_speed_hz = 1000000,
.bus_num = 1,
.chips_select = 1,
.mode = SPI_MODE_3,
},
};
spi_register_board_info(spidev_board_info, ARRAY_SIZE(spidev_board_info));
我尝试将 500000 和 1000000 作为 max_speed_hz (1Mhz 是传感器允许的最高值)。SPI_MODE_3 是正确的,在数据表上检查。bus_num = 1 应该正确,因为它指的是 SPI0(出于好奇,我也尝试过 = 0)。
我检查了电气连接,一切正常。
内核编译并且映像正确启动,但我在 /sys/class/spidev/ 中找不到任何设备(在 /sys/bus/spi/... 中都没有)。在系统引导期间也不会出现对 SPI 的引用。
关于问题出在哪里的任何想法?