STM32之spi管理模式
1)sip管理模式分为:硬件管理和软件管理;主要由NSS 、SSI、SSM决定;
NSS是芯片上一个实实在在的引脚,SSI和SSM是SPI_CR1控制器里的的位。
值得注意的是:NSS分外部引脚和内部引脚的。外部NSS引脚当然就是与GPIO 共用的引脚,芯片上可以肉眼看到这个引脚;内部NSS引脚就是STM32芯片里集成的SPI模块引脚,我们肉眼是看不见的它的,换句话说,真正与SPI通信控制器连接的是内部NSS引脚,外部NSS引脚不能直接连到芯片内部的SPI模块,而是先连接内部NSS引脚,通过内部NSS引脚作用SPI模块。
2)基本概述:
位SSM在SPI_CR1控制器里默认为0;
SSM可以控制内部NSS引脚与SSI(一个寄存器,软件模式)相连,还是与NSS外部引脚(真正的STM32引脚,硬件模式)相连。真正作用的是内部NSS引脚(内部NSS引脚才真正连接到SPI通信控制器上)
当SSM=0,说明使用硬件管理模式,此时NSS有效,内部NSS引脚与外部NSS引脚相连,忽视SSI位,对SPI_CR1的 SSI位 的写操作无效;
当SSM=1,说明使用软件管理模式,此时SSI位有效,内部NSS引脚与SSI相连,忽视外部NSS引脚,我们可以把外部NSS引脚当做普通IO口;
3)配置:
SPI从模式的配置(MSTR=0)
1.硬件模式:SSM=0,当外部NSS为低电平时,内部NSS也为低电平,此时可以传送数据。
外部NSS引脚必须作为输入模式,此引脚就成为了该器件的片选引脚:
外部NSS引脚设置为复用功能+无上下拉,外部NSS引脚需要手动连接一个低电平,此时可以传送数据,低电平必须维持到SPI关闭为此,相当片选该从器件;
外部NSS引脚设置为复用功能+无上下拉,外部NSS引脚手动连接一个高电平,内部NSS引脚被外部高电平拉高,此时不可以转送数据,因为相当取消从器件的片选;
2.软件模式:SSM=1,并SSI=0.STM32芯片让内部NSS引脚为低电平,此时可以传送数据。
外部NSS引脚被释放,可做普通IO作为其他用途使用。
SPI主模式的配置(MSTR=1)
1.硬件模式:SSM=0
A:输入模式:SSOE=0,在外部NSS引脚为高电平,即内部NSS引脚也为高电平时,才能进行数据传输。 如果要使能从设备,还需要一个GPIO引脚。
在此情况下,外部NSS要是被接低电平,则会进入主模式故障,MSTR会清零,由主模式进入从模式。
外部NSS引脚需要配置为复用+无上下拉,且外部NSS引脚必须接入一个高电平,它才能维持主模式状态。
B:输出模式:SSOE=1, 外部NSS引脚会被芯片自动输出低电平,使能从设备,进行数据传输。 不需要额外的GPIO引脚就能控制从设备。
外部NSS引脚需要配置为复用功能,再把此引脚连接从器件的CS引脚,因为此情况下,外部NSS引脚就相当于片选引脚了。
2.软件模式:SSM=1,SSI=1,将内部NSS引脚设置为高电平。这样随时可以传输数据。当然多数情况还需要一个GPIO引脚输出低电平,来使能从设备,让从设备可以接收数据。
3.需要注意的是,SSOE位必须在主模式下配置才有效。它的作用是在硬件管理的主模式下是否开启外部NSS引脚的输入、输出模式。这是芯片手册上说的。
综上所述,NSS引脚就是片选CS引脚是很不负责任的说法。
本人也是参考下面此文章,此作者前半部分讲的非常好,但不能全信此作者讲,特别是他所写的后半部分,有些个人认为还是有些缺陷:
https://blog.csdn.net/andylauren/article/details/52259703
SPI_CR2 :
SPI_CR1:
STM32之spi管理模式的更多相关文章
- STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]
SPI是我最常用的接口之一,连接管脚仅为4根:在常见的芯片间通信方式中,速度远优于UART.I2C等其他接口.STM32的SPI口的同步时钟最快可到PCLK的二分之一,单个字节或字的通信时间都在us以 ...
- oled stm32的spi
其实各种协议是很重要的,这篇文章就当做我对spi协议的一个整理吧. 必要的spi简介: https://www.cnblogs.com/zengsf/p/7221207.html?utm_source ...
- Azure 新的管理模式 —— Resource Manager
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理模式
6.3.创建与管理模式 概述:DB内组织对象的一种逻辑结构.一个DB内能够有多个模式.在未指定模式时默认放置在public中.能够通过"\dn"方式查看数据库中现有模式: test ...
- Vuex(一)——vuejs的状态管理模式
一.Vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式. 它采用集中式存储 管理 应用的所有组件 的 状态,并以 相应的规则 保证 状态以一种 可预测的方式 发生变化. ...
- 理解vuex的状态管理模式架构
理解vuex的状态管理模式架构 一: 什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的 ...
- 【转】STM32三种启动模式
@2018-12-16 [小记] STM32 启动区域 STM32三种启动模式 借助上述文章理解官方文档<一种从用户代码调用系统存储器中 Bootloader 的方法 >
- 五、vue状态管理模式vuex
一.vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 即data中属性同时有一 ...
- STM32 F4 SPI Accelerometer
STM32 F4 SPI Accelerometer
随机推荐
- 利用Wireshark抓取并分析OpenFlow协议报文
OpenFlow 交换机与控制器交互步骤 1. 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1:10.0.0.1,h2:10.0.0.2),测试两台主机之间的网 ...
- select,poll,epoll最简单的解释
从事服务端开发,少不了要接触网络编程.epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,nginx.Redis.Skynet 和大部分游戏服务器都使用到这一多路复用技术. epoll ...
- POJ1177和POJ1389 。。。
POJ 1177 Picture 经典线段树+离散化+扫描线 POJ 1177 Picture (线段树+离散化+扫描线) 详解 线段树(segment tree) http://www.java3z ...
- ssh端口映射总结
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/boliang319/article/det ...
- mfc封装cef浏览器 关闭整个窗口程序得时候又重启mfc 应用的程序
最近使用mfc 做了一个cef得浏览器 多标签得.当使用这个封装得浏览器一段时间之后(超过1分钟2分钟) 当关闭封装得浏览器整个窗体 x得时候,整个窗体又重新弹了出来. 大概现象就是一个exe程序你杀 ...
- [java.lang.NoSuchMethodError: org.hibernate.Session.createQuery(Ljava/lang/String;)Lorg/hibernate/query/Query;]
jar包冲突 maven导入的jar包和自己将lib目录的jar同时加入了项目里面了
- https://suchprogramming.com/epoll-in-3-easy-steps/
https://suchprogramming.com/epoll-in-3-easy-steps/ https://www.quora.com/What-are-the-key-difference ...
- MiniDao & Freemarker & include
minidao include - 国内版 Binghttps://cn.bing.com/search?q=minidao+include&qs=n&form=QBRE&sp ...
- 【转载】 漫谈Code Review的错误实践
原文地址: https://www.cnblogs.com/chaosyang/p/code-review-wrong-practices.html ------------------------- ...
- 实战c++中的string系列--std:vector 和std:string相互转换(vector to stringstream)
string.vector 互转 string 转 vector vector vcBuf;string stBuf("Hello DaMao!!!");----- ...