SPI总线学习笔记

news/2025/2/28 3:04:55/文章来源:https://www.cnblogs.com/smylog/p/18563689

1、SPI的定义以及特点
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

1):高速、同步、全双工、非差分、总线式
2):主从机通信模式

通信简单,速率快

2、通信协议介绍
SPI具有四根通信线:
(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高
image

SPI通信有4种不同的模式,从设备一般在出厂时就就是配置为某种模式,因此可以对我们的主设备的SPI模式进行配置,使得他们两个在同一个模式下。

通过CPOL(时钟极性,Clock Polarity)和CPHA(时钟相位,Clock Phase)来控制我们主设备的通信模式。CPOL参数规定了SCK时钟信号空闲状态的电平,CPHA规定了数据是在SCK时钟的上升沿被采样还是下降沿被采样。

模式0:CPOL= 0,CPHA=0。SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换

模式1:CPOL= 0,CPHA=1。SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换

模式2:CPOL= 1,CPHA=0。SCK串行时钟线空闲是为高电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换

模式3:CPOL= 1,CPHA=1。SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换。
下面展现了模式0下的SPI时序图
image
Input信号在时钟上升沿采样,Output在时钟的下降沿发送数据。

2、内部实现介绍

内部实现如上图。
SSPSR 是 SPI 设备内部的移位寄存器(Shift Register). 它的主要作用是根据 SPI 时钟信号状态, 往 SSPBUF 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以及 Channel-Width 所决定。

Bus-Width 的作用是指定地址总线到 Master 设备之间数据传输的单位.

例如, 我们想要往 Master 设备里面的 SSPBUF 写入 24 Byte 大小的数据: 首先, 给 Master 设备的配置寄存器设置 Bus-Width 为 Byte; 然后往 Master 设备的 Tx-Data 移位寄存器在地址总线的入口写入数据, 每次写入 1 Byte 大小的数据; 写完 1 Byte 数据之后, Master 设备里面的 Tx-Data 移位寄存器会自动把从地址总线传来的1 Byte 数据移入 SSPBUF 里; 上述动作一共需要重复执行 16 次.

Channel-Width 的作用是指定 Master 设备与 Slave 设备之间数据传输的单位. 与 Bus-Width 相似, Master 设备内部的移位寄存器会依据 Channel-Width 自动地把数据从 Master-SSPBUF 里通过 Master-SDO 管脚搬运到 Slave 设备里的 Slave-SDI 引脚, Slave-SSPSR 再把每次接收的数据移入 Slave-SSPBUF里.通常情况下, Bus-Width 总是会大于或等于 Channel-Width, 这样能保证不会出现因 Master 与 Slave 之间数据交换的频率比地址总线与 Master 之间的数据交换频率要快, 导致 SSPBUF 里面存放的数据为无效数据这样的情况.

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

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

相关文章

实验五 信息搜集技术实践

一.实验内容 对网站进行 DNS 域名查询,包括注册人、IP 地址等信息,还通过相关命令查询 IP 地址注册人及地理位置。 尝试获取 QQ 好友 IP 地址并查询其地理位置。 使用 nmap 对靶机环境扫描,获取靶机 IP 活跃状态、开放端口、操作系统版本、安装服务等信息。 使用 Nessus 对靶…

20222409 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1 本周学习内容学习了Metasploit渗透测试框架的使用方法,重点掌握了从搜索模块到执行攻击的完整流程。在实验中熟悉了标准操作步骤,如搜索模块、加载模块、设置参数和运行攻击。 实验中实践了下列典型漏洞:Vsftpd后门漏洞、Samba命令注入漏洞、Java RMI命令执行…

基于Atheros-CSI-tool的CSI采集软硬件环境

软硬件环境搭建 基于Atheros csi tool的采集环境搭建 硬件设备 信号发生和采集设备:TP-Link WDR4310v1/TP-Link WDR4900v2 控制主机 交换机 拓扑结构软件环境[!NOTE] 官方安装文档 官方固件 官方openwrt源码操作系统 在终端刷上openwrt固件openwrt-ar71xx-generic-tl-wdr4300-…

MATLAB图注意力网络GAT多标签图分类预测可视化

全文链接:https://tecdat.cn/?p=38321 原文出处:拓端数据部落公众号 本示例展示了如何使用图注意力网络(GATs)对具有多个独立标签的图进行分类。当数据中的观测值具有带有多个独立标签的图结构时,可以使用GAT来预测未知标签观测值的标签。GAT利用图结构和图节点上的可用信…

律师必备:一款免费开源工具,单文档30秒内提取案件关键信息!

一、工具简介 这款工具是一款基于自然语言处理(NLP)技术的开源软件,旨在帮助法律专业人士快速获取文档中的重要信息。无论是合同、判决书还是其他法律文件,该工具都能迅速分析并提取出相关的法律条款、案件事实、当事人信息等。二、客户案例 1、中型律所的高效管理: 一家中…

upload-labs-master第12关详细教程

upload-labs-master第12关详细教程,包含环境的配置,已经闯关的教程,图文并茂环境配置需要的东西phpstudy-2018 链接: https://pan.baidu.com/s/1D9l13XTQw7o6A8CSJ2ff9Q 提取码:0278 32位 vc9和11运行库 链接: https://pan.baidu.com/s/1pBV3W8UWJe0bmDl_cPFDQw 提取码:…

NOIP2024加赛7

镜的绮想 (mirror) 签到(没签成)。 对于\(y\)相同的实点和虚点的\(x\)取中间值,最大的就是答案。 时间复杂度\(O(n^2)\)。点此查看代码 #include<bits/stdc++.h> using namespace std; #define rep(i,s,t,p) for(int i = s;i <= t; i += p) #define drep(i,s,t,p) …

5秒生成精准法律摘要:助力律师高效应对案件材料,免费开源体验!

一、系统概述 在法律行业,律师通常面临大量案件材料的快速阅读和整理需求。然而,由于信息碎片化、案件复杂性高,快速提取关键信息成为一大难题。本开源软件基于先进的自动摘要算法(如TF-IDF、TextRank、Transformer模型),可在30秒内从单文档中生成高准确率(≥80%关键信息…

DBC中的Intel和Motorola字节序

https://mp.weixin.qq.com/s/PsCU43sSSSOzVHT3-mzMDw 本文目录: 一.Intel字节序 1. 信号布局:小端主机 2. 消息发送:小端主机 3. 消息接收:大端主机 4. 整体图示 二. Motorola字节序 1. 信号布局:大端主机 2. 消息发送:大端主机 3. 消息接收:小端主机 4. 整体图示 三.…

人工智能之深度学习基础——神经网络

神经网络概述 神经网络(Neural Network)是人工智能和深度学习的核心技术之一,其灵感来源于生物神经系统。它通过模拟人脑神经元之间的连接,解决复杂的任务,如分类、回归、生成、优化等。1. 神经网络的基本结构 1.1 神经元(Neuron)神经网络的基本单元类似于生物神经元。 …

1.python 基础

day01 计算机基础和环境搭建 目录day01 计算机基础和环境搭建1.计算机基础1.1 基本概念1.2 编程语言1.3 编译器/解释器2.学习编程的本质3.Python的介绍3.1 语言的分类3.2 Python3.3 Python的解释器种类(了解)3.4 CPython解释器的版本4.环境搭建4.1 安装Python解释器4.1.1 mac…