更改Arduino uno SD.h上的SPI引脚

时间:2019-02-12 22:05:18

标签: arduino

我有带ENC28J60的Arduino uno和microSD卡读卡器,两者均能独立正常工作。唯一的问题是它们都使用相同的引脚13,12,11,10。有没有办法将其更改为另一个?

我试图看一下SD.h库,因为它对我来说似乎更具可读性,并像这样更改Sd2PinMap中的设置

// SPI port
uint8_t const SS_PIN = 5;
uint8_t const MOSI_PIN = 6;
uint8_t const MISO_PIN = 7;
uint8_t const SCK_PIN = 4;

似乎没有任何效果。我将它们匹配,因此新引脚也为PWM。还有什么需要设置的吗?甚至可以更改吗?
感谢您的回答

1 个答案:

答案 0 :(得分:1)

SPI通过使用独立的从选择线来支持多个设备。

所需的安排如下所示(来自https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/SPI_three_slaves.svg/350px-SPI_three_slaves.svg.png

SPI with multiple slaves

这意味着两个设备可以共享时钟(SCK),输入(MISO)和输出(MOSI)引脚。但是每个设备都需要使用单独的选择(SS)引脚。

根据要使用的库来访问这些设备,然后可以将它们配置为使用不同的选择引脚。

例如对于https://github.com/arduino-libraries/SD,您可以使用:

boolean begin(uint8_t csPin = SD_CHIP_SELECT_PIN);

,对于https://github.com/njh/EtherCard,您可以使用:

static uint8_t begin (const uint16_t size, const uint8_t* macaddr,
                      uint8_t csPin = SS);

这些方法允许您更改选择引脚。