KST-STM学习之I2C+SPI

发布者:Shuangfei最新更新时间:2021-09-17 来源: eefocus关键字:KST-STM  I2C  SPI 手机看文章 扫描二维码
随时随地手机看文章

只能说跟51的差不了多少,在这里仅仅记录下主要注意事项吧。


1、I 2 C 通信分为标准模式 100kbit/s、快速模式 400kbit/s 和高速模式 3.4Mbit/s。因为所有的I 2 C 器件都支持标准模式,但却未必支持另外两种速度。

所以作为通用的 I 2 C 程序我们选择100k 这个速率来实现,也就是说实际程序产生的时序必须小于等于 100k 的时序参数,有特殊速度需求的器件再针对性写高速通信程序。


2、I 2 C 引脚属于开漏并联结构,并且 STM32 的 GPIO 端口引脚设置为开漏输出时,可以直接从输入数据寄存器获取 I/O 电平状态,因此将 I 2 C 引脚配置为开漏输出模式。


3、由于 I 2 C 总线空闲时默认为高,初始化时还需要设置引脚输出高电平,不过设置引脚输出高电平并不是在初始化之后,而应该放在初始化之前。


这是因为 STM32 在上电复位时 I/O 口为高阻状态,复位结束后,GPIO 端口引脚默认为浮空输入,由于上拉电阻的存在,I 2 C 引脚被拉高;


当程序执行到 I 2 C 初始化时又被配置为开漏输出模式,由于 GPIO 端口输出数据寄存器初始值默认全为 0,初始化后 I/O 口输出低电平,如果初始化之后再设置引脚输出高电平,势必会在I/O 口上产生一个低电平的毛刺。


如果在 I 2 C 引脚初始化之前先设置输出数据寄存器相应位为高,初始化 I 2 C 引脚后,I/O 口会直接输出高电平,避免毛刺信号。

这里写图片描述

4、实际上 I 2 C 的配置过程比较复杂,比如要充分考虑冲突和仲裁等处理方式,但是那些处理方式在绝大多数场合用不到。STM32F103 系列自带的 I 2 C 协议模块设计的过于复杂,对于实际应用来讲实用性不强,因此实际应用 I 2 C 时,还是用 IO 口直接模拟协议。


5、即在 SCK 的第一个时钟边沿还要早半个时钟周期时,SPI 主机就已经开始输出数据了,但是 SPI 从机却是在片选 SSEL 置低后开始输出数据,总之 SPI 设备输出数据要早于 SCK,这也是为什么 SPI 通信时要先使能片选。

这里写图片描述

这里写图片描述

6、SPI 和 I2C的对比

这里写图片描述

7、SPI接口

这里写图片描述

8、引脚连接

这里写图片描述

9、SPI外设

这里写图片描述

SP3需要注意的地方

这里写图片描述

这里写图片描述

NSS需要注意的地方

这里写图片描述

几个需要注意的地方(标黄的)

这里写图片描述

10、配置流程

这里写图片描述

11、SPI的发送接收与USART的对比

这里写图片描述

12、数据传送过程

这里写图片描述

发送完成的判断,需要注意

这里写图片描述

那么应该怎么判断呢?

这里写图片描述

假如在TXE = 0 的时候仍然向SPI_DR写入数据

这里写图片描述

13、霸气。。。

这里写图片描述

14、SPI查询方式接收和发送的注意点

这里写图片描述

关键字:KST-STM  I2C  SPI 引用地址:KST-STM学习之I2C+SPI

上一篇:KST-STM32学习之W25Q128
下一篇:KST-STM32学习之USART

推荐阅读最新更新时间:2024-11-09 10:18

