江协科技stm32————11-4 SPI通信协议

news2024/11/15 2:09:13

目录

SPI外设简介

 SPI框图

波特率控制

SPE(SPI使能)

配置主从模式

四种模式的选择

发送和接收数据缓冲区状态

I2C基本结构 

1. SPI模式选择

2. 时钟极性和相位(CPOL和CPHA)

3. 波特率设置

4. 数据帧格式

5. NSS引脚管理

6. 全双工/半双工模式

7. 多主模式

8. 中断和DMA配置

9. 启动SPI外设

10. 配置GPIO引脚

11. 错误处理机制

 主模式全双工连续传输

 非连续传输

SPI外设简介

SPI1挂载在APB2是,PCLK是72M

SPI2挂载在APB1是,PCLK是36M

只了解SPI做主机的情况,一般采样全双工

可以使用DMA自动搬运数据

I2S(音频传输)

  • 全双工通信:SPI可以同时发送和接收数据。
  • 主从模式:设备可以配置为主模式(提供时钟信号)或从模式(接收时钟信号)。
  • 时钟极性和相位:通过配置时钟极性(CPOL)和相位(CPHA),用户可以选择何时进行数据采样和发送。
  • 数据帧格式:数据帧可以配置为8位或16位,并且可以选择MSB(最高有效位)优先或LSB(最低有效位)优先发送数据。

 SPI框图

移位寄存器(低位先行的话)右边的数据低位,一位一位的从MOSI移出去,MISO的数据一位一位的移入左边的数据高位 (LSBFIRST控制位可以控制0:高位先行或1:低位先行)

可以参考之前的移位示意图

连续数据流实现过程:

当移位寄存器没有数据要移位时,发送缓存区TDR中的数据立刻转入移位寄存器开始移位,置TXE为1(发送寄存器空),下一个数据转入TDR等候,移位寄存器中有数据时,产生时钟信号,通过MOSI移出数据,同时,MISO移入数据,移出和移入的数据同时完成,将移入的数据转入接收缓存区RDR,置RXNE为1(接收寄存器非空),然后在下个数据到来前尽快读取RDR的数据,可以实现连续输出

波特率控制

 

SPE(SPI使能)

 

配置主从模式

 

四种模式的选择

 

发送和接收数据缓冲区状态

 

I2C基本结构 

1. SPI模式选择

  • 主从模式(Master/Slave)
    • 选择SPI作为主机(Master)或从机(Slave)。
    • 在主模式下,SPI生成时钟信号(SCK);在从模式下,SPI接收时钟信号。

2. 时钟极性和相位(CPOL和CPHA)

  • 时钟极性(CPOL)
    • 决定空闲状态下时钟线(SCK)的电平(高或低)。
  • 时钟相位(CPHA)
    • 决定数据采样的时间点,即在时钟的上升沿或下降沿采样数据。
  • 模式配置
    • 四种模式组合(CPOL = 0/1 和 CPHA = 0/1),决定数据和时钟之间的关系。

3. 波特率设置

  • 选择SPI通信的时钟速率,通常由主设备通过波特率预分频器来设置。
  • 设置的速率必须适合所连接的从设备,以确保正确的数据传输。

4. 数据帧格式

  • 数据位长度
    • 选择数据帧的长度,通常为8位或16位。
  • 字节顺序
    • 配置数据帧的传输顺序,可以选择MSB(最高有效位)优先或LSB(最低有效位)优先。

5. NSS引脚管理

  • 硬件管理
    • 在硬件模式下,由SPI控制NSS引脚自动选择从设备。
  • 软件管理
    • 在软件模式下,NSS引脚由软件手动控制,主设备通过软件命令选择从设备。
  • 从设备选择
    • 只有NSS引脚为低电平时,从设备才会响应主设备的指令。

6. 全双工/半双工模式

  • 全双工模式
    • SPI可以同时发送和接收数据。
  • 半双工模式
    • SPI只能在同一时刻发送或接收数据,而不是同时进行。

7. 多主模式

  • 如果SPI总线上可能存在多个主设备,则需要配置多主模式以避免总线冲突。
  • 采用总线仲裁机制来处理多个主设备的竞争。

8. 中断和DMA配置

  • 中断配置
    • 可以配置SPI的传输完成、接收完成等中断,以提高通信效率。
  • DMA配置
    • 若数据量较大,可以使用DMA控制器来自动传输数据,减轻CPU的负担。

