STM32F207SPI、I2C实验记录
文章目录
- 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协议
- 空闲状态 I2C总线的SDA和SCL两条信号线同时处于高电平状态
- 开始信号 SCL为高电平期间,SDA由高到低的跳变 启动信号是电平跳变时序信号,不是一个电平信号
- 停止信号 当SCL为高期间,SDA由低到高的跳变 停止信号也是一种电平跳变时序信号,而不是电平信号
- 应答信号 发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。低电平是有效应答,高电平是无效应答。 对于反馈有效应答ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。
- 数据的有效性 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。就是说数据在SCL的上升沿到来之前就要准备好,并且在下降沿到了之前必须稳定。
- 数据传输 每个位和时钟都是对应的
片选:动词,单片机学科词汇,可以理解成选片。举个例子,有很多芯片挂在同一总线上(像电脑里很多外设都是挂在总线上),但我们有时候需要对其中特定的某个芯片进行数据、地址或命令的独立传输,此时,我们需要有一个信号来告诉挂在总线上的芯片们,这些数据、地址是传给哪个芯片的。那这样的话,其他芯片就会对这些信号“漠不关心”,而目标芯片就知道这些数据是传给自己的从而做出反应。这个信号就叫做片选信号CS(chip select)或SS(slave select)。片选这个词即由此而来,指通过设置跳线,利用与门、或门、非门的组合来决定到底是哪几部分进入工作状态。
STM32F207SPI、I2C实验记录相关推荐
- FPGA实验记录五:I2C读取AHT10温湿度传感器
FPGA实验记录五:I2C读取AHT10温湿度传感器 一.AHT10温湿度传感器 1. 简介 AHT10,新一代温湿度传感器在尺寸与智能方面建立了新的标准:它嵌入了始于回流焊的双列扁平无引脚SMD封装 ...
- 自制pyBoard的I2C实验,应用MicroPython
简 介: 由于pyBoard是基于STM32F4系列的单片机制作的MicroPython实验板,不挼发在原来利用STM32F045RG设计的pyBoard的基础上制作的MicroPython的实验板, ...
- 【Oracle RAC+DG实验】Oracle RAC+ASM+DataGuard配置实验记录+常见问题
[Oracle RAC+DG实验]Oracle RAC+ASM+DataGuard配置实验记录+常见问题 1.环境规划: ---RAC环境介绍(primary database) ...
- pyflink shell on yarn在per-job cluster模式下的实验记录
实验记录: ①启动hadoop ②$FLINK_HOME/bin/pyflink-shell.sh yarn 使用了Table API的PyFlink完整代码如下: import tempfile ...
- Flink的scala+python的shell模式实验记录汇总
根据[1],FLINK的shell有以下一些运行模式 ################################下面是scala-shell########################### ...
- 【视觉项目】【day1】8.20号实验记录(初步使用模板匹配)
目录 [day1]8.20号实验记录(初步使用模板匹配) 模板匹配 单张图的代码 利用多个模板去匹配多张图的代码 写代码过程中遇到的问题 [day1]8.20号实验记录(初步使用模板匹配) 模板匹配 ...
- 【视觉项目】【day3】8.22号实验记录(利用canny检测之后的来进行模板匹配)
[day3]8.22号实验记录(几乎没干正事的一天,利用canny检测之后的来进行模板匹配) 今天没搞代码,主要是问研究生学长工业摄像头的接法的,学长也不知道,明天问问老师... 晚上搞了一下cann ...
- 【深度学习】【U-net】医学图像(血管)分割实验记录
医学图像分割实验记录 U-net介绍 数据集 实验记录 实验1 实验2(fail) 实验3(fail) 实验4(fail) 实验5(fail) 实验6(fail) 本项目仅用于大创实验,使用pytor ...
- 【课程作业】EA-CNN演化卷积神经网络实验记录
large scale evaluation net -- CNN 全连接实验记录 实验相关 实验记录 实验1 实验相关 可以参考这篇博客https://blog.csdn.net/qq_406908 ...
- 【深度学习】图像匹配Siamese网络实验记录
图像匹配Siamese网络实验记录 Ⅰ. Siamese 网络介绍 Ⅱ. 数据集 AT&T 分拣行李匹配图像 Ⅲ. 实验记录 A. 模型1 1. 实验1 2. 实验2 3. 实验3 B. 模型 ...
最新文章
- 李德毅获吴文俊人工智能最高成就奖 | AI日报
- 分布式数据库系统(DDBS) 概述
- IDE之VS:利用 Visual Studio中的IDE配置C++语言进行编程
- 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘
- 公务员注册账号,密码
- 静态链接库LIB和动态链接库DLL的区别 创建和示例
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
- 一个简单的数据库工具类
- JDK11+Maven开发JavaFx启动问题:java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper
- 记录——《C Primer Plus (第五版)》第七章编程练习第三题
- 【NOIP1999】【codevs1083】Cantor表(找规律)
- WOE(weight of evidence, 证据权重)
- 银行客户交易行为预测:如何降低内存的使用量
- 基础数据类型的坑和集合及深浅copy
- 摄像机标定学习笔记(1)
- c语言用麦克风检测环境噪音分贝,IOS 通过麦克风检测声音分贝
- Prometheus metric
- 找回 坚果云 的 选择性同步 功能
- 移民新西兰,两个博客
- 【项目管理】团队绩效域管理