SPI 协议学习

SPI 协议学习spi硬件协议学习

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1. SPI硬件知识

1.1 硬件连线

请添加图片描述

引脚含义如下:

引脚 含义
DO(MOSI) Master Output, Slave Input,
SPI主控用来发出数据,SPI从设备用来接收数据
DI(MISO) Master Input, Slave Output,
SPI主控用来发出数据,SPI从设备用来接收数据
SCK Serial Clock,时钟
CS Chip Select,芯片选择引脚

1.2 SPI控制器内部结构

这个图等我们看完后面的SPI协议,再回过头来讲解:

请添加图片描述

2. SPI协议

2.1 传输示例

假设现在主控芯片要传输一个0x56数据给SPI Flash,时序如下:
请添加图片描述

首先CS0先拉低选中SPI Flash,0x56的二进制就是0b0101 0110,因此在每个SCK时钟周期,DO输出对应的电平。
SPI Flash会在每个时钟周期的上升沿读取D0上的电平。

2.2 SPI模式

在SPI协议中,有两个值来确定SPI的模式。
CPOL:表示SPICLK的初始电平,0为电平,1为高电平
CPHA:表示相位,即第一个还是第二个时钟沿采样数据,0为第一个时钟沿,1为第二个时钟沿

CPOL CPHA 模式 含义
0 0 0 SPICLK初始电平为低电平,在第一个时钟沿采样数据
0 1 1 SPICLK初始电平为低电平,在第二个时钟沿采样数据
1 0 2 SPICLK初始电平为高电平,在第一个时钟沿采样数据
1 1 3 SPICLK初始电平为高电平,在第二个时钟沿采样数据
我们常用的是模式0和模式3,因为它们都是在上升沿采样数据,不用去在乎时钟的初始电平是什么,只要在上升沿采集数据就行。

极性选什么?格式选什么?通常去参考外接的模块的芯片手册。比如对于OLED,查看它的芯片手册时序部分:
请添加图片描述

SCLK的初始电平我们并不需要关心,只要保证在上升沿采样数据就行

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183355.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • C# 多线程详细讲解「建议收藏」

    C# 多线程详细讲解「建议收藏」C#多线程一、基本概念1、进程首先打开任务管理器,查看当前运行的进程:从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢?进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运

    2022年10月21日
  • 版本号命名规则_文件版本号命名规则

    版本号命名规则_文件版本号命名规则版本号的格式为X.Y.Z(又称Major.Minor.Patch),递增的规则为:X表示主版本号,当API的兼容性变化时,X需递增。Y表示次版本号,当增加功能时(不影响API的兼容性),Y需递增。Z表示修订号,当做Bug修复时(不影响API的兼容性),Z需递增。详细的规则如下:X,Y,Z必须为非负整数,且不得包含前导零,必须按数值递增,如1….

  • [新人向]MySQL和Navicat下载、安装及使用详细教程[通俗易懂]

    [新人向]MySQL和Navicat下载、安装及使用详细教程[通俗易懂]MySQL和Navicat下载和安装详细教程因为这些软件的安装很多都是纯英文,作为新手安装真的需要摸索好久,包括我自己,所以Pipi酱就把自己的经验分享给大家~MySQL的安装教程一、下载安装包链接:1.下载MySQL:https://dev.mysql.com/downloads/windows/installer/8.0.html这里我们直接下载第一个(24.4M),下载到任意目录即可。2、安装MySQL二、安装1、这里我们安装点击Yes2、选择Custom,然后Next3、

  • hashmap线程不安全问题_java多线程编程面试题

    hashmap线程不安全问题_java多线程编程面试题https://blog.csdn.net/swl1993831/article/details/91896811

    2022年10月11日
  • Windows ODT快速部署

    Windows ODT快速部署本来是购买了正版的VISIO批量许可,到VLSC中心以为直接下载个镜像包完活,结果发现有点复杂,特来记录。1.首先需要下载ODT工具下载路径https://docs.microsoft.com/en-us/DeployOffice/office2019/deploy2.下载后,需要配置一个XML文件,记录一下安装选项。微软有图形化的生成XML的方式:https://config.office.com/deploymentsettings3.生成后,将XML文件…

  • docker启动mysql命令_docker部署java环境

    docker启动mysql命令_docker部署java环境Docker启动Mysql一、单机版Mysql1、拉取官方镜像,镜像地址:/mysql/”>https://hub.docker.com//mysql/2、拉取镜像:dockerpullmysql3、准备Mysql数据存放目录,我这里是:/home/ljaer/mysql4、执行指令启动Mysqldocker@default:~$dockerrun–namemysql-v/home/ljaer/mysql:/var/lib/mysql-p3306:3

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号