联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏
SSD1306/SSD1315 OLED 0.96的128x64 OLED液晶屏是嵌入式应用中最常见的一种屏幕, 这种屏幕常见的pin脚类型有两种: I2C和SPI, 驱动通常是SSD1306, 最近会有一些是SSD1315 I2C类型的OLED只有4个pin脚, 不可修改连接模式, 比较好辨认 SPI类型的OLED有6/7/8pin几种类型, 最常见的是7pin, 带协议选项的模块, 这种模块的背面PCB会有三种模式的选择说明, 后面列出的Rx代表那些位置需要焊接电阻, 通常这些电阻阻值都是5KR, 默认出厂都是4线SPI的模式 在SPI模式下, SSD1306和SSD1315的驱动方式是一样的. 因为W806可以使用
[单片机]
联盛德 HLK-W806 (八): 4线<font color='red'>SPI</font>驱动SSD1306/SSD1315 128x64 OLED液晶屏
STM32学习笔记 | SPI通信异常分析
SPI,全称为 Serial Peripheral Interface(串行外设接口) ,是一种用于短距离通信的同步串行通信接口,主要应用在嵌入式系统。 SPI的应用场合很广,显示模组、时钟芯片、存储芯片、温度传感器等众多器件都有使用SPI接口通信。这些器件通常作为从设备,STM32作为主设备来控制它们。 STM32 SPI基础内容 绝大部分STM32芯片都有多个SPI外设,它可与外部SPI器件进行半双工/全双工同步串行通信。 1. SPI特性 三条线全双工、双线单工同步传输 支持 8 位或 16 位传输帧格式选择 支持主模式或从模式操作 可编程的时钟极性和相位 支持 MSB 或 LSB 数据顺序 支持DMA收
[单片机]
STM32学习笔记 | <font color='red'>SPI</font>通信异常分析
STM32 SPI基础内容
SPI,全称为 Serial Peripheral Interface(串行外设接口),是一种用于短距离通信的同步串行通信接口,主要应用在嵌入式系统。 SPI的应用场合很广,显示模组、时钟芯片、存储芯片、温度传感器等众多器件都有使用SPI接口通信。 这些器件通常作为从设备,单片机作为主设备来控制它们,今天就结合STM32来分析一下SPI常见通信有异常的问题。 STM32 SPI基础内容 绝大部分STM32芯片都有多个SPI外设,它可与外部SPI器件进行半双工/全双工同步串行通信。 1. SPI特性 三条线全双工、双线单工同步传输 支持 8 位或 16 位传输帧格式选择 支持主模式或从模式操作 可编程的时钟极性和相位 支持 MS
[单片机]
STM32 <font color='red'>SPI</font>基础内容
s3c2440裸机-spi编程-1-spi协议
1.spi概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。 2、SPI优点 支持全双工通信(SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出) 数据传输速率快(I2c一般只能到100-400Khz, SPI高达上百Mhz) 3、缺点 没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。 4、特点 1):高速、同步、全双工、非差分、总线式 2):主从机通信模式 2.硬体框架 SPI协议,硬件框架如下: SCK:提供时钟 DO:
[单片机]
STM32G0开发笔记:SPI接口的基本使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。 1 SPI配置 以下为设置SPI1,引脚映射为PA5\6\7,使用软件控制CS-PA4; 1/* Enable SPI1 Periph and gpio clocks */ 2 rcc_periph_clock_enable(RCC_SPI1); 3 rcc_periph_clock_enable(RCC_GPIOA); 4 5/* Configure GPIOs: 6 * 7 * SCK=PA5 8 * MOSI=PA7 9 * MISO=PA6 10 * 11
[单片机]
STM32G0开发笔记:<font color='red'>SPI</font>接口的基本使用
基于STM32的SPI通信
引言 SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。 介绍 SPI简介 SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器(MCU)或数字信号处理器(DSP)等主设备与外部设备之间进行通信。SPI的设计旨在实现高速数据传输和简单的硬件实现。 SPI接口通常由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备控制通信的时序和数据传输,而从设备根据主设备的指令进行响应。SPI通信基于全双工传输
[单片机]
基于STM32的<font color='red'>SPI</font>通信
STM32单片机的ADS1115通过模拟I2C驱动
注意:本部分代码需要只是ADS1115的部分程序(一些用到的数组在此没有写),模拟II2C的各程序并未给出,大家根据需要进行裁剪,代码完全开源,希望能帮到大家,也希望大家乐于分享。 调试时需特别注意I2C的通信问题,特别是应答信号的使用需要特别关注,本人的程序之前出错全是因为从机的应答信号的未使用造成。 收获:对于I2C通信协议的理解更加深刻,对ADS1115也能进行单通道的使用。I2C的开始、发送/读写、应答、结束等一定要严格按照时序操作,ADS的操作还有所欠缺,仅仅会配置单通道,对于其他配置并没有关注,最近要把多通道的和阈值的配置也写好,到时再更新 附录代码: #define CMD_Write 0x90 ////写
[单片机]
STM32单片机的ADS1115通过模拟<font color='red'>I2C</font>驱动
SPI存储器的结构特点及在自动测试仪上实现测试的方法研究
本文分析了SPI 存储器的结构特点和测试难点,提出了一种基于并行转串行逻辑的SPI 存储器算法图形自动产生的方法,并以SPI EEPROM 芯片AT25HP512 为例,实现了测试程序开发。实验证实,该方法可以克服SPI 存储器地址算法自动产生的困难,对该类芯片测试具有通用性。 0 引言 串行存储器大多采用I2C 或SPI 接口进行访问,其中以SPI 接口的芯片最多,主要包括EEPROM、FLASH memory、FRAM等类型。与并行存储器相比,串行存储器引脚少、体积小、易于扩展、与单片机或控制器连接简单、工作可靠,而且大多拥有掉电保持数据的特性,所以越来越多地用在各类电子产品和工业测控系统中。但SPI 存储器所有输入的内容
[测试测量]
<font color='red'>SPI</font>存储器的结构特点及在自动测试仪上实现测试的方法研究
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved