历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-10-25 来源:eefocus

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”中的数据。

推荐阅读

史海拾趣

宝乘(baocheng)公司的发展小趣事

在激烈的市场竞争中,宝乘公司始终坚持质量为本的原则。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品测试等各个环节都严格把关。正是这种对质量的执着追求,让宝乘的产品赢得了客户的信赖和好评。许多知名企业都成为了宝乘的长期合作伙伴,共同推动电子行业的发展。

Condor公司的发展小趣事

在激烈的市场竞争中,宝乘公司始终坚持质量为本的原则。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品测试等各个环节都严格把关。正是这种对质量的执着追求,让宝乘的产品赢得了客户的信赖和好评。许多知名企业都成为了宝乘的长期合作伙伴,共同推动电子行业的发展。

Advanced Microelectronic Products Inc公司的发展小趣事

随着公司业务的不断发展,AMP公司意识到与国际伙伴合作的重要性。于是,公司积极寻求与国际知名企业的战略合作,通过技术交流和资源共享,共同开发新型电子产品。这些国际合作不仅提升了AMP公司的技术水平,还进一步提升了其品牌影响力和国际知名度。公司因此获得了更多海外市场的认可,实现了业务的全球化布局。

Autotrol公司的发展小趣事

随着市场需求的不断变化,Autotrol公司意识到必须不断进行技术创新和产品升级,以满足客户的多样化需求。于是,公司投入大量研发资源,开发出了一系列特色产品,如为更大转矩而制的铜或铁齿轮传动链,以及为安静运行并省钱而特制的塑料齿轮传动链等。这些创新产品不仅提升了Autotrol在市场上的竞争力,也为公司带来了可观的收益。

BESTECH公司的发展小趣事

Autotrol公司成立于1964年,最初是一家领先的可定制小功率齿轮马达生产商。在初创时期,公司面临着激烈的市场竞争和技术挑战。然而,Autotrol凭借其卓越的技术实力和创新能力,成功开发出一系列具有竞争力的齿轮马达产品,逐渐在市场中脱颖而出。公司不断完善产品线,推出了永久磁铁同步电动机、滞后电动机和直流齿轮马达等,这些产品以其高效、稳定的性能赢得了客户的信赖。

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

在集成电路设计领域,技术的突破是赢得市场的关键。成都华微科技始终坚持以技术研发为核心,不断投入巨资进行技术研发和创新。经过多年的努力,公司在可编程逻辑器件、系统级芯片、存储器和模数/数模转换器(AD/DA)芯片等领域取得了重大突破,产品性能达到了国内领先水平。这些技术突破不仅为公司赢得了市场的认可,也提升了中国集成电路设计行业的国际地位。

问答坊 | AI 解惑

大家都来讨论一下B题吧 真难。。

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 音控小车问题 大家一起交流一下吧 可能都有帮助啊。。  …

查看全部问答>

有谁用过红色飓风二代FPGA开发板的么?求助~

我手里的CY1C12开发板上的芯片是FPGA的EP1C12Q240C8,今天我用一个小程序,试图点亮那四个七段数码管。用的动态显示。然而,当我配置管脚,下载到板上后,数码管能够顺序点亮,但是不是之前程序里面设计的数字,有些乱码的感觉。 我怀疑是管脚配置 ...…

查看全部问答>

XILINX FPGA 设计的点滴

XILINX FPGA 设计的点滴 1、为时钟信号选用全局时钟缓冲器BUFG 2、尽量只用一个时钟沿来寄存数据 3、除了用CLKDLL或DCM产生的时钟外不要在内部产生时钟 4、注意状态机编码的可靠性:状态机转移状态改变的位数越少,则功能越可靠。 5、逻辑 ...…

查看全部问答>

windows CE6.0 USB 键盘鼠标

大家好,我在订制系统的时候,想添加USB键盘鼠标的支持,请问一下 需要添加那些组建,Reg文件 和 BIB文件需要添加那些东西 ?…

查看全部问答>

evc中怎样编辑多国语言

evc中怎样编辑多国语言 比如说我要SetWindowText(_T(\"? ?? ??\")); 但在Evc中成了SetWindowText(_T(\"? ?? ??\")); …

查看全部问答>

io口扩展问题

我想做个控制板上16个继电器,再留出一个可控制的扩展板接口也是控制16个继电器的。 我目前想用16f877单片机进行控制,不知道io扩展芯片用什么好 有什么好的设计方案,请帮忙,谢谢!…

查看全部问答>

ARM9260EJ-S MMU初始化问题

我在初始化ARM9260EJ-S CPU(AT91SAM9260EJ-S)时遇到了一个问题,SDRAM 8M,按Section初始化,影射成8个块,每块1M,SDRAM的物理地址为0x20000000,未启动MMU时,SDRAM上的所有读写都正常,启动MMU之后,0x20500000开始的1M SDRAM读写就发现异常,MMU初 ...…

查看全部问答>

EE_FPGA V1.0 调试进展(2010.10.17更新)

正面:   反面: 目前进展: 1. 最小系统工作 2. LED工作 3. key工作 4. usb转串口驱动正常,串口工作正常   稍后上图,敬请关注     10.17更新 [ 本帖最后由 chenzhufly 于 2010-10-17 14:20 编辑 ]…

查看全部问答>

EQ 6 1 10混合动力电动汽车再生

EQ 6 1 10混合动力电动汽车再生制动控制策略研究…

查看全部问答>

【挖电源】3个厂家的LED灯T8管驱动电源

这是为LED灯T8管供电的隔离驱动电源,那个最长的驱动电源,装在灯管后,售价是在200元以上的,只是这些驱动电源在装进灯管时,都是用热缩套管套着得,这在欧美是不允许的,但是国内可以! [ 本帖最后由 dongguanze 于 2011-7-31 09:23 编辑 ]…

查看全部问答>