Android Things——SPI通信

2023-11-14

1 SPI

1.1 概念

SPI是串行外设接口(Serial Peripheral Interface)的缩写,SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。SPI的原理以及通信过程不是本文要研究的内容,如有兴趣可以自行查找资料。

1.2 特性

(1)SPI总线是一种同步的串行接口: SPI是属于串行通信的一种,这就意味着SPI依赖于共享的时钟信号来同步设备之间的数据传输。控制时钟信号的设备被称为Master。其它所有连接的外设被认为是Slaves。每个设备连接到同一组数据信号以形成总线。从理论上讲,SPI数据传输率是仅限于Master切换时钟信号的快慢。时钟速度通常在16MHz到25MHz范围。
  (2)SPI支持全双工数据传输:全双工数据传输意味着Master和Slave可以同时交换数据。为了支持全双工传输,总线必须提供下列单独的信号,使得SPI最少四线接口:

Master出Slave入(MOSI);
  Mater入Slave出(MISO);
  共享时钟信号(CLK);
  共同的接地参考(GND);

(3)SPI支持同一总线连接多个从设备
  在SPI通信中,Slave设备采用硬件寻址方式。每个Slave都需要外部芯片选择信号,来让Master定位特定的设备作为数据传输的目标。如果仅仅使用一个Slave这个信号就不必须。

SPI引脚图:
在这里插入图片描述

2 Android Things

2.1 概念

Android Things是谷歌发布的一套帮助开发者在安卓端开发嵌入式设备的开发工具。 Android Things将通信底层过程封装为应用层可以调用的API方法,大大简化了Android平台下开发嵌入式设备的过程。

2.2 特性

(1)单一自启动APP,通常设备会只运行单一的程序,即开发者的APP会自动启动,系统APP不会呈现出来。
  (2)显示可选,设备可以没有屏幕,通过按钮、触摸、LED灯、语音或其他形式与用户交互。
  (3)提供了通过I/O驱动外设的接口,让开发者可以与传感器和执行器进行通讯交互,支持GPIO、PWM、I2C、SPI和UART。
  (4)用户驱动API,用户驱动继承Android Framework Services,允许APP将硬件事件注入到Framework中,使得其他APP可以使用标准的Android API访问。
  (5)物联网云,通过Google物联网云平台,开发者可以方便且安全的连接、管理数百万计遍布全球的设备,并从中获取数据。Google物联网云平台和一些其他的Google服务,提供了包括数据采集、处理分析和可视化物联网数据的完整解决方案。
  Android Things架构图:
  在这里插入图片描述

3 Android SPI开发

Android SPI这里指的是调用Android Things的API开发程序。值得注意的是Java中也有一套简称为SPI的机制,全名为Service Provider Interface,Java中的SPI是为某个接口寻找服务的机制,有点类似IOC的思想,将装配的控制权移交给ServiceLoader。与本文所说的SPI完全是两个概念。

3.1 申请权限

使用 Android Things进行开发时需要在Androidmanifest.xml添加如下权限。

