OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2872|回复: 15

spi 手册问题

[复制链接]

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
发表于 2017-9-7 16:45:05 | 显示全部楼层 |阅读模式
1金钱
1.jpg 2.jpg

看了很久,表示无语,一个地方说软件控制片选模式就当普通IO用,而在寄存器的地方又说软件片选要根据SSI来配置,IO配置无效,看了看寄存器版的程序,是当成普通IO用的,有没有大神能解释一下

最佳答案

查看完整内容[请看2#楼]

翻译错了。 原话是SSM置位时,“NSS引脚输入被SSI位的值替代”, 意思是这时从机模式的片选由SSI寄存器决定而不是NSS引脚。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1366
金钱
1366
注册时间
2016-5-26
在线时间
1698 小时
发表于 2017-9-7 16:45:06 来自手机 | 显示全部楼层
SNEZSTM32 发表于 2017-9-8 14:47
嗯,我也是这样理解的,但是SPI_InitStructure.SPI_NSS = SPI_NSS_Soft这个操作也就是把SSM设为1,但是正 ...

翻译错了。
原话是SSM置位时,“NSS引脚输入被SSI位的值替代”,
意思是这时从机模式的片选由SSI寄存器决定而不是NSS引脚。
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-7 21:59:55 | 显示全部楼层
用库函数的也是一样,NSS用IO做的
回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 09:54:11 | 显示全部楼层
huanghan 发表于 2017-9-7 21:59
用库函数的也是一样,NSS用IO做的

如果是普通IO,那么SSM SSI还有什么用呢
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 10:03:35 | 显示全部楼层
SNEZSTM32 发表于 2017-9-8 09:54
如果是普通IO,那么SSM SSI还有什么用呢

是作片选用的
回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 10:10:59 | 显示全部楼层

这个我知道,但是我感觉手册说的很矛盾,导致我不知道片选是应该用SSM SSI控制,还是用普通IO控制,这之间有什么差别没有
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 10:14:18 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-8 10:18 编辑
SNEZSTM32 发表于 2017-9-8 10:10
这个我知道,但是我感觉手册说的很矛盾,导致我不知道片选是应该用SSM SSI控制,还是用普通IO控制,这之 ...

普通IO就可以了  注意SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;的配置  

SPI_Cmd(SPI1, DISABLE);
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//设置spi双向
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//主机模式设定
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8位数模式
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;   
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//spi时钟4分频
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//第一位是高位
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStructure);


回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 10:22:07 | 显示全部楼层

我重新组织一下语言,我的不解是,我怎么能把SPI片选配置成硬件模式,怎么能把SPI配成软件模式,这里的软件模式指的是配置成SSM SSI控制或者普通IO控制,特别是如何配置成SSM SSI或IO控制,感觉特别不懂




回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 10:33:39 | 显示全部楼层
huanghan 发表于 2017-9-8 10:14
普通IO就可以了  注意SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;的配置  

SPI_Cmd(SPI1, DISABLE);

我看了看,库函数的SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 本质是把SSM设置为1,按照我的理解,此时就应该用SSI来控制,怎么就可以当初普通IO呢,关键是SSI描述里面写了的,
当SSM为1时,NSS引脚的IO操作无效
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 10:36:20 | 显示全部楼层
SNEZSTM32 发表于 2017-9-8 10:22
我重新组织一下语言,我的不解是,我怎么能把SPI片选配置成硬件模式,怎么能把SPI配成软件模式,这里的软 ...

你提问那图说得很明白,配置成软件模式,像有SPIx_NSS功能的管脚可以作为IO口用,至于片选问题,去看看SPI协议吧,就会明白为什么片选可以用普通IO来做
回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 10:45:39 | 显示全部楼层
huanghan 发表于 2017-9-8 10:36
你提问那图说得很明白,配置成软件模式,像有SPIx_NSS功能的管脚可以作为IO口用,至于片选问题,去看看SP ...

我明白SPI片选为什么可以做普通IO,可我的问题是,我提问的第一幅图说片选引脚是作为普通  IO,而第二幅图却说,在SSM为1时(配置为软件模式),NSS的电平和IO无关,只与SSI有关。

所以我感觉手册自己说的都是对立的。

回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 11:41:05 | 显示全部楼层
SNEZSTM32 发表于 2017-9-8 10:45
我明白SPI片选为什么可以做普通IO,可我的问题是,我提问的第一幅图说片选引脚是作为普通  IO,而第二幅 ...

当SSM为1时,NSS引脚的IO操作无效,我个人理解是片选不用软件去写,内部自己给
回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 14:47:50 | 显示全部楼层
huanghan 发表于 2017-9-8 11:41
当SSM为1时,NSS引脚的IO操作无效,我个人理解是片选不用软件去写,内部自己给

嗯,我也是这样理解的,但是SPI_InitStructure.SPI_NSS = SPI_NSS_Soft这个操作也就是把SSM设为1,但是正点原子的程序就用IO操作了,不是说好不能用IO的吗

手册是不是有点问题,鉴定一下
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 19:43:03 | 显示全部楼层
SNEZSTM32 发表于 2017-9-8 14:47
嗯,我也是这样理解的,但是SPI_InitStructure.SPI_NSS = SPI_NSS_Soft这个操作也就是把SSM设为1,但是正 ...

那你发的那图有标注,软件模式,未用,可作普通IO,
回复

使用道具 举报

74

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2017-6-7
在线时间
137 小时
 楼主| 发表于 2017-9-8 19:45:49 | 显示全部楼层
huanghan 发表于 2017-9-8 19:43
那你发的那图有标注,软件模式,未用,可作普通IO,

这个没问题,但是你看看第二幅图。
回复

使用道具 举报

10

主题

266

帖子

0

精华

高级会员

Rank: 4

积分
693
金钱
693
注册时间
2017-7-27
在线时间
98 小时
发表于 2017-9-8 19:51:22 | 显示全部楼层
本帖最后由 huanghan 于 2017-9-8 19:53 编辑
SNEZSTM32 发表于 2017-9-8 19:45
这个没问题,但是你看看第二幅图。

那是做从设备,加入STM32 做从设备这个应该强制配置为输入吧,把STM32的SPI用来做从设备,我没有用过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 00:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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