打印

如何将stm32的1个SPI接口4个设备呢?

[复制链接]
10466|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
worldsing|  楼主 | 2010-8-18 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前想用stm32连接4个DAC芯片,怎么扩展stm32的CS呢?能通过软件的方式改变stm SPI的CS输出管脚吗?
沙发
香水城| | 2010-8-18 21:15 | 只看该作者
如果STM32的SPI作为主设备,只需使用普通I/O口做其它从设备的片选即可。

STM32的SPI与STM8基本一致,你可以看看这个帖:stm8s207k6多从机SPI功能

使用特权

评论回复
板凳
worldsing|  楼主 | 2010-8-18 21:20 | 只看该作者
那时序能配合得上吗

使用特权

评论回复
地板
worldsing|  楼主 | 2010-8-18 21:23 | 只看该作者
我在NXP的2131上试过,不用SPI总线的CS信号,用管脚单独模拟这个管脚,发现时序有误
不知道,按照我说的方式在stm32上行不行?

使用特权

评论回复
5
香水城| | 2010-8-18 21:46 | 只看该作者
作为主设备的时候,SPI模块根本就没有CS信号。

假设有CS信号,你说应该有几个?

使用特权

评论回复
6
winloop| | 2010-8-18 21:47 | 只看该作者
CS可以用另外引脚控制
也可以用CD4053之类的模拟开关把引脚切换给不同的SPI从设备

使用特权

评论回复
7
worldsing|  楼主 | 2010-8-18 21:51 | 只看该作者
CS可以用另外引脚控制
也可以用CD4053之类的模拟开关把引脚切换给不同的SPI从设备
winloop 发表于 2010-8-18 21:47


这样且不是麻烦嘛

使用特权

评论回复
8
香水城| | 2010-8-18 21:55 | 只看该作者
这样且不是麻烦嘛
worldsing 发表于 2010-8-18 21:51


麻烦?

那么你说说看:假设有CS信号,应该有几个?  怎么指定用哪个?  难道不麻烦?

使用特权

评论回复
9
worldsing|  楼主 | 2010-8-18 21:55 | 只看该作者
本帖最后由 worldsing 于 2010-8-18 21:58 编辑
作为主设备的时候,SPI模块根本就没有CS信号。

假设有CS信号,你说应该有几个?
香水城 发表于 2010-8-18 21:46


stm32 —————mosi                    di         
                           miso                    do           
                           clk                       clk
                           cs1                      cs            DAC1
                           cs2                      cs            DAC2
                           cs3                      cs            DAC3
                           cs4                      cs            DAC4

在Atmel的片子里是有这个功能的,CS可以用IO来定义

使用特权

评论回复
10
worldsing|  楼主 | 2010-8-18 22:01 | 只看该作者
如果stm32设成主机,没有CS怎么选中设备
。。。。

使用特权

评论回复
11
香水城| | 2010-8-18 22:01 | 只看该作者
stm32 ——————mosi                    di         
                           miso                    do           
                           clk                       clk
                           cs1                      cs            DAC1
                           cs2                      cs            DAC2
                           cs3                      cs            DAC3
                           cs4                      cs            DAC4
worldsing 发表于 2010-8-18 21:55


这是什么? 与用普通I/O有什么区别?

即使是集成在SPI模块中,你不是还要用语句来指定用哪个CS线?这跟操作普通I/O有什么区别?

使用特权

评论回复
12
worldsing|  楼主 | 2010-8-18 22:04 | 只看该作者
Atmel里用IO设成CS后能保证:CS信号与总线同步,如果用普通IO直接操作怎能知道什么收发

使用特权

评论回复
13
worldsing|  楼主 | 2010-8-18 22:07 | 只看该作者
还得收发之前将CS置低,这样和用IO模拟的SPI没区别,没法做到中断收发多个从DAC的数据

使用特权

评论回复
14
worldsing|  楼主 | 2010-8-18 22:37 | 只看该作者
不用SPI总线自己的CS信号怎么保证同步

使用特权

评论回复
15
香水城| | 2010-8-19 08:38 | 只看该作者
嗬嗬,楼主陷入一个大大的误区,:P

你见过哪个MCU的SPI模块有4个CS输出信号?  如果真有4个CS输出信号,你打算怎么写程序?写一个模拟的程序给我们看看?

使用特权

评论回复
16
bh_wang| | 2010-8-19 09:41 | 只看该作者
ST是没有,但有些有4个SPI CS的。

使用特权

评论回复
17
worldsing|  楼主 | 2010-8-19 12:34 | 只看该作者
看来,香主真是不了解Atamel的片子,或是你没有理解我说的意思,Atmel的片子SPI总在发送数据之前可以配置4个CS中的任意一个。而不是同时使用这4个CS,也没有人这么用。

我只是在这问stm32有没有这个功能,或是用stm32怎么实现分时对4片DAC的通信。且是最简便的方法。我陷入哪的误区请香主指教,谢谢

使用特权

评论回复
18
香水城| | 2010-8-19 12:37 | 只看该作者
我的问题是:在发送数据之前可以配置4个CS中的任意一个,这样不麻烦吗?与在发送数据之前配置4个I/O中的任意一个有什么区别?

为什么一定要专门的CS?专门的CS有什么功能是普通I/O不能实现的?

使用特权

评论回复
19
香水城| | 2010-8-19 12:42 | 只看该作者
我只是在这问stm32有没有这个功能,或是用stm32怎么实现分时对4片DAC的通信。且是最简便的方法。我陷入哪的误区请香主指教,谢谢
worldsing 发表于 2010-8-19 12:34


你的误区在于:以为一定要专用的CS信号才能实现你要的功能,殊不知这种功能是任何普通I/O口都可以实现,而且操作方式相同,对性能也没有影响。所以STM32不需要配备专用的CS信号。

使用特权

评论回复
20
sunny_ugv| | 2010-8-19 13:10 | 只看该作者
两人理解误差,:)

使用特权

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

本版积分规则

14

主题

346

帖子

0

粉丝