搜索
bottom↓
回复: 15

SPI的片选信号,为什么看到绝大多数例程都选择了软件操作

[复制链接]

出0入9汤圆

发表于 3 天前 | 显示全部楼层 |阅读模式
STM32这种,SPI的NSS引脚,不是可以配置成硬件自动处理吗?

但看了好多例程,即使就是一主一从,也对SPI的NSS引脚,选择了软件处理,而不是硬件处理。

还没搞懂这是为什么。

如果一主多从,自然要选择软件处理,因为片选引脚需要多个。要操作哪个器件就选哪个。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入4汤圆

发表于 3 天前 来自手机 | 显示全部楼层
我估计是程序懒得是研究硬件处理的逻辑吧。反正软件处理起来,随意自己怎么控制。

出20入128汤圆

发表于 3 天前 | 显示全部楼层
硬件的nss未必适合就近拉线

出200入2554汤圆

发表于 3 天前 来自手机 | 显示全部楼层
因为包长度不固定。

一般nss用来标识包头、包尾,这不固定就很难统一。

作为对照,i2c的 STA 和 STO 起止位,在有i2c硬件的情况下,也多数需要软件写寄存器触发

出0入0汤圆

发表于 3 天前 来自手机 | 显示全部楼层
可能51工程师用习惯了

出30入54汤圆

发表于 前天 09:48 | 显示全部楼层
因为CS信号有时候也作为命令起始信号,多个字节中间传输如果CS恢复高电平可能导致命令不完整,硬件的CS是否拉低一般和其发送缓冲区内是否还有待发送的数据有关,如果软件不能及时填充要发送的数据,会导致发送缓冲区空,从而可能导致CS恢复高电平,这样实际工作中接口时序可能会受到不可预知的软件行为影响,所以保险还是直接用软件IO去拉方便

出0入0汤圆

发表于 前天 14:55 | 显示全部楼层
cloudboy 发表于 2024-8-23 09:48
因为CS信号有时候也作为命令起始信号,多个字节中间传输如果CS恢复高电平可能导致命令不完整,硬件的CS是否 ...
(引用自6楼)


解释的精辟也狠精华

出0入9汤圆

 楼主| 发表于 前天 15:31 | 显示全部楼层
理解了。感谢4&6楼

出0入0汤圆

发表于 前天 15:35 | 显示全部楼层
stm32的硬件NSS灵活得很,完全满足绝大多数需求,不用就是懒得去研究而已。。。

出0入8汤圆

发表于 昨天 02:11 | 显示全部楼层
jianfengxixi 发表于 2024-8-23 15:35
stm32的硬件NSS灵活得很,完全满足绝大多数需求,不用就是懒得去研究而已。。。 ...
(引用自9楼)

STM的硬件SPI NSS才是最鸡肋的,只能每次发送1byte /或一个half word,而不能发送packet,所以很多时都不能用,我不知道这样设计的目的是什么。

出0入663汤圆

发表于 昨天 03:34 | 显示全部楼层
smallwood 发表于 2024-8-24 02:11
STM的硬件SPI NSS才是最鸡肋的,只能每次发送1byte /或一个half word,而不能发送packet,所以很多时都不 ...
(引用自10楼)

STM32手册并不是这样写的,NSS开始通讯时会拉低并一直维持到SPI禁用,所以你和6楼说的问题都不存在。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出180入85汤圆

发表于 昨天 09:34 | 显示全部楼层
6楼说的有道理,spi片选有时候就是当数据发送状态用的。

出715入1076汤圆

发表于 昨天 09:36 | 显示全部楼层
本帖最后由 dukelec 于 2024-8-24 09:43 编辑
gzhuli 发表于 2024-8-24 03:34
STM32手册并不是这样写的,NSS开始通讯时会拉低并一直维持到SPI禁用,所以你和6楼说的问题都不存在。

...
(引用自11楼)


要看是 stm32 什么系列,f1、3、4 系列,对应的应该是你这个截图,这个更坑,spi disable 才失能 nss 脚,实际表现为:spi 初始化后,nss 脚就一直拉低有效,想让它释放 nss 脚,需要手动 disable 一下 spi 控制器,跟自动不粘半点边,完全不如手动操作 io 当片选。

而 g0 g4 系列,有所升级,nss 脚可以硬件随通讯的数据自动拉低拉高,但是,只能是一个最小通讯单位就拉高一次,譬如 spi 配置成 16 bits,那么每 16 bits 就会失能拉高,想 dma 发送一组数据让它整体只拉低一次,应该是做不到。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

发表于 昨天 10:56 | 显示全部楼层
dukelec 发表于 2024-8-24 09:36
要看是 stm32 什么系列,f1、3、4 系列,对应的应该是你这个截图,这个更坑,spi disable 才失能 nss 脚 ...
(引用自13楼)


是的,这就是我所说的鸡肋之处,在自动模式下只能发送1byte/2byte,聊胜于无。

SPI 3线模式(bidirection)的设计方式更是让人摸不着头脑,一当触发传输sck便停不了直至SPI禁用,这根本不能控制要精准传输多少byte。SPI的设计根本很简单,你以为STM新系列的芯片应该会改善,但到头来还是和以前一样。

不过我选MCU还是首先STM,就因为没有国产芯片那种资料/功能收收藏藏让你找不到的德性。

出0入300汤圆

发表于 昨天 11:51 来自手机 | 显示全部楼层
看起来一直没用是对的,市面上卖的开发板以前买过几个,也都是没有用。

出0入115汤圆

发表于 昨天 16:43 | 显示全部楼层
cloudboy 发表于 2024-8-23 09:48
因为CS信号有时候也作为命令起始信号,多个字节中间传输如果CS恢复高电平可能导致命令不完整,硬件的CS是否 ...
(引用自6楼)

单片机spi我观察到的都是软件的方法,但是在linux里面应用基本都用硬件nss,哪有啥不稳定的,都是开发板教程导致的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 06:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表