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 引脚属于开漏并联结构,并且 STM32GPIO 端口引脚设置为开漏输出时,可以直接从输入数据寄存器获取 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查询方式接收和发送的注意点

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值