打印

stm8s207k6多从机SPI功能

[复制链接]
11334|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位好:
由于stm8s207k6的NSS脚不是片选脚,那请问一个主机和多从机SPI通讯功能怎么实现?

其他MCU都有CS脚可以很方便实现多从机功能.
ST的MCU怎么这么怪啊?
沙发
香水城| | 2010-8-17 12:21 | 只看该作者
哈哈,如果不看手册,还可能有更怪的事情:

STM8_SPI_NSS_Feature.GIF (33.58 KB )

STM8_SPI_NSS_Feature.GIF

使用特权

评论回复
板凳
leojiang|  楼主 | 2010-8-17 13:32 | 只看该作者
就是看到手册才奇怪, 是这样的.
以前我用别的MCU, 片选CS脚拉高,SPI就不工作了,那就可以方便用片选脚选择不同slave来通讯,
但是ST8这个NSS脚做不了CS功能,只是选择master/slave模式,多个slave怎么办?
拉高是master了,拉低是slave,始终都有数据在传输啊.

使用特权

评论回复
地板
香水城| | 2010-8-17 13:47 | 只看该作者
就是看到手册才奇怪, 是这样的.
以前我用别的MCU, 片选CS脚拉高,SPI就不工作了,那就可以方便用片选脚选择不同slave来通讯,
但是ST8这个NSS脚做不了CS功能,只是选择master/slave模式,多个slave怎么办?
拉高是master了,拉低是slave,始终都有数据在传输啊 ...
leojiang 发表于 2010-8-17 13:32


你在哪里看到:NSS脚做不了CS功能,,只是选择master/slave模式?

又在哪里看到:拉高是master了,拉低是slave?

使用特权

评论回复
5
jgphu| | 2010-8-17 14:07 | 只看该作者
STM8自已作主可以通过NSS引脚或软件控制,软件控制的话NSS脚就作普通的IO来用,如果像你所说的一主多从的话,STM8作主,其它作从的话,你可以NSS脚拉高或软件设计内部拉高来实现主模式,其它芯片的从模式用STM8的IO来控制。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
leojiang + 1
6
leojiang|  楼主 | 2010-8-17 14:11 | 只看该作者
datasheet里面写了,NSS是做硬件的master/slave选择(RM0016文件20.2项),
我的理解是如果可以做片选功能, 拉高这只脚应该关掉SPI功能, 拉低使能SPI,
标准的SPI是这样的吧.
现在是实测: 如果一个主机接一个从机,主机拉低从机的NSS可以正常通讯. 如果一个主机挂2个从机,主机拉低其中一个NSS脚(选择为从机通讯),另外一个NSS肯定要是高电平,对吧? 但那就是2个主机了,是不是?
实测的波形就乱掉了.

使用特权

评论回复
7
leojiang|  楼主 | 2010-8-17 14:19 | 只看该作者
看到设置寄存器SPI_CR2的SSM和SSI来实现软件设置主从模式.
那NSS脚就做为普通IO用了.
所以一主多从时候,NSS脚根本做不了片选功能.

使用特权

评论回复
8
香水城| | 2010-8-17 14:23 | 只看该作者
datasheet里面写了,NSS是做硬件的master/slave选择(RM0016文件20.2项),
我的理解是如果可以做片选功能, 拉高这只脚应该关掉SPI功能, 拉低使能SPI,
标准的SPI是这样的吧.
现在是实测: 如果一个主机接一个从机,主机拉低从机的NSS可以正常通讯. 如果一个主机挂2个从机,主机拉低其中一个NSS脚(选择为从机通讯),另外一个NSS肯定要是高电平,对吧? 但那就是2个主机了,是不是?
实测的波形就乱掉了. ...
leojiang 发表于 2010-8-17 14:11


1)请把你看到的部分像我2楼那样贴出来,在RM0016文件20.2项中我没有看到你说的意思。不要只说你自己的理解,因为你的理解可能不对。

2)如果你的配置不对,实测结果只能证明你的配置不对,而不能证明你的理解正确。

3)你对我在2楼贴出的部分是怎么理解的?

使用特权

评论回复
9
leojiang|  楼主 | 2010-8-17 14:45 | 只看该作者

