极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17448|回复: 3

求解------>如何挂载多个spi外设<------

[复制链接]
发表于 2013-12-25 11:36:11 | 显示全部楼层 |阅读模式
本帖最后由 edmondhuang 于 2014-1-5 17:53 编辑

Questions:
凌晨某宝拍下VS1003模块 + MFRC-522 RFID模块,外加自有SD模块,都是SPI接口,但我手上的Arduino Mini Pro只有一个SPI通信接口。求问各位大大,如何把他们连接在一起?如何实现多个从设备的片选(SS)?从设备之间怎么连,主从设备之间又怎么连?能附上连线就最好。需要类似Adafruit_ST7735软件模拟SPI吗?

p.s.
本人新人一枚,非电子专业
需求:打卡后播mp3
Arduino Pro Mini ------> SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。

参考了http://www.geek-workshop.com/forum.php?mod=viewthread&tid=982 还是不懂,因为我还多了一个MFRC-522


當從屬設備的SS引腳置為低電位時,它與主設備進行通信。
當從屬設備的SS引腳置為高電位時,斷開與主設備的通信。
因此,SPI允許一個主設備和多個從設備進行通信,主設備通過不同的SS信號線選擇不同的從屬設備進行通信。

--------------------------------------------------------------------------------------------------------------------------------------------
Update 1:

这样可以吗?SD卡SS1依旧用PIN10片选,MFRC-522模块SS2用其他空闲端口例如PIN9片选?
  1. pinMode(PIN9, OUTPUT);
  2. SPI.begain();
  3. //SPI.setBitOrder(MSBFIRST); //SPI.setBitOrder(LSBFIRST); //SPI.setDataMode(SPI_MODE0);
  4. digitalWrite(PIN9, LOW);
  5. data_R = SPI.transfer(data_S);
  6. digitalWrite(PIN9, HIGH);
复制代码
参考
http://tronixstuff.com/2011/05/13/tutorial-arduino-and-the-spi-bus
http://tronixstuff.com/2011/06/15/tutorial-arduino-and-the-spi-bus-part-ii
http://exploringarduino.com/content/ch9/
https://github.com/sciguy14/Exploring-Arduino/blob/master/Chapter%2009/LED_speaker/LED_speaker.ino

--------------------------------------------------------------------------------------------------------------------------------------------
Update 2:
单片机/MP3模块应该不像电脑有强大的内存,mp3读取应该非常频繁吧,那sd卡和vs1003要和adunino保持通信就要非常频繁地片选拉低,想和MFRC-522共用11(MOSI),12(MISO),13(SCK),我的理解没戏了,难道真的要另外软件模拟SPI给MFRC-522? ......停一停想一想......
先把软件模拟SPI资料写下慢慢理解吧. btw, 好像还得利用中断来读MFRC-522, 大大们过节去了不管我, 只能自己一边画圈圈
https://code.google.com/p/sdfatlib/downloads/list -> sdfatlib20130629.zip\SdFat\utility\SoftSPI.h
http://code.google.com/p/beta-lib/downloads/list ->  DigitalPinBeta20120804.zip\DigitalPin\examples\testSoftSPI\testSoftSPI.h

Update 3:
某宝买的东西都收到了,几个模块单独测试都通过, 剩下MFRC-522模块今晚如果有空。
SD卡模块(挺折腾的):
开始是用以前买的最便宜的不带电平转化的,类似这种http://image.geek-workshop.com/forum/201305/10/225734dkful08g0kukvuif.jpg,结果死活都初始化不了SD卡,供电电压5v和3.3v都试了都不行,参考http://www.geek-workshop.com/thread-4509-2-1.html估计是IO电平问题
网上有用电阻分压的例子http://hackerspace-ffm.de/wiki/images/thumb/SD_Card_Connection.png/619px-SD_Card_Connection.png
不过我最后决定还是直接买这种带mos管的http://image.geek-workshop.com/forum/201109/10/224303yn9fiz535zf6196z.jpg,网上看到有带ic电平转换的不过是micro sd的,我只有空闲的256M的SD,所以只能买这种可以用SD的了。
测试例子SdInfo -> https://code.google.com/p/sdfatlib/downloads/detail?name=sdfatlib20131225.zip&can=2&q=

VS1003模块:我直接用https://github.com/andykarpov/VS1003/tree/master/examples/vs1003_hello,里面源文件已经包含音频,不用读sd卡就可以直接播放

Update 4:
MFRC-522模块:
参考Update2和http://www.geek-workshop.com/thread-4600-1-1.html,利用软件模拟SPI测试成功。
回复

使用道具 举报

发表于 2013-12-25 12:40:54 | 显示全部楼层
自己写库文件可以实现,如果采用现有的库文件方式不行的,我做过实验的,SD卡模块可以连接多个
回复 支持 反对

使用道具 举报

发表于 2013-12-25 12:51:34 | 显示全部楼层
利用片选进行分时制工作.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-26 11:38:54 | 显示全部楼层
顶贴的来了。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 11:02 , Processed in 0.036191 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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