文章目录

  • SPI
  • I2C
    • I2C协议

SPI

SPI协议:Serial Peripheral Interface
SPI,是一种高速的全双工同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。
在大容量产品和互联型产品上,SPI接口可以配置为支持SPI协议或者支持I2S音频协议。SPI接口默认工作在SPI方式,可以通过软件把功能从SPI模式切换到I2S模式。




F207↓


SPI 接口一般使用 4 条线通信:
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。
两个数据线,一个数据线,一个片选线。

两个移位寄存器加上MISO和MOSI有点像环形寄存器,左边给右边传一个最高位并且左边移位,右边最高位被左边传来的最高位替代,并且移位,最低位移出来的又传给左边的移位寄存器的最低位。最终两个移位寄存器可以完全交换数据。

SPI 主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。

SPI 总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI 主模块和与之通信的外设备时钟相位和极性应该一致。


NSS

从选择(NSS)脚管理,软件模式下任意一个GPIO理论上都可以做NSS,不是固定的,因为这个可以连接多个SPI设备,比如PA2、PA3、PA4都作为NSS,进行片选,就可以连接三个从设备。


时钟信号的相位和极性
SPI_CR寄存器的CPOL和CPHA位来控制的。
CPOL:时钟极性,控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。0:SCK引脚在空闲状态保持低电平,1:SCK引脚在空闲状态保持高电平。
CPHA:时钟相位,1:SCK时钟的第二个边沿(CPOL位为0就是下降沿,1就是上升沿)进行数据位的采样,数据在第二个时钟边沿被锁存,如果0:,SCK时钟的第一边沿(CPOL位0下降沿,1上升沿)进行数据位采样,数据在第一个时钟边沿被锁存。
CPOL时钟极性和CPHA时钟相位组合选择数据捕捉的时钟边沿。


主从要匹配




I2C

两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。
它是由数据线SDA和时钟SCL构成串行总线,可发送和接收数据。在CPU与被控IC之间,IC与IC之间进行双向传送。高速IIC总线一般可达400kbps以上。
半双工

I2C协议

  1. 空闲状态 I2C总线的SDA和SCL两条信号线同时处于高电平状态
  2. 开始信号 SCL为高电平期间,SDA由高到低的跳变 启动信号是电平跳变时序信号,不是一个电平信号
  3. 停止信号 当SCL为高期间,SDA由低到高的跳变 停止信号也是一种电平跳变时序信号,而不是电平信号
  4. 应答信号 发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。低电平是有效应答,高电平是无效应答。 对于反馈有效应答ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
  5. 数据的有效性 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。就是说数据在SCL的上升沿到来之前就要准备好,并且在下降沿到了之前必须稳定。
  6. 数据传输 每个位和时钟都是对应的


片选:动词,单片机学科词汇,可以理解成选片。举个例子,有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。那这样的话,其他芯片就会对这些信号“漠不关心”,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS(chip select)或SS(slave select)。片选这个词即由此而来,指通过设置跳线,利用与门、或门、非门的组合来决定到底是哪几部分进入工作状态。

STM32F207SPI、I2C实验记录相关推荐

  1. FPGA实验记录五:I2C读取AHT10温湿度传感器

    FPGA实验记录五:I2C读取AHT10温湿度传感器 一.AHT10温湿度传感器 1. 简介 AHT10,新一代温湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了始于回流焊的双列扁平无引脚SMD封装 ...

  2. 自制pyBoard的I2C实验,应用MicroPython

    简 介: 由于pyBoard是基于STM32F4系列的单片机制作的MicroPython实验板,不挼发在原来利用STM32F045RG设计的pyBoard的基础上制作的MicroPython的实验板, ...

  3. 【Oracle RAC+DG实验】Oracle RAC+ASM+DataGuard配置实验记录+常见问题

    [Oracle RAC+DG实验]Oracle RAC+ASM+DataGuard配置实验记录+常见问题 1.环境规划: ---RAC环境介绍(primary database)            ...

  4. pyflink shell on yarn在per-job cluster模式下的实验记录

     实验记录: ①启动hadoop ②$FLINK_HOME/bin/pyflink-shell.sh yarn  使用了Table API的PyFlink完整代码如下: import tempfile ...

  5. Flink的scala+python的shell模式实验记录汇总

    根据[1],FLINK的shell有以下一些运行模式 ################################下面是scala-shell########################### ...

  6. 【视觉项目】【day1】8.20号实验记录(初步使用模板匹配)

    目录 [day1]8.20号实验记录(初步使用模板匹配) 模板匹配 单张图的代码 利用多个模板去匹配多张图的代码 写代码过程中遇到的问题 [day1]8.20号实验记录(初步使用模板匹配) 模板匹配 ...

  7. 【视觉项目】【day3】8.22号实验记录(利用canny检测之后的来进行模板匹配)

    [day3]8.22号实验记录(几乎没干正事的一天,利用canny检测之后的来进行模板匹配) 今天没搞代码,主要是问研究生学长工业摄像头的接法的,学长也不知道,明天问问老师... 晚上搞了一下cann ...

  8. 【深度学习】【U-net】医学图像(血管)分割实验记录

    医学图像分割实验记录 U-net介绍 数据集 实验记录 实验1 实验2(fail) 实验3(fail) 实验4(fail) 实验5(fail) 实验6(fail) 本项目仅用于大创实验,使用pytor ...

  9. 【课程作业】EA-CNN演化卷积神经网络实验记录

    large scale evaluation net -- CNN 全连接实验记录 实验相关 实验记录 实验1 实验相关 可以参考这篇博客https://blog.csdn.net/qq_406908 ...

  10. 【深度学习】图像匹配Siamese网络实验记录

    图像匹配Siamese网络实验记录 Ⅰ. Siamese 网络介绍 Ⅱ. 数据集 AT&T 分拣行李匹配图像 Ⅲ. 实验记录 A. 模型1 1. 实验1 2. 实验2 3. 实验3 B. 模型 ...

最新文章

  1. 李德毅获吴文俊人工智能最高成就奖 | AI日报
  2. 分布式数据库系统(DDBS) 概述
  3. IDE之VS:利用 Visual Studio中的IDE配置C++语言进行编程
  4. 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘
  5. 公务员注册账号,密码
  6. 静态链接库LIB和动态链接库DLL的区别 创建和示例
  7. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
  8. 一个简单的数据库工具类
  9. JDK11+Maven开发JavaFx启动问题:java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper
  10. 记录——《C Primer Plus (第五版)》第七章编程练习第三题
  11. 【NOIP1999】【codevs1083】Cantor表(找规律)
  12. WOE(weight of evidence, 证据权重)
  13. 银行客户交易行为预测:如何降低内存的使用量
  14. 基础数据类型的坑和集合及深浅copy
  15. 摄像机标定学习笔记(1)
  16. c语言用麦克风检测环境噪音分贝,IOS 通过麦克风检测声音分贝
  17. Prometheus metric
  18. 找回 坚果云 的 选择性同步 功能
  19. 移民新西兰,两个博客
  20. 【项目管理】团队绩效域管理

热门文章

  1. vant中修改用户的头像
  2. 中国行政划分代码(身份证号码前六位)
  3. 时间序列 ARMA 模型实战!
  4. CTF密码学之SM4
  5. uniapp内使用 mescroll
  6. 通过网店管家抓取奇门淘系订单数据
  7. 家庭水族馆,智能加热棒解决方案
  8. Vue 使用Echarts
  9. React 引入阿里矢量图标方法
  10. cs224n课后作业