使用特权

评论回复
10
leojiang|  楼主 | 2010-8-17 14:48 | 只看该作者
看上面红色的,NSS管脚是做硬件的主从选择,不是CS功能.

使用特权

评论回复
11
leojiang|  楼主 | 2010-8-17 14:51 | 只看该作者
请答复如果一主多从,SPI的4条管脚怎么接? 怎么用NSS实现片选功能?
所以我才说这个MCU很奇怪嘛.

使用特权

评论回复
12
香水城| | 2010-8-17 14:57 | 只看该作者
看上面红色的,NSS管脚是做硬件的主从选择,不是CS功能.
leojiang 发表于 2010-8-17 14:48


那句话的意思是:主模式和从模式下均可以由软件或硬件进行NSS管理。

为什么你不看我在2楼贴出的部分?却总是纠结这个MCU很奇怪?

请问你在主设备和从设备端,分别是怎么配置MSTR位的?

使用特权

评论回复
13
jgphu| | 2010-8-17 15:01 | 只看该作者
请答复如果一主多从,SPI的4条管脚怎么接? 怎么用NSS实现片选功能?
所以我才说这个MCU很奇怪嘛.
leojiang 发表于 2010-8-17 14:51

STM8 作主时, MISO  主输入从输出
                      MOSI  主输出从输入
                      SLK    时钟
                      NSS    拉高 (要是软件设置内部拉高,则当IO口用)
                      按制其它SPI设备CS用其它IO脚控制
ST8作从时:      MISO  主输入从输出
                      MOSI  主输出从输入
                      SLK    时钟
                       NSS  按主机IO控制引脚

使用特权

评论回复
14
leojiang|  楼主 | 2010-8-17 15:17 | 只看该作者
13# 香水城

看到你2楼写的都是1主1从时候,NSS可以算是CS功能.
但是我最开始就说的是1主多从时候, NSS怎么实现CS功能.

使用特权

评论回复
15
香水城| | 2010-8-17 15:23 | 只看该作者
13# 香水城  

看到你2楼写的都是1主1从时候,NSS可以算是CS功能.
但是我最开始就说的是1主多从时候, NSS怎么实现CS功能.
leojiang 发表于 2010-8-17 15:17


不知道你在哪里看到2楼贴出的段落中,说的是1主1从的情况? 我怎么没有看到?

还是请问你在主设备和从设备端,分别是怎么配置MSTR位的?

使用特权

评论回复
16
hxcic| | 2010-8-17 15:36 | 只看该作者
:o不懂。。

使用特权

评论回复
17
leojiang|  楼主 | 2010-8-17 15:40 | 只看该作者
16# 香水城

2楼中文说明下面不是有个图示吗?就是画的一主一从.
主机我是设置MSTR为1,从机设置MSTR为0.

使用特权

评论回复
18
香水城| | 2010-8-17 15:45 | 只看该作者
16# 香水城  

2楼中文说明下面不是有个图示吗?就是画的一主一从.
主机我是设置MSTR为1,从机设置MSTR为0.
leojiang 发表于 2010-8-17 15:40


那是一个例子,例子不代表全部。

使用特权

评论回复
19
leojiang|  楼主 | 2010-8-17 15:47 | 只看该作者
14# jgphu

目前我的硬件是按您说的接的,这样的话从机软件就要不停查询一个管脚状态来确实是否被主机选中,选中的话才可以开SPI. 不选中必须关掉SPI, 很麻烦,而且目前我还没有调通,所以提到ST MCU很奇怪,香版对我有意见了.

所以我说的是如果从机STM8的NSS脚具备CS功能,就可以非常方便的写从机软件.

目前一个主机对一个从机,程序工作没有问题. 一接2个从机,马上死掉.

使用特权

评论回复
20
香水城| | 2010-8-17 15:50 | 只看该作者
请你按照STM32参考手册的第24.3.2配置所有从机,尤其是从机设置MSTR为0;在主机上按从机数目分配若干I/O口,每个I/O口接到一个从机的NSS,与哪个从机通信,就把主机对应的I/O口拉低,其它不参与通信从机对应的I/O口拉高。

就是这么简单!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

102

帖子

2

粉丝