做新年公告图片的网站,免费的crm的app,重庆优化官网服务,内蒙古做网站公司一. 简介
前面文章介绍了SPI设备数据收发处理流程#xff0c;后面几篇文章实现了SPI设备驱动框架#xff0c;加入了字符设备驱动框架代码。文章如下#xff1a;
SPI 设备驱动编写流程#xff1a;SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客
SPI 设备驱动编写…一. 简介
前面文章介绍了SPI设备数据收发处理流程后面几篇文章实现了SPI设备驱动框架加入了字符设备驱动框架代码。文章如下
SPI 设备驱动编写流程SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客
SPI 设备驱动编写流程SPI 设备数据收发处理流程-CSDN博客
Linux下SPI设备驱动实验SPI设备驱动框架编写-CSDN博客
Linux下SPI设备驱动实验向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客
本文在此基础上编写向SPI设备发送数据的函数从SPI设备接收数据的函数。 二. Linux下SPI设备驱动实验实现SPI发送/接收数据的函数
1. 读写SPI设备中数据的实现思路
向SPI设备中发送数据从SPI设备接收数据的实现需要使用内核提供的结构体与 API函数。
涉及的结构体为 spi_transfer 与spi_message。
涉及的API函数如下
void spi_message_init(struct spi_message *m) //初始化spi_message
//添加spi_transfer到spi_message队列中
void spi_message_add_tail(struct spi_transfer *t, struct spi_message *m)
//同步传输数据
int spi_sync(struct spi_device *spi, struct spi_message *message)
//异步传输数据
int spi_async(struct spi_device *spi, struct spi_message *message) 实现思路
(1) 构造spi_transfer结构体初始化 spi_message结构体使用spi_message_init 函数来初始化spi_message。
(2) 将spi_transfer 添加到 spi_message队列中使用 spi_message_add_tail函数。
(3) 进行数据传输调用 spi_sync 或者 spi_async函数。 三. 向SPI驱动框架中添加读写SPI设备中数据的函数
通过阅读 ICM20608数据手册可知如下信息 可以看出第一字节为SPI设备地址后面的多个字节为SPI数据。而第一个字节中第一位为读/写标志位后面七位为SPI设备地址。 打开 18_spi工程icm20608.c文件中添加 读/写SPI设备中数据的函数后内容如下 编译驱动
对上面驱动代码进行模块化编译 可以看出驱动模块正常编译通过。
接下来读取SPI设备中数据即读取 ICM20608设备中的数据。