建设中网站首页,更改网站备案负责人,做影视网站算侵权吗,表单大师 做网站一. 简介
前面一篇文章学习了SPI设备驱动数据收发过程中#xff0c;涉及的结构体与函数#xff0c;文章如下#xff1a;
SPI 设备驱动编写流程#xff1a;SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客
本文学习SPI设备驱动中数据收发处理过程。 二. SPI 设备…一. 简介
前面一篇文章学习了SPI设备驱动数据收发过程中涉及的结构体与函数文章如下
SPI 设备驱动编写流程SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客
本文学习SPI设备驱动中数据收发处理过程。 二. SPI 设备驱动编写流程SPI 设备数据收发处理流程
1. SPI设备数据收发处理流程
经过上一篇文章的学习总结 SPI数据传输过程如下
(1) 首先申请并初始化 spi_transfer结构体设置 spi_transfer 的 tx_buf 成员变量然后设置 rx_buf 成员变量最后设置 len 成员变量tx_buf 为要发送的数据rx_buf 保存着接收到的数据。len为要进行数据通信的长度。
(2) 其次调用 spi_message_init函数对spi_message进行初始化。
(3) 其次使用spi_message_add_tail函数将 spi_transfer结构体添加到 spi_message队列中。
(4) 最后使用 spi_sync 函数完成 SPI 数据同步传输。 2. SPI设备数据传输示例代码 通过 SPI 进行 n 个字节的数据发送和接收的示例代码如下所示 /*SPI进行多字节发送*/
static int spi_send(struct spi_device* spi_dev, u8* buf, int len)
{int ret 0;struct spi_message spi_msg;struct spi_transfer spi_t {.tx_buf buf,.len len,};spi_message_init(spi_msg); //初始化spi_messagespi_message_add_tail(spi_t, spi_msg); //将spi_tranfer添加到spi_message队列中ret spi_sync(spi_dev, spi_msg); //同步传输return ret;
}/*SPI进行多字节接收*/
static int spi_recv(struct spi_device* spi_dev, u8* buf, int len)
{int ret 0;struct spi_message spi_msg;struct spi_transfer spi_t {.rx_buf buf,.len len,};spi_message_init(spi_msg); //初始化spi_mesagespi_message_add_tail(spi_t, spi_t); //将spi_transfer添加到spi_message队列中ret spi_sync(spi_dev, spi_msg); //同步传输return ret;
} 以上就实现了SPI传输多个字节数据的功能。
接下来进行 ALPHA开发板上的 ICM20608的SPI设备驱动实验。