9. 启动SPI外设

  • 在所有配置完成后,通过设置SPI控制寄存器中的使能位(SPE)来启动SPI外设,开始通信。

10. 配置GPIO引脚

  • 配置用于SPI通信的GPIO引脚,包括SCK、MOSI、MISO和NSS。
  • 将这些引脚配置为合适的模式(如复用功能模式),并设置正确的电气特性(如推挽输出、开漏输出、上拉/下拉电阻等)。

11. 错误处理机制

  • 配置SPI错误处理功能,如溢出错误、帧格式错误等,并定义相应的错误处理流程。

 主模式全双工连续传输

发送数据1,发送数据2,接收数据1,发送数据3,接收数据2,发送数据4,接收数据3

 非连续传输

 

配置SPI3,SCK默认高电平

在想发送数据时,若TXE=1,TDR空,则由软件写入0xF1至SPI_DR,此时TXE变为0,TDR的值为0xF1,会立即向移位寄存器进行传输,TXE置回1,等待接收完成,RXNE置1,再写入下一个数据………… 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Steam游戏截图方法

Steam游戏截图方法 截图快捷键 Steam游戏自带截图功能,在游戏中无需复杂的快捷键,仅需按下F12快捷键便可立即截图,官方说明如下。下文介绍使用方法。 查看截图 退出游戏后,在Steam界面点击查看 - 截图,即可查看截…

AndroidLogger 适配好了,但没法上架

看到有网友还在用之前的 AndroidLogger 版本,让我感动再次花了 2个月适配新的Notepad,总算搞完了,但是Notepad作者反了,我没法上架啊。 演示视频地址: Notepad安卓日志插件,支持文件管理和截屏&#xff0c…

无需前端技能:如何使用 Amis 框架简化页面开发

Amis 是一个由百度开源的前端低代码框架,它允许开发者通过 JSON 配置文件来快速生成各种后台管理页面。Amis 的设计理念是通过配置而非编码来实现页面的构建,这使得即使是不熟悉前端技术的开发者也能快速上手。Amis 提供了丰富的组件库和模板&#xff0c…

Mqtt消费端实现的几种方式

此处测试的mqtt的Broker是使用的EMQX 5.7.1&#xff0c;可移步至https://blog.csdn.net/tiantang_1986/article/details/140443513查看详细介绍 一、方式1 添加必要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spr…

蒸馏之道:如何提取白酒中的精华?

在白酒的酿造过程中&#xff0c;蒸馏是一道至关重要的工序&#xff0c;它如同一位技艺精细的炼金术士&#xff0c;将原料中的精华提炼出来&#xff0c;凝聚成滴滴琼浆。今天&#xff0c;我们就来探寻这蒸馏之道&#xff0c;看看豪迈白酒&#xff08;HOMANLISM&#xff09;是如何…

Linux 学习之路 - 信号的保存

前面已经介绍过信号的产生&#xff0c;本文将继续介绍信号的保存与处理。 1、上篇文章的遗留问题 从上篇文章(Linux学习之路 -- 信号概念 && 信号的产生-CSDN博客)中&#xff0c;其实还遗留了一些问题。OS在接受到信号后&#xff0c;大部分的进程的处理方式都是终止进…

合宙低功耗4G模组Air780E——产品规格书

Air780E 是合宙通信推出的 LTE Cat.1 bis通信模块&#xff1b; 采用移芯EC618平台&#xff0c;支持 LTE 3GPP Rel.13 技术。 Air780E特点和优势总结如下&#xff1a; 全网通兼容性&#xff1a; 作为4G全网通模块&#xff0c;兼容不同运营商网络&#xff0c;包括但不限于移动、…

【C++ Primer Plus习题】10.1

问题: 解答: main.cpp #include <iostream> #include "BankAccount.h" using namespace std;int main() {BankAccount BA1("韩立","韩跑跑",1);BA1.get_info();BankAccount BA;BA.init_account("姚国林", "amdin", 1…

国际化产品经理的挑战与机遇:跨文化产品管理的探索

全球化背景下的产品管理变革 在当今全球化的背景下&#xff0c;科技的进步和通信技术的普及&#xff0c;使得世界变得更加紧密相连。产品不再仅仅局限于单一市场&#xff0c;而是面向全球用户&#xff0c;这对产品经理提出了新的挑战与机遇。跨文化的产品管理要求产品经理不仅…

09-03 周二 ansible部署和节点管理过程

