历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2021年10月25日 | stm32专题十八:SPI框图及通讯过程

发布者:虚拟现实迷 来源: eefocus关键字:stm32  通讯过程 手机看文章 扫描二维码
随时随地手机看文章

stm32的SPI外设:

1 通讯引脚和结构框图


不同的SPI设备(由于挂载在不同的总线上),通讯速率不同

结构框图:

2 通讯速度


由控制寄存器CR1的BR[2:0]位来控制,主要就是对Fpclk(APB1时钟为72M,APB2时钟为36M)进行分频。

3 数据控制逻辑


SPI的MOSI及MISO都连接到数据移位寄存器上,数据移位寄存器的数据来源来源于接收缓冲区及发送缓冲区。


通过写SPI的“数据寄存器DR”把数据填充到发送缓冲区中。

通过读“数据寄存器DR”,可以获取接收缓冲区中的内容。

其中数据帧长度可以通过“控制寄存器CR1”的“DFF位”配置成8位及16位

模式;配置“LSBFIRST位”可选择MSB先行还是LSB先行。

stm32的SPI实际上有两个移位寄存器,一个发送一个接收。我们在发送数据时,实际上是把数据填入到发送缓冲区,再逐个发送。而接收过程,实际上就是把接收移位寄存器中的数据不断的读到缓冲区。

4 整体控制逻辑 CR1 / CR2

状态寄存器SR

5 通讯过程:

通讯过程:


控制NSS信号线,产生起始信号(图中没有画出);

把要发送的数据写入到“数据寄存器DR”中,该数据会被存储到发送缓冲区;

通讯开始,SCK时钟开始运行。MOSI把发送缓冲区中的数据一位一位地传输出去;MISO则把数据一位一位地存储进接收缓冲区中;

当发送完一帧数据的时候,“状态寄存器SR”中的“TXE标志位”会被置1,表示传输完一帧,发送缓冲区已空;类似地,当接收完一帧数据的时候,“RXNE标志位”会被置1,表示传输完一帧,接收缓冲区非空;

等待到“TXE标志位”为1时,若还要继续发送数据,则再次往“数据寄存器DR”写入数据即可;等待到“RXNE标志位”为1时,通过读取“数据寄存器DR”可以获取接收缓冲区中的内容。


假如使能了TXE或RXNE中断,TXE或RXNE置1时会产生SPI中断信号,进入同一个中断服务函数,到SPI中断服务程序后,可通


过检查寄存器位来了解是哪一个事件,再分别进行处理。也可以使用DMA方式来收发“数据寄存器DR”中的数据。

关键字:stm32  通讯过程 引用地址:stm32专题十八:SPI框图及通讯过程

上一篇:stm32专题十八:SPI协议
下一篇:stm32专题十八:详细分析SPI FLASH

推荐阅读

最近8K电视的消息频频出现,对于很多消费者来说,8K还是很遥远的事情,不过根据IHS Markit预测,8K电视市场将从2018年的不足2万台增长到2019年的43万台,2020年将接近200万台。  现在一些厂商也是在集中发力8K电视,三星、夏普、LG、创维、康佳、海信等电视厂商都做好了狂推8K电视的准备,完全一副加速淘汰4K的态势。这就尴尬了,4K电视很多家庭还没入...
在即将召开的第二届中国进口贸易博览会上,英飞凌科技将携采用其多项技术的3D打印人形机器人Roboy 2.0首度亮相中国。Roboy是个活泼可爱的“小男孩”,不仅会笑会闹,还会害羞卖萌,堪称机器人界的表情帝。更关键的是,他还多才多艺,从说相声到表演舞台剧样样全能。 Roboy与工程师团队和进博会吉祥物“进宝”合影 工程师团队积极备展,对Roboy进行出发...
Galaxy S20 FE 是今年发布的最实惠的 Galaxy S 系列智能手机。它具有 S 旗舰系列的所有核心功能,遗憾的是,某些早期用户遇到了屏幕的触摸问题。近日,三星已经通过软件更新对其进行了修复。上周,有报道称几批 Galaxy S20 FE 用户遇到了和触摸输入有关的问题。用户面临的问题包括重影触摸,无法区分敲击和手势以及根本不响应触摸等。据 SamM...
IAR for STM8 3.10**版全名IAR Embedded Workbench for STM8,IAR for STM8是一款即嵌入式工作平台,在有些地方也会看见IAR EWARM,IAR Stm8 主要用于ARM处理器的软件开发,是一款来自IAR官网的一种集成开发环境,支持市面上所有的STM8系列芯片,有一百多种之多没闪电吧小编这里整理了IAR for STM8 3.10完整安装包和补丁授权文件,另外还为...

史海拾趣

问答坊 | AI 解惑

关于C编程的两个问题

1一个while里是一个循环左移的语句,但是下面又需要另一个while,怎样让那个左移在完成一次后(即灯1-灯8依次亮完一次),跳出这个循环进入下一个循环? 2我写的while中包含while的语句,外层的延时可以设断电调试,为何内层的就设置不了断点呢?…

查看全部问答∨

手机防盗新招,悽惨尖叫吓小偷

发现创意:手机防盗新招,悽惨尖叫吓小偷 您有遗失手机的经验吗?不管是被偷或是弄丢,大概都希望拿到手机的人可以归还,英国一家厂商眼看英国一年失窃70万隻手机,推出一种新服务,如果你的手机不见了,手机会立刻删除重要资料,并且发出无比悽惨 ...…

查看全部问答∨

急!Jumping to 0x0013A01C??

在通过网络下载操作系统镜像时,目标机黑屏,显示Jumping to 0x0013A01C,开发主机接收不到信息。 按Attach,则出现以下错误:   CoreCon)  20:08:31 08/04/2009 中国标准时间:  Failed to connect debug message ...…

查看全部问答∨

C166 编译问题 高手帮忙啊!谢谢!

TASKING program builder v7.5 r6         SN00092710-035 (c) 2001 TASKING, Inc. Compiling demo.c cc166: F 002: protection error: FLEXlm license error: Cannot find license file(-1,359:2) feature = SW ...…

查看全部问答∨

开关切换

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 这个怎么实现开关切换,有哪位知道,解释一下  …

查看全部问答∨

DM642的外扩SDRAM连接问题

DM642本身内存用于视频处理时远远不够,需要外扩存储器。一个SDRAM是32位的,我查看资料都是选用两片SDRAM扩展成64位的,与DSP的EMIF连接。我想问只用一片SDRAM不扩展成64位的行吗。因为看书上写的,DM642的EMIF数据总线是64位的但是同时支持32位和 ...…

查看全部问答∨

【设计工具】VHDL上机手册(基于Xilinx ISE & ModelSim)

 ISE 软件的运行及ModelSim 的配置 2 创建一个新工程 3 创建一个VHDL源文件框架 4 利用计数器模板向导生成设计 5 仿真 6 创建Testbench波形源文件 7 设置输入仿真波形 8 调用ModelSim 进行仿真简介 9 调用ModelSim 进行行为仿真(Simu ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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