打印
[技术问答]

MA35D1使用spi-config 设置LBS无效

[复制链接]
159|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
七毛钱|  楼主 | 2023-3-17 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过spi-config工具不能把SPI设置为LSB first,但是TRM手册是支持的: Supports MSB first or LSB first transfer sequence。

操作如下

# spi-config -d /dev/spidev0.1 -l 1

[ 900.241414] spidev spi0.1: setup: unsupported mode bits 8

SPI_IOC_WR_LSB_FIRST: Invalid argument

使用特权

评论回复
沙发
onlycook| | 2023-3-18 14:00 | 只看该作者
关于此问题,内核spi驱动和spi-tool源码,需修改以下两个位置:
位置1 :
MA35D1_Buildroot/output/build/linux-custom/drivers/spi/spidev.c
case SPI_IOC_RD_LSB_FIRST:
        retval = put_user((spi->mode & SPI_LSB_FIRST) ? 1 : 0,
                    (__u8 __user *)arg);
        break;

上面的"1" 改为 SPI_LSB_FIRST,如下:
case SPI_IOC_RD_LSB_FIRST:
        retval = put_user((spi->mode & SPI_LSB_FIRST) ? SPI_LSB_FIRST : 0,
                    (__u8 __user *)arg);
        break;

使用特权

评论回复
板凳
onlycook| | 2023-3-18 14:00 | 只看该作者
位置2 :
MA35D1_Buildroot/output/build/linux-custom/drivers/spi/spi.c
spi_setup()函数里面
bad_bits = spi->mode & ~(spi->controller->mode_bits | SPI_CS_WORD);
改为以下,添加SPI_LSB_FIRST
bad_bits = spi->mode & ~(spi->controller->mode_bits | SPI_CS_WORD | SPI_LSB_FIRST);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

325

主题

2271

帖子

4

粉丝