09-03 周二 ansible部署和节点管理过程 时间版本修改人描述2024年9月3日10:08:58V0.1宋全恒新建文档&#xff0c; 简介 首先要找一个跳板机&#xff0c;来确保所有的机器都可以访问。然后我们围绕ansible来搭建环境&#xff0c;方便一键执行所有的命令&#xff0c;主要的任务是…

通信算法之232: 无线发射功率和信号强度,常用单位dB、dBm、dBi和dBd介绍

[转载] 无线功率和信号强度的基本概念 在无线网络中&#xff0c;使用AP设备和天线来实现有线和无线信号互相转换。如下图所示&#xff1a; 有线网络侧的数据从AP设备的有线接口进入AP后&#xff0c;经AP处理为射频信号&#xff0c;从AP的发送端&#xff08;TX&#xff09;经过…

JAVA-JVM 内存模型类加载器GC算法GC调优

JAVA-JVM 内存模型&类加载器&GC算法&GC调优 什么是JVM JVM 内存模型 JVM的GC算法 JVM类加载器 什么是JVM ? [[jvm]]是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一个虚构出来的计算机&#xff0c;有着自己完善的硬件架构&a…

Qwen-7B-Chat大模型安装训练推理-helloworld

初始大模型之helloworld编写 开发环境&#xff1a;modelscope GPU版本上测试的&#xff0c;GPU免费36小时 ps:可以不用conda直接用环境自带的python环境使用 魔搭社区 安装conda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 1.2 bash Mini…

港科夜闻 | 香港科大举办开学嘉年华,叶玉如校长勉励新生发掘潜能传承凡事皆可为精神...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大举办开学嘉年华&#xff0c;叶玉如校长勉励新生发掘潜能传承「凡事皆可为」精神。迎接新学年&#xff0c;香港科大于9月2日起举行为期两天的开学嘉年华「Fire Up Your Year」&#xff0c;校长叶玉如教授联同一众…

AI写作保姆级方法论第六节-AI的终极调教心法(问题+解决方案)

效果是什么 大象基于大量的实战经验&#xff0c;总结出了AI prompt调教的终极杀手锏&#xff1a;【终极调教心法&#xff1a;1个原则和3个技巧】 一个原则&#xff0c;是指AI的【角色扮演法】&#xff0c;openai官方基于AI原理给出的让AI听话的技巧。所有AI的使用玩法&#xff…

Leetcode3250. 单调数组对的数目 I

Every day a Leetcode 题目来源&#xff1a;3250. 单调数组对的数目 I 解法1&#xff1a;记忆化搜索 题目输入一个数组nums。 假设有两个数组A和B&#xff0c;A递增&#xff0c;B递减&#xff0c;且 Ai Bi numsi ​ 问有多少对(A,B)数组对。 解法&#xff1a; 代码&…

java基础知识-JVM知识详解

一、JVM内存结构 Java虚拟机(JVM)的内存结构主要分为几个不同的区域,每个区域都有其特定的目的和功能。以下是JVM内存结构的主要组成部分: 先看一下总体的结构图 程序计数器(Program Counter Register) 这是一个较小的内存块,用于存储当前线程所执行的字节码指令的地址…

第T4周:猴痘病识别

本文为&#x1f517;365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 我的环境&#xff1a; ● 语言环境&#xff1a;Python3.6.5 ● 编译器&#xff1a;jupyter notebook ● 深度学习框架&#xff1a;TensorFlow 2.6.2 ● 数据&#xff1a;猴痘病数据集 一、…

非 congda 环境 ubuntu 22.04 源码编译安装 pytorch 并初步检查可用性

非 congda 环境 编译安装 pytorch 0, 安装 cuda sdk &#xff0c;cudnn 及 nccl 按照官网步骤&#xff0c;blacklist需要特别注意 0.1 cuda sdk 0.2 cudnn 0.3 安装nccl git clone --recursive https://github.com/NVIDIA/nccl.git ls cd nccl/ make -j src.build sudo apt…

使用 docker 部署 kvm 图形化管理工具 WebVirtMgr

文章目录 [toc]前提条件镜像构建启动 webvirtmgr创建其他 superuser配置 nginx 反向代理和域名访问绑定 kvm 宿主机local sockettcp 连接 虚拟机创建创建快照虚拟机克隆删除虚拟机 kvm 官方提供了以下这些图形化管理&#xff0c;license 这块也提示了是商业版&#xff08;Comme…