4_怎么看原理图之协议类接口之SPI笔记

        SPI(Serial Peripheral Interface)是一种同步串行通信协议,通常用于在芯片之间传输数据。SPI协议使用四根线进行通信:主设备发送数据(MOSI),从设备发送数据(MISO),时钟信号(SCLK)和片选信号NSS(CS)。

(1)NSS:从设备选择信号线,常称为片选信号线,当有多个SPI从设备与SPI主机相连时,设备的其他信号线SCK、MOIS及MISO同时并联到相同的SPI总线上,即无论有多少个从设备,都共同使用这3条总线,而每个从设备都有独立的一条NSS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选线。SPI协议使用NSS信号线来寻址,当主机要选择从设备时,把该从设备的NSS信号线设置为低电平,该从设备即被选中,即片选有效,主机便开始与被选中的从机通信。所以SPI通信以NSS线置低电平为开始信号,以NSS线被拉高作为结束信号。

(2)SCK:时钟信号线,用于通信数据同步。它由通信主机产生,决定了通信速率,两个设备之间通信时,通信速率受限于低速设备。

(3)MOSI:主设备发送,从设备接收。

(4)MISO:主设备接收,从设备发送。

读操作:

写操作:

协议层:
1.SPI基本通信过程

NSS、SCK、MOSI信号都由主机控制产生,而MISO的信号由从机产生,主机通过该信号线读取从机的数据。MOSI与MISO的信号只在NSS为低电平的时候才有效,在SCK的每个时钟周期,MOSI和MISO传输一位数据。

2.通信的起始和停止信号

NSS由高变低,是SPI通信的起始信号。NSS由低变高,是SPI通信的停止信号,表示本次通信结束。

3.数据有效性

SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时,MSB先行或LSB先行并没有作硬件规定,但要保证两个SPI通信设备之间使用同样的协定,一般都会采用MSB先行模式。SPI每次数据传输可以为8位或者16位为单位,每次传输的单位数不受限制。

4.CPOL时钟极性和CPHA时钟相位

时钟极性CPOL是指SPI通信设备处于空闲状态时,SCK信号线的电平信号。CPOL为1时,空闲时SCK为高电平;为0时,空闲时SCK为低电平。

时钟相位CPHA是指数据的采样时刻。当CPHA=0时,MOSIO或者MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样,当CPHA=1时,数据在SCK的“偶数边沿”被采样。

所以,SPI共四种通信模式,可自行分析下面两图。主机与从机需要工作在相同的模式下才可以正常通信。

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

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

相关文章

机器学习-强化学习扩充

AI RL DL 基于Action,Enviroment给予Reward enviroment是对手 alpha go is supervised learning reinforcement learning 学两个agent,让两个互相沟通。 使用一些预定义的规则来判断对话的好坏。 更多应用 强化学习的困难就是奖励延迟…

android后端开发书籍,阿里内部核心Android进阶手册

努力的人,应该像好色那样好学 做Android开发的同学,对Gradle肯定不陌生,我们用它配置、构建工程,可能还会开发插件来促进我们的开发,我们必须了解Gradle,而不仅限于只会当配置构建工具,我想学习…

only office-用着确实很省心

小程一言 最近一直在使用各种办公软件进行学习笔记整理,但是在使用过程中,总感觉不是自己想要的一款软件,想要一款真正懂自己的软件,是一个选择的过程。最近在网上闲逛发现一款宝藏软件,好奇心驱使我去进行适用&#…

【MySQL】基本查询(表的增删改查)-- 详解

CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)。 一、Create insert [into] table_name [(column [, column] ...)] v…

Jenkins与服务器时间不一致

问题复现 今天在Jenkins上设置定时部署项目时,发现Jenkins显示的时间与Linux系统显示的时间不一致,这太难过了,必须保持颗粒度一致。 解决办法 ①查看当前服务器上的时区 因为是CentOS系统,直接通过以下命令即可查看时区&#xf…

Java Stream流指南:优雅处理集合数据

文章目录 一、为什么要使用stream流呢?二、如何获取Stream流?三、Stream流的中间方法四、Stream流的终结方法总结 一、为什么要使用stream流呢? 想必我们在日常编程中,会经常进行数据的处理,我们先来看看没有stram流时…

要在Javascript中实现表格新增行功能,且添加元素,增删操作

起始表格元素&#xff1a; <!-- table>(thead>tr>th*6)(tbody>tr>td*6) --><div class"container"><table id"myTable"><caption><h3>员工信息管理系统</h3></caption><thead><tr>&…

Java设计模式 | 七大原则之迪米特法则

基本介绍 一个对象应该对其他对象保持最少的了解类与类关系越密切&#xff0c;耦合度越大迪米特法则&#xff08;Demeter Principle&#xff09;又叫最少知道法则&#xff0c;即一个类对自己依赖的类知道的越少越好。也就是说&#xff0c;对于被依赖的类不管多么复杂&#xff…

一文带你了解MySQL之B+树索引的原理

前言 学完前面我们讲解了InnoDB数据页的7个组成部分&#xff0c;知道了各个数据页可以组成一个双向链表&#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表&#xff0c;每个数据页都会为存储在它里边儿的记录生成一个页目录&#xff0c;在通过主键查…

Langchain-Chatchat:离线运行的大模型知识库 | 开源日报 No.182

chatchat-space/Langchain-Chatchat Stars: 22k License: Apache-2.0 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现的开源、可离线部署的检索增强生成 (RAG) 大模型知识库项目。该项目是一个可以实现完全本地化推理的知识库增强方案&#xff0c;重点解决数据安全保护…

二分查找讲解

关于我为什么要写单独开一篇文章写二分,实际上那么多困难的算法,比如线段树,并查集等等都没有难倒我,我最近却被二分难倒了,而且是两次,两次在赛场上做不出来二分的应用题,于是我决定写一篇二分查找的算法总结.刚接触算法的时候本来是要写一篇的,但后面因为各种原因搁置了,现在…

Mybatis插入数据时有外键怎么办?

今天在写代码的时候遇到了一个问题&#xff1a; 比方说我的数据库如下&#xff1a; 其中work_position和auth都是外键&#xff0c;关联了另一张表。 但我现在要往mysql里插入一条数据&#xff0c;如下&#xff1a; insert into t_employee_info(salary, work_time, work_posi…