历史上的今天
返回首页

历史上的今天

今天是:2024年09月17日(星期二)

2021年09月17日 | KST-STM学习之I2C+SPI

2021-09-17 来源:eefocus

只能说跟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查询方式接收和发送的注意点

这里写图片描述

推荐阅读

史海拾趣

福斯特(FIRST)公司的发展小趣事
测量方向盘的转动角度和速度,通过电位计的变化或光学传感器的光信号变化来反映方向盘的旋转情况。这些数据对于ESP系统判断车辆的转向意图至关重要。
Diodes Incorporated公司的发展小趣事

在公司的发展过程中,Diodes Incorporated与富昌电子建立了长期稳定的合作关系。富昌电子作为Diodes Incorporated的全球分销商之一,不仅为公司提供了广阔的市场渠道,还在产品推广和技术支持等方面给予了大力支持。这种紧密的合作关系,不仅促进了双方业务的共同发展,也为Diodes Incorporated在电子行业中树立了良好的品牌形象。

American Custom Components公司的发展小趣事

近年来,电子行业面临着原材料价格上涨、市场竞争激烈等挑战。American Custom Components公司也不例外,面临着成本压力和市场份额的下降。为了应对这些挑战,公司采取了一系列措施,包括优化生产流程、降低生产成本、加强研发创新等。同时,公司还积极拓展新的应用领域和市场,寻找新的增长点。这些努力使得公司在行业竞争中保持了一定的优势。

EPSON公司的发展小趣事

EPSON公司,原名精工爱普生,成立于1942年,最初以制造手表起家。然而,随着技术的不断进步和市场需求的变化,EPSON逐渐将业务扩展到电子领域。在创始人及其团队的带领下,EPSON凭借其卓越的技术创新能力,成功研发出了一系列具有划时代意义的电子产品,如世界上第一台微型打印机和喷墨打印机,奠定了其在电子行业的领先地位。

Bussmann (Eaton)公司的发展小趣事

2011年,Bussmann的母公司Cooper集团被EATON集团收购,Bussmann随之成为EATON旗下的一个产品系列。EATON集团作为一家多元化的动力管理企业,在电气和航空航天领域有着深厚的积累。通过整合EATON集团的资源和技术优势,Bussmann得以在更广泛的领域开展业务,并进一步提升其在电路保护领域的竞争力。

Fuji Electric Co Ltd公司的发展小趣事

随着全球市场的不断扩张,Bussmann也加快了其全球化布局的步伐。目前,Bussmann的产品已在全球170多个国家销售,为各地的客户提供优质的电路保护解决方案。同时,为了满足不同客户的需求,Bussmann不断扩展其产品线,现已涵盖电气电源熔断器、电子电路板及小型熔断器、熔丝盒、熔丝座及断开开关等多个品类。这些产品的推出不仅丰富了Bussmann的产品线,也使其能够更好地满足市场的多元化需求。

以上五个故事展示了Bussmann (Eaton)公司在电子行业发展的不同阶段和关键节点,体现了其技术创新、市场拓展和全球化布局的重要历程。这些故事不仅反映了Bussmann在电路保护领域的领先地位,也展示了其在应对市场变化和客户需求方面的灵活性和实力。

问答坊 | AI 解惑

无线电源控制系统

采用AT89C2051单片机作为下位机主控芯片…

查看全部问答>

用mini2440排队机应用的几张图片

该系统采用的是Qt4做的应用程序,供银行排队叫号系统使用,图片上的前端应用,实际还有Qt4编写的后台设置程序(需通过“秘密通道”打开) 外接输入输出设备有: 1. 银联刷卡器 2. USB小键盘 3. 串口打印机(串口控制模块) 4. 超声波触摸屏(串口 ...…

查看全部问答>

RC消火花电路的理解

最近,想研究一下rc电路,并阅读了不知道谁写的一本书《RC电路及其应用》,有了一点体会,描述如下. RC电路一大应用时消火花电路。产生火花电路大都是应用于感性负载,如电机、继电器线圈等 如图所示,当开关k断开时候,根据楞次定律线圈两端产 ...…

查看全部问答>

使用VxWorks进行串口通信时遇到的诡异问题(基于Vmware)

  先说一下环境,使用Vxworks5.5+Tornado2.2,BSP是Pentium4的,因为没有奔四的机器,所以在机器上用Vmware虚拟了一个机器,编译好的自启动vxworks镜像就在虚拟机上运行。一共有3台PC作了这样的设置,现在只拿两台作测试,用串口直连线连接两台PC ...…

查看全部问答>

车载GPS A3/A4方案合作

因为客户需要,我们准备开发A4/A3的车载GPS方案。 现在寻求硬件高手合作,如能提供A4/A3开发平台及相关资源的,可以额外另付一定的现金报酬。 另外,如果有方案公司愿意合作的,可以加我QQ详谈,46317857。…

查看全部问答>

RDA 方法

请问高手:CoCreateInstance()函数必须需要COM支持的系统吗?我试写了一段 rda server ce同步的数据库程序,测试发现根本走不下去,不知道怎么回事?…

查看全部问答>

请问:在IAR中仿真STM32F时怎么查看我的延时程序占用了多长时

                                 AVRSTUDIO中有STOPWATCH,在IAR中没找到.…

查看全部问答>

关于晶振1问?

各位大虾:MSP430F2012有自带的LF振荡电路,只要在外部XTin加入晶体就可以让它起振,从而给430提供时钟了 。请问能用带压控的高温晶体振荡器做为MSP430的时钟输入源吗?能的话怎样做?谢谢。…

查看全部问答>

Beaglebone DS18B20 1602LCD(3.3V)

小弟最近在做一个基于Beaglebone的GSM无线温度报警的设计,温度传感器用DS18B20传感器,显示用1602,现在1602能够在正常的显示,但是DS18B20不能正确检测到初始化信号。(接的上拉电阻,一直检测到1,检测不到0)...原因可能因为使用usleep不准确所 ...…

查看全部问答>

关于simpliciTI中的晶振设定问题

在simpliciTI中的例程中没有找到关于晶振的设定,但是却可以通讯,原因是什么呢?…

查看全部问答>