<uses-permission android:name="
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Things——SPI通信 的相关文章

  • Windows11配置Java8开发环境 - JDK1.8

    1 下载JDK 我们要下载的是Oracle版本的JDK 我们首先进入Oracle的官网的Java下载页面 https www oracle com cn java technologies downloads 一直往下滑 找到Java8 g
  • Mybatis 工作原理详解

    目录 Mybatis持久层框架 结果集进行ORM映射 步骤解析 1 获取结果集及结果映射入口 2 开始ORM映射接口 3 数据库结果集解析 完成ORM映射 4 保存并获取ORM映射后的结果集 参数传递方式 顺序传参法 Param注解传参法
  • Unity3d 开始界面空白(黑屏)问题

    1 I found packages unityeditor cloud hub 0 0 1 tgz and unity editor home 0 0 7 tgz in C Program Files Unity Editor Data
  • AIGC产业研究报告2023——语言生成篇

    本文阅读时间 10 分钟 今年以来 随着人工智能技术不断实现突破迭代 生成式AI的话题多次成为热门 而人工智能内容生成 AIGC 的产业发展 市场反应与相应监管要求也受到了广泛关注 为了更好地探寻其在各行业落地应用的可行性和发展趋势 易观对
  • 基于多动作深度强化学习的柔性车间调度研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 文献来源 4 Python代码实现 1 概述 灵活作业车间调度问题 FJSP 在现代制造
  • webpack处理图片资源(jpeg,jpg,png等)

    在webpack5以前 我们处理图片资源通过 file loader 和 url loader 进行处理 现在 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了 我们只需要简单配置即可处理图片资源 webpack
  • 升级到windows server 2008

    网站从 win server 2003 升级到 win server 2008 中间遇到过一些问题 但也收获了很多惊喜 问题 原来的UrlReweite模块不工作了 lt httpModules gt lt add type XXX Ser
  • 2、在hilens_kit安装ros后,启动功能包

    2 在hilens kit安装ros后 启动功能包 在设备上复制ROS core components workspace ROS catkin ws 因为根分区很小 建议将其复制到主文件夹 并创建指向根的符号链接 将ros catkin
  • String 字符串成员函数

    string append 通过在其当前值的末尾附加其他字符来扩展字符串 其他字符串可以截取中间一段 string assign 为字符串分配一个新值 替换其当前内容 string at 获取字符串中的字符 返回对字符串中pos位置的字符的
  • shell 变量 $?

    在 Unix 和 Linux 系统中 每个 shell 命令都有一个与之关联的退出状态 exit status 或返回代码 return code 这个数字值通常用于表示命令是否成功执行 一个零 0 表示成功 而非零值 通常是 1 255
  • Spring中的IOC和AOP是什么意思?

    1 Spring是什么 IOC 控制反转 和AOP 面向方面编程 作为Spring框架的两个核心 很好地实现了解耦合 所以 简单来说 Spring是一个轻量级的控制反转 IoC 和面向切面 AOP 的容器框架 spring的基本框架主要包含
  • B树和B+树的区别是什么

    B 树和 B 树是两种不同的数据结构 B 树是一种平衡树 其中每个节点的子节点数量在一个给定的范围内 通常在 2 到 4 之间 这使得 B 树能够在插入和删除数据时保持平衡 从而提高查找效率 B 树也是一种平衡树 但它有一些不同的特征 首先
  • 终端输入命令报错:”因为在此系统上禁止运行脚本“解决方法

    计算机上启动 Windows PowerShell 时 默认执行策略是 Restricted Restricted 执行策略不允许任何脚本运行 所以修改执行策略就可以了 在电脑搜索框搜索 pw 打开PowerShell 输入 set exe
  • 由于请求头 content-type为application/json导致请求出错

    preface 最近在写 react 项目 然后调用后台接口的时候总是报错 我本以为是后台接口的问题 后来后台说 请求体 不能为 null 然后就简单做了总结 请求头 content type 一般使用的两种格式 application j
  • 对象存储哪家价格便宜?最便宜的云存储推荐!

    我们知道 对象存储是一种云存储服务 不同的云存储 价格也是有所不同的 而对象存储的价格取决于选择的存储容量和服务商 不同的存储容量 价格也是不同的 容量越大 价格也是越贵 不同的服务商 对象存储的价格也是有差异的 那么 对象存储哪家价格便宜
  • C语言获取鼠标位置并设置鼠标位置

    示例程序 include
  • 表单请求改为ajax,使用jq将form表单提交改为ajax提交

    大家可能都会有这样的经历 辛辛苦苦的敲了半天的form表单 然后被通知要改成ajax表单提交 于是就开始了一行一行的获取input的值 复制 粘贴的过程 要是碰上表单行数特别多的时候更麻烦 下面介绍一种方法 用最少的代码量完成form表单提
  • 5G MEC边缘云组网方案与业务案例分析

    1 MEC概念 MEC边缘云 Multi Access Edge Cloud 是在靠近人 物或数据源头的网络边缘侧部署云资源池和云平台 它在5G时代将扮演重要的角色 MEC边缘云的优势在于 一方面它实现了在更靠近数据源所在的本地网内运算 尽
  • 27、HMAC

    HMAC产生背景 HMAC为什么会被提出来 是MAC的产生有什么缺陷么 HMAC规范的设计是由于存在对将密钥与hash函数相结合的更简单机制的攻击 换言之就是有些将密钥和hash函数结合使用产生MAC的算法容易被攻击 而这种生成消息认证码的
  • 2020最新蚂蚁金服三面+HR一面,面试经验总结及分享

    蚂蚁金服Java岗二面 从项目入手 说说自己参与的项目 技术难度在哪里 Collections sort底层排序方式 排序稳定性 具体场景的排序策略 Http请求过程 DNS解析过程 三次握手四次挥手 简述线程池和并发工具的使用 数据库索引

