标签 SPI 下的文章
 2020-11-27T20:55:44.432702    |      嵌入式学习    |     AilsonJack    |     暂无评论    |     487 views
硬件平台:STM32F429为了更加清楚的了解stm32 spi nss硬件模式的配置,这里以stm32f429为例,下面的程序就是spi nss硬件模式的配置参考程序,程序中使用了stm32f429标准库中的一些接口函数,该程序是经过测试可用的。
嵌入式SPI 阅读全文»
 2020-10-30T23:06:34.273000    |      嵌入式学习    |     AilsonJack    |     暂无评论    |     1137 views
1.概述目前网络上使用stm32 spi的nss,基本上都使用的是nss的软件管理模式。对于nss的硬件管理模式,程序的配置以及对nss的软件管理模式与硬件管理模式的说明,真的少之又少。这可能跟stm32官方文档对nss的描述不清也有很大关系吧,下面就带大家理解理解nss,当然了这篇文章是笔者阅读了stm32 spi官方文档再结合网友的一些文章,最终以自己个人对nss理解来编写的,如果有错误之处,还请指正。2.nss的管理模式nss的管理模式分为:硬件管理和软件管理。nss的管理模式由SSM决定。nss其实分为外部引脚和内部引脚的。外部nss引脚就是芯片上肉眼可见的与GPIO复用的引脚;内部nss引脚就是stm32芯片里集成的spi模块引脚,肉眼不可见。换句话说,真正与spi通信控制器连接的是内部nss引脚,外部nss引脚不能直接连到芯片内部的spi模块,而是先连接内部nss引脚,通过内部nss引脚作用spi模块。3.nss的管理模式配置SSM在SPI_CR1控制器里,默认为0。SSM可以控制内部nss引脚与SSI(一个寄存器,软件模式)相连,还是与外部nss引脚(真正的STM32引脚,硬件模式)相连。真正起作用的是内部nss引脚(内部nss引脚才真正连接到SPI通信控制器上)。当SSM=0:说明使用硬件管理模式,内部nss引脚与外部nss引脚相连,忽视SSI位,对SPI_CR1的SSI位的写操作无效;当SSM=1:说明使用软件管理模式,内部nss引脚与SSI相连,忽视外部nss引脚,我们可以把外部nss引脚当做普通IO口;4.spi从模式配置(MSTR=0)(1).nss硬件模式(SSM=0)当外部nss引脚为低电平时,内部nss也为低电平,相当于片选该从器件,此时spi可以传输数据。外部nss引脚需要配置为复用功能。(2).nss软件模式(SSM=1)SSM=1并且SSI=0,STM32芯片让内部nss引脚为低电平,相当于片选该从器件,此时spi可以传送数据。外部nss引脚被释放,可做普通IO作为其他用途使用。5.spi主模式配置(MSTR=1)(1).nss硬件模式(SSM=0)在spi主模式下,nss硬件模式又分为输入模式和输出模式,由SSOE位决定。a.输入模式(SSOE=0):在外部nss引脚为高电平,内部nss引脚也为高电平,此时才能进行数据传输。如果要使能从设备,还需要一个GPIO引脚。在此情况下,外部nss要是被接低电平,则会进入主模式故障,MSTR会清零,由主模式进入从模式。外部nss引脚需要配置为复用功能,并且外部nss引脚必须接入一个高电平,它才能维持主模式状态。stm32官方手册spi章节有说明,也就一句话,如果你不注意,可能就无法发现,如下图:b.输出模式(SSOE=1):当使能spi模块时,外部nss引脚会被芯片自动输出低电平,使能从设备,进行数据传输,不需要额外的GPIO引脚就能片选从设备(输出模式时,貌似不需要遵循上图框出来的内容,那段话可能就是针对输入模式写的,输出模式是spi模块控制内部nss引脚,因此也就不必遵循那段话)。外部NSS引脚需要配置为复用功能,再把此引脚连接到从器件的CS引脚,因此外部NSS引脚就相当于片选引脚了。(2).nss软件模式(SSM=1)SSM=1,并且SSI=1,将内部nss引脚设置为高电平,这样随时可以传输数据(这句话遵循上图框出来的内容)。当然多数情况还需要一个GPIO引脚输出低电平,来使能从设备,让从设备可以接收数据。综上所述,nss引脚就是片选CS引脚是很不负责任的说法。
嵌入式SPI 阅读全文»
 2020-09-05T17:28:44.240000    |      嵌入式学习    |     AilsonJack    |     暂无评论    |     535 views
1.SPI总线概述SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。主要应用在EEPROM,FLASH,实时时钟,AD转换器,数字信号处理器和数字信号解码器等设备与MCU之间进行通信。SPI具有通信简单,支持全双工通信,数据传输速度快的优点。但是由于SPI没有指定的流控制,没有应答机制确认数据是否发送或接收成功,所以SPI总线跟IIC总线比较的话,SPI总线在数据可靠性上有一定的缺陷。2.SPI信号线SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。SPI使用3条通讯总线和1条片选线。(1).MOSI主设备数据输出,从设备数据输入。(2).MISO主设备数据输入,从设备数据输出。(3).SCLK(或叫SCK)时钟信号线,用于通讯同步,该信号由主机产生和控制。(4).CS片选线,从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时就需要设置从设备对应的片选引脚,来使能从设备。SPI通讯设备之间的连接方式,如下图所示:3.SPI总线的4种通讯模式SPI通信有4种不同的通讯模式,不同的从设备可能在出厂时就配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式。MOSI和MISO线在SCK的每个时钟周期传输一位数据,开发者可以自行设置MSB或LSB先行,不过需要保证两个通讯设备都使用同样的协定。时钟极性CPOL是用来配置SCK空闲状态的电平,时钟相位CPHA是用来配置数据采样是在第几个边沿。CPOL=0,表示当SCK=0时处于空闲态,所以有效状态就是SCK处于高电平时;CPOL=1,表示当SCK=1时处于空闲态,所以有效状态就是SCK处于低电平时;CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿;CPOL和CPHA进行组合配置之后产生四种时序关系,也就是四种通讯模式。四种通讯模式文字描述如下:CPOL=0,CPHA=0:此时空闲态时,SCK处于低电平,数据采样是在第1个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。CPOL=0,CPHA=1:此时空闲态时,SCK处于低电平,数据发送是在第1个边沿,也就是SCK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。CPOL=1,CPHA=0:此时空闲态时,SCK处于高电平,数据采集是在第1个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。CPOL=1,CPHA=1:此时空闲态时,SCK处于高电平,数据发送是在第1个边沿,也就是SCK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。下面的表格是对上述描述的SPI四种通讯模式的总结:SPI模式CPOLCPHASCK空闲时电平数据采样数据发送000低电平第1个边沿第2个边沿101低电平第2个边沿第1个边沿210高电平第1个边沿第2个边沿311高电平第2个边沿第1个边沿模式0和模式3的差异主要是,模式0的SCK空闲电平是低电平,模式3的SCK空闲电平是高电平。因为模式0的SCK空闲电平是低电平,数据采样发生在SCK的第1个边沿,也就是SCK的上升沿,数据发送发生在SCK的第2个边沿,也就是SCK的下降沿。同样的因为模式3的SCK空闲电平是高电平,数据采样发生在SCK的第2个边沿,也就是SCK的上升沿,数据发送发生在SCK的第1个边沿,也就是SCK的下降沿。从上面一段文字,可以对模式0和模式3进行一个总结:模式0和模式3的主要差异是SCK空闲电平的状态不一样,模式0的SCK空闲电平是低电平,模式3的SCK空闲电平是高电平;模式0和模式3都在SCK的上升沿进行数据采样,在SCK的下降沿进行数据发送。同样的,可以对模式1和模式2进行一个总结:模式1和模式2的主要差异是SCK空闲电平的状态不一样,模式1的SCK空闲电平是低电平,模式2的SCK空闲电平是高电平;模式1和模式2都在SCK的下降沿进行数据采样,在SCK的上升沿进行数据发送。
嵌入式SPI 阅读全文»
  • 1

  本站信息

目前本站共被浏览 154789 次
目前本站已经运行 3306 天
目前本站共有 165 篇文章
目前本站共有 6 条评论信息
目前本站共有 104 个标签
目前本站共有 0 条留言信息
网站创建时间: 2015年03月01日
最近更新时间: 2023年11月26日
Copyright © 2015~2023  说好一起走   保留所有权利   |  百度统计  蜀ICP备15004292号