我有带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。还有什么需要设置的吗?甚至可以更改吗?
感谢您的回答
答案 0 :(得分:1)
SPI通过使用独立的从选择线来支持多个设备。
所需的安排如下所示(来自https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/SPI_three_slaves.svg/350px-SPI_three_slaves.svg.png)
这意味着两个设备可以共享时钟(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);
这些方法允许您更改选择引脚。