随机推荐

  • Unitils-使用实践

    简介 Unitils这个Java开源类包的目的是让单元测试变得更加容易和可维护 Unitils构建在DBUnit与EasyMock项目之上并与JUnit和TestNG相结合 支持数据库测试 支持利用mock对象进行测试并提供与Spring和
  • Django后端笔记(二)模型M

    Django后端笔记 模型M Django ORM Django 数据库配置 mysql命令回顾 Django配置使用mysql数据库 切换mysql数据库之后不能启动服务器 复习案例 字段属性和选项 模型属性命名限制 字段类型 选项 查询
  • 换脸方法之FSGAN

    论文 FSGAN Subject Agnostic Face Swapping and Reenactment 官网 https nirkin com fsgan Github https github com YuvalNirkin fs
  • Delphi没落了?!delphi为什么没人用了?!delphi还有人学吗?!告诉你一个事实:现在全世界有300万程序员每天在用Delphi开发各种软件APP应用!

    德克萨斯州奥斯汀 美国商业资讯 跨平台应用程序开发人员生产力工具提供商Embarcadero Technologies Idera Inc 的一个部门 今天发布了RAD Studio 10 3 这个最新版本使开发人员能够使用相同的本机代码库
  • 《MATLAB 神经网络43个案例分析》:第18章 基于SVM的图像分割-真彩色图像分割

    MATLAB 神经网络43个案例分析 第18章 基于SVM的图像分割 真彩色图像分割 1 前言 2 MATLAB 仿真示例 3 小结 1 前言 MATLAB 神经网络43个案例分析 是MATLAB技术论坛 www matlabsky com
  • redis工具类

    redis工具类 很多公司都将redisTemplate进行了封装 封装成业务所需要的RedisUtil工具类方便进行调用 本篇文章总结了redisTemplate常用的一些方法 Redis常用的数据类型 String Hash List
  • ubuntu php v8js,Ubuntu16安装配置LNMP(7.1)环境并安装v8js拓展

    在服务器上安装 Git sudo apt get install git 配置环境 一 安装 PHP 7 1 ppa 方式安装 php7 1 sudo apt get install software properties common 添
  • SpringSecurity------HttpSecurityConfiguration配置类

    SpringSecurity HttpSecurityConfiguration配置类 一 HttpSecurityConfiguration是怎样被加载的 二 HttpSecurityConfiguration主要做了什么 三 HttpS
  • av_register_all和avformat_alloc_context

    av register all 被声明为已否决其实就是av register all 这个方法在FFMPEG 4 0以后将不再推荐使用 而且是非必需的 因此直接注释掉即可 avformat alloc context 用来申请AVForma
  • 后台网页设计

    后台网页设计 陈子龙 2019 5 17 这是一张我自己设计的后台网站的首页图片 我的这张后台网站图中的文字亲密性有点高 板块之间的距离间距都是相差不多的 视觉上给人的感觉也不是很高 在这里插入图片描述 这个logo放的有点大 我的一个交互
  • 内储管理技术——连续分配方式

    早期的操作系统 只支持单进程 为了实现简单 在执行程序之前 操作系统必须将待执行的程序全部装入内存 这就是简单存储管理技术 现代操作系统 支持多进程并发执行 允许进程装入部分程序即可以开始执行 其余部分保留在磁盘上 当执行所需的部分不在内存
  • Android 横向滚动列表 (类似横向ListView)

    示例 布局代码 xml
  • STM32基本IO的寄存器介绍

    STM32基本IO的寄存器介绍 说明 简介 端口配置低寄存器 32位 数据寄存器 32位 置位 复位寄存器 32位 复位寄存器 16位 锁存寄存器 32位 说明 最近自己在学习STM32 跟着原子哥的STM32教学视频学习 参考的资料有来自
  • 一个将军的人生总结

    这十句话 是我几十年间学习 积累 感悟出来的 我认为 做到了 就有益健康 第一句话 结交 两个朋友 一个是运动场 一个是图书馆 到运动场锻炼身体 强健体魄 到图书馆博览群书 不断地 充电 蓄电 放电 第二句话 培养 两种功夫 一个是本分 一
  • 前端基础——DOM

    前端基础学习第六天 文章目录 前端基础学习第六天 一 DOM节点操作 1 节点是什么 2 创建节点 3 添加节点 4 改变节点值 5 删除节点 6 复制 克隆 节点 二 DOM事件流 1 阻止事件冒泡和默认事件 默认行为
  • Ant Design Pro学习记录—ModalForm的使用(一)

    目录 前言 一 ModalForm销毁 二 ModalForm编辑赋值 三 ProFormUploadButton赋值 四 其它 总结 前言 使用了AntDesignPro 仿照TableList创建了自己的列表 列表添加编辑确成了困扰 添
  • py2neo框架学习全网最详细教程

    py2neo框架学习 1 公式模式是语法范式 2 代码模式是实例 可按顺序复制执行 3 该教程全部使用py2neo的内置方法 不使用run运行neo4j 4 涉及所有可能的节点 节点类型 属性 关系 关系类型 属性的增删改查 1 连接图模型
  • 《C语言运算符100例》优先级面试错题

    建议先阅读基础教学 十万字C语言动漫教程 一 前言 运算符优先级一直是让人头疼的东西 趁着 字节取消大小周 的势头来临 通宵整理了一个思维导图出来 希望对你有所帮助 这篇文章 我会仔细分析这张思维导图 所有的 C语言运算符的用法都在这里了
  • minikube踩坑记

    minikube如何使用本地镜像 需要执行 eval minikube docker env 然后再重新打镜像 并运行即可 docker build t foo 0 0 1 kubectl run hello foo image foo 0
  • Android Things——SPI通信

    1 SPI 1 1 概念 SPI是串行外设接口 Serial Peripheral Interface 的缩写 SPI 是一种高速的 全双工 同步的通信总线 并且在芯片的管脚上只占用四根线 节约了芯片的管脚 同时为PCB的布局上节省空间 提