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管理模式的更多相关文章

  1. STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]

    SPI是我最常用的接口之一,连接管脚仅为4根:在常见的芯片间通信方式中,速度远优于UART.I2C等其他接口.STM32的SPI口的同步时钟最快可到PCLK的二分之一,单个字节或字的通信时间都在us以 ...

  2. oled stm32的spi

    其实各种协议是很重要的,这篇文章就当做我对spi协议的一个整理吧. 必要的spi简介: https://www.cnblogs.com/zengsf/p/7221207.html?utm_source ...

  3. Azure 新的管理模式 —— Resource Manager

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  4. Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理模式

    6.3.创建与管理模式 概述:DB内组织对象的一种逻辑结构.一个DB内能够有多个模式.在未指定模式时默认放置在public中.能够通过"\dn"方式查看数据库中现有模式: test ...

  5. Vuex(一)——vuejs的状态管理模式

    一.Vuex是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式. 它采用集中式存储 管理 应用的所有组件 的 状态,并以 相应的规则 保证 状态以一种 可预测的方式 发生变化. ...

  6. 理解vuex的状态管理模式架构

    理解vuex的状态管理模式架构 一: 什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的 ...

  7. 【转】STM32三种启动模式

    @2018-12-16 [小记] STM32 启动区域 STM32三种启动模式 借助上述文章理解官方文档<一种从用户代码调用系统存储器中 Bootloader 的方法 >

  8. 五、vue状态管理模式vuex

    一.vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 即data中属性同时有一 ...

  9. STM32 F4 SPI Accelerometer

    STM32 F4 SPI Accelerometer

随机推荐

  1. jQuery学习笔记——基本了解

    安装 两种方法: 从 jquery.com 下载jQuery. 从 CDN 中载入 jQuery, 如从我的博客中加载 jQuery: <script src="https://blo ...

  2. Tensorflow object detection API(1)---环境搭建与测试

    参考: https://blog.csdn.net/dy_guox/article/details/79081499 https://blog.csdn.net/u010103202/article/ ...

  3. PC 端常用软件

    WPS  金山文档  有道云笔记  格式工厂 运行精灵 UC 遨游 360 Firefox 浏览器 光影魔术手 美图秀秀 2345好压 火绒安全软件 有道云笔记 悟空游戏厅 微信 QQ 迅雷 百度网盘 ...

  4. 简单实用的PCM音频播放器--沉寂几年之后回归的第一份笔记

    ---恢复内容开始--- PCM音频网络流播放,至于用处,就不多解释了. 一个简单的类,基于NAudio,一个简单的拼装类,实例化时三个参数,依次是采样率,系统播放设备Index,播放声道,调用Pla ...

  5. 范仁义web前端介绍课程---2、web前端是干嘛的

    范仁义web前端介绍课程---2.web前端是干嘛的 一.总结 一句话总结: 前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技 ...

  6. nodejs五子棋online游戏开发视频教程,客户端cocos creator js

    开发的游戏是五子棋online,网络版的,服务端部分和客户端部分都在这个教程里面,可以看一下目录! 服务器nodejs游戏开发教程 使用Nodejs开发网络服务器 游戏服务端 ,cocos creat ...

  7. DNS 预读取功能 链接预取

    https://developer.mozilla.org/zh-CN/docs/Controlling_DNS_prefetching DNS 请求需要的带宽非常小,但是延迟却有点高,这一点在手机网 ...

  8. shell脚本 获取第几行 第几列 的命令 awk sed

    例如:我们需要查看 包含 sbin的进程 中的PID号 查看当前所有包含sbin的进程 [root@fea3 ~]# ps aux | grep sbin 只过滤出所有的PID号: [root@fea ...

  9. ntpd服务

    yum -y install ntp 服务器端 [root@ip-172-31-6-148~]# vim /etc/ntp.conf ...# Use public servers from thep ...

  10. wpf程序,只允许运行一个程序实例问题

    https://bbs.csdn.net/topics/390486402 https://codereview.stackexchange.com/questions/20871/single-in ...