当前位置: 首页 > news >正文

ARM嵌入式学习--第十四天(SPI)

SPI

-介绍

    SPISerial Peripheral Interface)串行外围设备接口。是由Motorola公司开发,用来在微控制器和外围设备芯片之间提供一个低成本,易使用的接口。这样接口可以用来连接存储器、AD转换器、DA转换器、实时时钟、LCD驱动器、传感器、音频芯片、甚至其它处理器

    与标准的串行端口不同,SPI是一个同步协议接口所有传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,接收数据的外设(从设备)使用时钟对串行比特流的接收进行同步化,当有多个芯片连接到主机的同一个SPI接口上,这时主机通过触发从设备芯片的片选信号输入引脚[片选管脚]来选择接收数据的从设备,没有被选中的外设将不会参与到SPI传输。

    SPI主要使用4个信号:

        1.主机输出/从机输入MOSI:Master Output Slave Input

        2.主机输入/从机输出MISO:Master Input Slave Output

        3.串行时钟SCLK或SCK

        4.外设片选管脚CS

-主机与从机的连接方式

-主机和从机数据的传输

 

     主机和从机都包含一个串行移位器,主机通过向它的SPI串行移位器写入一个字节发起一次传输。移位通过MOSI信号线将字节传输给从机,从机也将自己的移位器中的内容通过MISO信号线返回给主机。这样俩个移位寄存器中的内容就被交换了。从机的写操作和读操作同时完成,因此SPI成为一个很有效的协议。

(注意:如果进行写操作,主机只需忽略收到的字节;反过来,如果主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输

-SPI时序

     通过SPI总线在主机和从机之间传输数据,必须保证主机发出的时序和从机要求的时序保持一致才可以

-时钟极性

    Clock Polarity:简称CPOL或POL,指SPI CLK在空闲时的电平时0还是1

-时钟相位

    Clock Poalrity:简称CPHA或PHA,指数据采样的时候,时CLK的第一个边沿还是第二个边沿

        1.CPHA=0,CLK的第一个边沿采样

        2.CPHA=1,CLK的第二个边沿采样

    将CPOL和CPHA进行组合,可以得到SPI主要有四种模式的时序

    对应的时序图如下:

 

-SPI的四种时序

--SPOL=0,CPHA=0

    SPI CLK 空闲时为低电平,所以CPOL=0,CLK的第一个边沿采样,所以SPHA=0

 

--SPOL=0,CPHA=1

SPI CLK 空闲时为低电平,所以CPOL=0,CLK的第二个边沿采样,所以SPHA=1

 

--SPOL=1,CPHA=0

SPI CLK空闲时为高电平,所以CPOL=1,CLK第一个边沿采样,所以CPHA=0

--SPOL=1,CPHA=1

 SPI CLK空闲时为高电平,所以CPOL=1,CLK第二个边沿采样,所以CPHA=1

http://www.lryc.cn/news/533639.html

相关文章:

  • DeepSeek-V2 论文解读:混合专家架构的新突破
  • 5分钟了解回归测试
  • 路由器如何进行数据包转发?
  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(一)
  • iOS 自动翻滚广告条(榜单条)实现方案
  • TensorFlow深度学习实战(7)——分类任务详解
  • 动态规划问题——青蛙跳台阶案例分析
  • element-ui使用el-table,保留字段前的空白
  • kamailio中路由模块汇总
  • 如何使用 DeepSeek 搭建本地知识库
  • 网络HTTP详细讲解
  • 《Origin画百图》之边际分布曲线图
  • 【Milvus】向量数据库pymilvus使用教程
  • React 生命周期函数详解
  • 第 26 场 蓝桥入门赛
  • 组合(力扣77)
  • 网络工程师 (22)网络协议
  • Linux之文件IO前世今生
  • 如何在Windows中配置MySQL?
  • Kafka 入门与实战
  • 数学知识学习1
  • 【AI日记】25.02.08
  • Lecture8 | LPV VXGI SSAO SSDO
  • Java中实现定时锁屏的功能(可以指定时间执行)
  • Java集合List详解(带脑图)
  • [实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试
  • (14)gdb 笔记(7):以日志记录的方式来调试多进程多线程程序,linux 命令 tail -f 实时跟踪日志
  • Sentinel的安装和做限流的使用
  • 四柱预测学
  • 【个人开发】macbook m1 Lora微调qwen大模型