Linux下SPI设备驱动实验:实现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_transferspi_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设备中的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【洛谷 P8802】[蓝桥杯 2022 国 B] 出差 题解(带权无向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

[蓝桥杯 2022 国 B] 出差 题目描述 A \mathrm{A} A 国有 N N N 个城市,编号为 1 … N 1 \ldots N 1…N 小明是编号为 1 1 1 的城市中一家公司的员工,今天突然接到了上级通知需要去编号为 N N N 的城市出差。 由于疫情原因,很多直达的交…

MXXE利用XXE漏洞快速获取服务器敏感文件工具

https://github.com/MartinxMax/MXXE 关于 MXXEV1.2升级版,快速获取服务器敏感文件 获取Windows服务器敏感文件 把数据包复制到payload.txt进行自动注入 $ python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows 幸运的是我们找到了服务器的私匙 获取Linux服务器敏感…

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】 题目描述:解题思路一:超大数组解题思路二:拉链法解题思路三: 题目描述: 不使用任何内建的哈希表库设计一个哈希映射(HashMap)。…

数字孪生与企业

数字孪生技术,简而言之,就是创造一个物理实体的数字双胞胎,在虚拟世界中精确模拟现实世界的行为、过程和系统。这种技术的核心在于,它允许我们在数字环境中实时地监控、分析和优化其物理对应物的性能和效率。数字孪生的应用场景极…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

Win 运维 | Windows Server 系统事件日志浅析与日志审计实践

[ 重剑无锋,大巧不工。] 大家好,我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信:WeiyiGeeker 公众号/知识星球:全栈工程师修炼指南 主页博客: 【 https://weiyigeek.top 】- 为者常成&…

leetcode代码记录(Z 字形变换

目录 1. 题目:2. 我的代码:小结: 1. 题目: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:…

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出,包含如下功能: 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制,超过则自动分文件&#xf…

Unity笔记之下拉刷新列表

这样的效果; 代码: using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

NLP中的Transformer,一文掌握

Transformer变压器模型的出现 2017 年,Vaswani 等人在关键论文“Attention is All You Need”中介绍了 Transformer 模型,它标志着与以前占主导地位的基于递归神经网络的模型(如 LSTM(长短期记忆)和 GRU(门…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型(LLMs)的新发展,人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比,视频为有效的大规模预训练带来了独特的挑战,因为需要对其时空动态进行建模。 针对视频…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 🚩进一步讲应用层 🎈自定义应用层协议 🎈用什么格式组织 👩🏻‍💻xml(远古的数据组织格式) 👩🏻‍💻json(当下最流行得一种数据组织格式) 👩&…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算:,-,*,/比较:,!赋值:求模:modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…

【max材质addtive叠加模式特效渲染不出通道的解决办法】

max材质addtive叠加模式特效渲染不出通道的解决办法 2021-12-22 18:15 max的scanline扫描线,vray渲染可以,红移不行(只支持它自己的材质,它自己的材质没有additive模式)。据说mr是可以的。 右侧的球体使用附加不透明度。 附加不透明度通过将…

C++内存管理与模版(用法详解)

C/C中程序内存区域划分 内核空间(用户代码不能读写)栈(函数中存放的变量)内存映射段堆(重点)数据段(静态区)全局变量 / 静态变量代码段(常量区) 试分析下列…

Opencv3.4+FFMpeg3.4+pkg-config交叉编译arm开发板

Ubuntu16.04 64位 FFmpeg3.4 OpenCv3.4 一、下载FFmpeg https://github.com/FFmpeg/FFmpeg 1.配置 ./configure --prefix/home/zeng/ffmpeg_install --enable-cross-compile --cross-prefixarm-linux-gnueabihf- --ccarm-linux-gnueabihf-gcc --target-oslinux --cpuco…

负载均衡器如何工作,为什么如此重要?

现代应用程序和网站处理大量流量。负载均衡器是保证大型系统平稳运行的主要工具之一。 负载平衡器负责跨多个服务器路由客户端请求以分配负载并防止出现瓶颈。 这有助于最大限度地提高吞吐量、减少响应时间并优化资源使用。 负载均衡器的运行情况: (1).客户端请…

阿姨吐槽年轻人卧铺挂帘子不让坐 评论区吵翻天了

近日,网络流传的一段短视频激起了公众的广泛热议。 这段视频展现了一位阿姨与在下铺挂帘子的年轻人之间的冲突。 视频中,阿姨情绪激动,她用镜头对准了那位年轻人,指责他在下铺挂帘子,使得一位70岁的老人无法坐下。 阿姨…

EasyRecovery数据恢复软件2024免费版下载亲测可用(支持win7,win10)

EasyRecovery数据恢复软件是由全球著名的数据恢复公司Ontrack出品的一款专业级数据文件恢复工具。它支持恢复多种存储介质上的数据,包括硬盘、光盘、U盘/移动硬盘、数码相机以及Raid文件恢复等,能恢复的文件类型也相当丰富,包括文档、表格、图…

磁盘管理和文件系统

一.磁盘基础 1.磁盘结构 (1)物理结构: 盘片:硬盘有多个盘片,每盘片2面 磁头:每面一个磁头 (2)硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇区存…