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

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.kler.cn/a/537901.html

相关文章:

  • 什么是中间件中间件有哪些
  • Level DB --- Iterator
  • 【Ubuntu】安装和使用Ollama的报错处理集合
  • 代码随想录day09
  • PyTorch Profiler 的使用
  • PAT乙级( 1009 说反话 1010 一元多项式求导)C语言版本超详细解析
  • 自然语言处理NLP_[1]-NLP入门
  • flask实现用户名查重,重复的用户名阻止注册,以及如何优化
  • 单调栈题目
  • 如何让虚拟机联上网
  • windows通过网络向Ubuntu发送文件/目录
  • 在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
  • 算法基础——容错
  • 蛋糕商城 Rust 版介绍二
  • 网络安全 | 保护智能家居和企业IoT设备的安全策略
  • 【AI】通过修改用户环境变量优化Ollama模型加载与访问
  • 计算机视觉-拟合
  • 聚焦 AUTO TECH China 2025,共探汽车内外饰新未来
  • 21.命令模式(Command Pattern)
  • FlinkCDC适配KADB失败实践
  • 学习 PostgreSQL 流复制
  • 背包问题常见bug
  • Qt—libpng warning: iCCP: known incorrect sRGB profile
  • Linux——网络(http)
  • 绿虫无人机3D光伏设计
  • 解决_ssl.so: cannot open shared object file: No such file or directory