嵌入式应用开发之spi及linux函数累积

2023-10-31 12:12

本文主要是介绍嵌入式应用开发之spi及linux函数累积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用开发之spi

  • spi基础准备
    • spi的驱动框架
    • 主要的传数据的接口,官方手册中指定的接口函数
      • spi_message_init();//初始化一个 SPI message 结构
      • spi_message_add_tail();//向 SPI message 中添加一个 transfer
      • spi_sync();//启动、并等待 SPI 总线处理完指定的 SPI message
    • linux官网中的接口函数
    • 关于spidev_test的使用
      • 使用spidev_test的步骤:1. 进入到/home/guangod/qgTina/lichee/linux-4.9/tools/spi目录下,加载交叉编译环境,执行make,得到可执行文件得到 spidev_test 和 spidev_fdx两个程序
      • 2. 将得到 spidev_test 和 spidev_fdx两个程序,放到开发板linux系统下
      • 3. ./spidev_test -help可以根据提供操作spi总线
  • 调试步骤
    • 1. make kernel_menuconfig 打开驱动模块
    • 2.先看下硬件的连接,确定使用第几个spi控制器
    • 3. 修改设备树
    • 4. 编写App操作即可,linux函数累积文件操作函数
      • open函数
      • write函数
      • read函数
      • fcntl函数
      • pollwait函数
      • 关于宏MKDEV
  • ht7038 spi操作基础

​ 弄Linux也有半年多的时间了,自己选择的这条路是相对曲折的,有时真的是没有时间来搞。有时则是自己过分关注一些细节,整的自己的实际项目没有什么进展。实际上是打击了自己学习的积极性。还是要推进些自己有用的项目,而不是依学习进度。
要准确判断出自己的进度,不要低估了自己,也不要高估了自己,及时调整自己的策略。

spi基础准备

spi的驱动框架

主要分为了三个层次,用户空间,内核空间和硬件。
用户空间:spi设备的具体的功能。包括具体的协议控制和数据传输工作。
内核空间:也分为了三部分;
spi控制器驱动层:对应于内核的spidev.c的spi标准驱动;适用于特定spi总线控制器的读写方法,并注册到linux内核的spi架构。此层对应的就是内核空间的设备驱动程序。
spi通用接口封装层:提供核心的api接口。对应于驱动中的spi.c文件,是内核中的原生文件。
spi控制器驱动:对应于驱动中的spi-suxi.c文件。

主要的传数据的接口,官方手册中指定的接口函数

spi_message_init();//初始化一个 SPI message 结构

spi_message_add_tail();//向 SPI message 中添加一个 transfer

spi_sync();//启动、并等待 SPI 总线处理完指定的 SPI message

linux官网中的接口函数

  • 简易函数

    /*** SPI同步写* @spi: 写哪个设备* @buf: 数据buffer* @len: 长度* 这个函数可以休眠** 返回值: 0-成功, 负数-失败码*/
    static inline int
    spi_write(struct spi_device *spi, const void *buf, size_t len);/*** SPI同步读* @spi: 读哪个设备* @buf: 数据buffer* @len: 长度* 这个函数可以休眠** 返回值: 0-成功, 负数-失败码*/
    static inline int
    

这篇关于嵌入式应用开发之spi及linux函数累积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315283

相关文章

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.