看了很多关于NSS片选信号配置的资料,感觉没有说清楚的,自己写了一些个人的看法,希望对大家有用。
首先看我们看下NSS的结构图,如下。
从上图中我们可以看出左边的NSS代表硬件的引脚,右边的internalnss是内部NSS,微处理器根据这个内部的NSS来确定不同的操作。
和NSS相关的寄存器标志位主要是SSM、SSI以及SSOE。SSM用来配置是硬件模式还是软件模式。SSI用来确定在软件模式下NSS输入的极性,SSOE用来决定是否允许内部NSS信号送出的NSS引脚上。
对NSS的管理有硬件模式和软件模式之分,所谓硬件模式(SSM=0,二选一处0端有效),就是内部NSS的信号来自于外部NSS引脚,是确确实实的硬东西(引脚)送过来的。软件模式(SSM=1,二选一处1端有效),内部NSS信号来自于内部SSI标志位,用户可以利用软件设置SSI,来控制内部NSS。
一、如果STM32作为SPI总线的主设备
1.如果是硬件模式,并且SSOE等于1,那么NSS引脚电平可以送入内部NSS,内部NSS也可以通过输出控制单元送到NSS引脚上,就可以实现对从设备的控制了。NSS引脚在工作时会出现低电平,可以打开外部从设备。如果SSOE等于0,这时内部NSS信息就无法送到NSS引脚了,那不是无法控制从设备了么?对,此时NSS引脚就无法控制从设备了,不过如果有其他的主设备将NSS引脚拉低,那么此时SPI就自动进入了从模式,可以接收数据了,实现了多主模式下(比如两个STM32通过SPI进行通信,都可能是主设备)的功能切换。
2.如果是软件模式,内部NSS的信息来自于SSI标志位,但内部NSS信息无法送到NSS引脚,此时就需要用户使用其他的GPIO引脚来控制从设备。
二、如果STM32作为SPI总线的从设备
1.如果是硬件模式,且SSOE=0,NSS引脚信号可以送入到内部NSS,STM32可以受控于其他主设备。如果此时SSOE=1,那么SPI也可以切换成主模式,实现从到主的切换。
2.如果是软件模式,如果SSI=0,那么内部NSS一直未低电平,总是被选中,可以随时和外部设备通信(此时STM32自己是从设备)。
因此:一般STM32做主设备,且管理一个从设备,可以设置成硬件模式。 如果管理多个从设备,可以设置软件模式。如果STM32做从设备,尽量也设置成软件模式,让SSI=0,就可以随时接收数据了。
关键字:STM32 微控制器 SPI接口 NSS
引用地址:
STM32微控制器SPI接口NSS管理分析
推荐阅读最新更新时间:2024-03-16 15:39
基于单片机系统采用DMA块传输方式实现高速数据采集
摘 要: 介绍一种基于单片机系统设计的DMA硬件电路,以字块传输方式与高速A/D接口。结合在数字式磁通表设计中的应用给出其硬件软件设计方案实例。
关键词: 单片机系统 直接存储器存取(DMA)方式 高速A/D
PC机中外设与内存储器之间数据直接传输的DMA功能以其高效、高速、CPU资源占用少等特点已被广泛应用,这一功能通过安装在主板上的专用DMA控制器芯片或集成在外围控制芯片来实现。单片机的应用领域也常常需要有高速数据传输或数据采集,虽然近些年单片机速度有所提高,仍然无法应付类似单脉冲信号捕获、周期信号频谱分析等需要采用高速A/D的场合。对于速率在100ksps以上的数据采集或传输一般的中断查
[应用]
STM32-一个例子搞懂EXTI外部中断/事件系统
假设一个商业帝国集团STM32 GROUPE有三家子公司,叫EXTI安保公司、AD转换技术有限公司、INT中断快递有限公司。 EXTI安保公司有一个经理和三个员工,分别为: 经理:寄存器·李 门卫:边沿检测·王 业务员:中断业务·杨 发言人:脉冲输出·赵 下图便是EXTI安保公司,黄色方框是集团董事长,绿色方框是经理,蓝色方框1~3分别是门卫、业务员、发言人。 边沿中断事件 一天,EXTI技术有限公司经理寄存器·李得到集团董事长的指示,要抓一个叫边沿的家伙,把它交给AD转换技术有限公司处理。(外部中断触发AD转换) 经理赶紧告诉门卫边沿检测·王:“小王啊,注意点,如果遇到一个叫边沿的时候告诉我一声!
[单片机]
基于AVR单片机的低成本真随机数发生器设计
引 言 随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。常见的随机数发生器有两种:使用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。要获取真正随机的真随机数,常使用硬件随机数发生器的方法来获取。这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等),每次获取的真随机数都是不可测的,具有很好的随机性。 真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发生源,具有广泛的应用价值。但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。本文利用RC充放电的低稳定度,根据AVR单片机的特点设计了一种
[单片机]
基于SPIFI外设的Cortex-M MCU彻底解决嵌入式闪存选型困扰
引言:新型恩智浦ARM Cortex-M3微控制器首次采用的SPI闪存接口技术( SPIFI ,已申请专利)可以帮助32位嵌入式系统设计人员以小尺寸、低成本的 串行闪存 替代大尺寸、高成本的并行闪存。利用SPIFI (读音与spiffy谐音,意为“出色、整洁、漂亮”等——译注),外部串行闪存可以映射到微控制器内存中,达到片上内存读取效果。新技术可以解决传统嵌入式系统外部闪存选型难题,为设计人员在保持系统性能的同时缩小尺寸及降低成本提供了一条新途径。 目前恩智浦开发出一种新型外设接口技术,该技术在基于ARM Cortex-M3内核的最新LPC1800微控制器上已得到成功应用。嵌入式系统设计人员利用该技术可将串行闪存取代并行闪存,缩
[工业控制]
芯鼎盛微控制器MCU典型应用消毒牙刷盒
消毒光源采用UVC+UVA短波LED紫外光,分别为光波长200~275nm和320~420nm的紫外线。UVC深紫外杀菌是目前常用的消杀技术。深紫外可以释放较高能量,对细菌病毒的作用十分明显,通过破坏其内部的DNA结构,照射后可对细菌病毒直接杀灭。UVA用于产生视觉效果,增加消费者的体验感。 消毒牙刷盒电路图V1.0 消毒牙刷盒原理图 技术参数: 供电电压:3V(2节5号电池);静态功耗: 5uA;消毒时间:5分钟;消毒工作电流: 160mA;环境温度:-20℃~+65℃;环境湿度:30%RH~80%RH。 消毒牙刷盒效果图
[嵌入式]
89C51单片机之外部中断0、1控制LED
1.proteus仿真图 2.keli代码 #include reg51.h sbit led1=P0^0; sbit led2=P1^0; //外部中断0控制程序 void INT0test() interrupt 0 { led1=~led1; } //外部中断1控制程序 void INT1test() interrupt 2 { led2=~led2; } int main() { EA=1; //全局中断使能 EX0=1; //外部中断0使能 EX1=1; //外部中断1使能 IT0=0; //外部中断0触发方式为低电平有效 IT1=1; //外部中断1触发方式为电平下降沿有
[单片机]
使用STM32固件库函数操作控制LED灯
直接使用寄存器地址来进行STM32开发要对每一个寄存器的地址通过查找芯片手册,对每一个寄存器的各个位的含义也要查清楚,然后决定对那个地址的哪些位进行怎样的设置。这种编程效率低,程序的可移植性差,程序的可读性差。 STM32提供了对外设寄存器操作的功能函数,对寄存器操作只需要调用相应的库函数就可以,一般函数名单词组合与功能密切相关,增强了程序的可读性。 1、以CMSIS固件库项目为基础,在项目文件夹下新增 Lib 文件夹,在 Lib 文件夹下新增 inc 和 src 文件夹,在 inc 文件夹中复制 stm32f10x_gpio.h 和 stm32f10x_rcc.h 两个头文件,在 src 文件夹中复制 stm
[单片机]
使用STM32点亮一颗LED实验
本次实验系统环境 Matlab版本: 2021b 系统环境 :Win10专业版 模型与原理图 simulink模型如图5.1所示,实验现象PB8以0.5S周期反转,PB9以1S周期翻转闪烁,本次实验电路原理如图5.2所示,实验所使用的下载器为STLINK 2V1版本,下载器自带一个串口,完整实验电路板如图5.3所示 图5.1 两颗LED闪烁simulink模型 图5.2 LED闪烁电路图 图5.3 实验开发板 基础模型介绍与分析 “Digital Write”模型用于控制I/O口作为普通输出用,双击模型可更改引脚编号,如图5.4所示其引脚对应STM32的PB8端口,例如想使用PA5引脚时,可通过将其改为“PA_
[单片机]