2024-08-15 调试中发现 linux spi 驱动通过spi_write 或者 spi_sync 最多只能写0XFFFF 个字节,提供解决方案。

一、调试中发现,linux spi 驱动通过spi_write 或者 spi_sync 最多只能写0XFFFF 个字节。

二、在 Linux 的 SPI 驱动中,通过 spi_writespi_sync 函数传输数据时,数据传输的大小通常受到一些底层实现和协议限制的影响。在 SPI 子系统中,一次传输的数据大小可能最多为 0xFFFF(65535)字节。

三、解决方案。

int spi_send_large_data(struct spi_device *spi, const u8 *data, size_t len) {
    size_t chunk_size = 0xFFFF; // 每次传输的最大数据量
    int ret = 0;

    while (len > 0) {
        size_t transfer_size = min(len, chunk_size);
        ret = spi_write(spi, data, transfer_size);
        if (ret < 0) {
            return ret; // 传输失败,返回错误码
        }
        data += transfer_size;
        len -= transfer_size;
    }

    return 0; // 成功
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值