gpt4 book ai didi

linux - 使用 SPIDEV 访问 SPI 设备

转载 作者:太空狗 更新时间:2023-10-29 12:06:16 25 4
gpt4 key购买 nike

我想使用 SPIDEV 驱动程序访问嵌入式 Linux 系统上的 SPI 设备(Avago Tech 的光学鼠标设备)。设备连接到 SPI0。

我在菜单配置>“设备驱动程序”>“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 的引用。

知道问题出在哪里吗?

最佳答案

我认为对于 Atmel 板,您应该使用 at91_add_device_spi 函数注册设备。那么它将是:

at91_add_device_spi(spidev_board_info, ARRAY_SIZE(spidev_board_info));

至少您必须确保您的电路板支持文件 board-sam9x5ek.c 调用此函数,以便初始化 SPI 主 Controller 。如果这样做,则您上面建议的初始化是正确的。

关于linux - 使用 SPIDEV 访问 SPI 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com