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专题十八:SPI协议
下一篇:stm32专题十八:详细分析SPI FLASH
推荐阅读
史海拾趣
随着电子行业的快速发展,客户对环形变压器的性能要求也越来越高。Amveco公司敏锐地捕捉到了这一市场变化,加大了在技术创新和产品升级上的投入。公司研发团队不断攻克技术难关,成功开发出了一系列具有更高效率、更低损耗的环形变压器产品,满足了客户对高性能产品的需求。同时,公司还不断优化生产工艺,提高了产品的可靠性和稳定性。
Bridgelux在LED照明技术方面取得了重要突破。公司研发出了一种新型的LED芯片结构,提高了光效和稳定性,降低了成本。这一创新使得Bridgelux的产品在市场上更具竞争力,也为其赢得了众多客户的青睐。同时,公司还注重知识产权保护,积极申请专利,确保自身技术的领先地位。
作为一家有社会责任感的企业,奇力新始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,奇力新还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了奇力新的社会责任担当,也为其赢得了更多客户和合作伙伴的信任和支持。
在深海光缆领域,Corning Cable Systems公司也展现出了强大的实力。公司成功研发出适用于深海环境的光缆产品,并在多个国际项目中得到了广泛应用。这些深海光缆不仅具有优异的传输性能,还能够在极端恶劣的海底环境下保持长期稳定运行,为跨洋通信提供了可靠的保障。
随着Gateway业务的不断发展,公司开始寻求更多的市场曝光。1987年,Gateway在《Computer Shopper》杂志上投放了一版独特的广告,吸引了众多消费者的目光。1991年,公司推出了彰显其牧场起家背景的别具一格的奶牛花斑盒状商标,这一创新举措获得了全国消费者的认可,进一步提升了Gateway的品牌知名度和市场地位。
(请注意,由于篇幅限制,以上两个故事为简化版。在实际写作中,可以进一步扩展每个故事,包括更详细的背景信息、人物对话、市场反应等。)
由于篇幅所限,这里只提供了两个故事概要。如果需要更多关于Gateway或其他电子公司的发展故事,可以进一步研究和撰写。
千志电子一直注重技术研发和创新,不断推动产业升级。公司拥有一支专业的研发团队和先进的研发设备,致力于电阻技术的研发和创新。通过与高校和科研机构的合作,千志电子不断引进新技术、新工艺和新材料,提高产品的技术含量和附加值。同时,千志电子还注重知识产权的保护和管理,积极申请专利和注册商标,维护了自身的合法权益。
1一个while里是一个循环左移的语句,但是下面又需要另一个while,怎样让那个左移在完成一次后(即灯1-灯8依次亮完一次),跳出这个循环进入下一个循环? 2我写的while中包含while的语句,外层的延时可以设断电调试,为何内层的就设置不了断点呢?… 查看全部问答∨ |
|
发现创意:手机防盗新招,悽惨尖叫吓小偷 您有遗失手机的经验吗?不管是被偷或是弄丢,大概都希望拿到手机的人可以归还,英国一家厂商眼看英国一年失窃70万隻手机,推出一种新服务,如果你的手机不见了,手机会立刻删除重要资料,并且发出无比悽惨 ...… 查看全部问答∨ |
|
在通过网络下载操作系统镜像时,目标机黑屏,显示Jumping to 0x0013A01C,开发主机接收不到信息。 按Attach,则出现以下错误: CoreCon) 20:08:31 08/04/2009 中国标准时间: Failed to connect debug message ...… 查看全部问答∨ |
|
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 ...… 查看全部问答∨ |
|
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 ...… 查看全部问答∨ |