首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spi连接2台具有不同spi模式的设备

Spi连接2台具有不同spi模式的设备
EN

Stack Overflow用户
提问于 2013-05-28 04:48:29
回答 2查看 1.1K关注 0票数 1

我有两个不同的设备要与Arduino连接。一个Ethernet屏蔽和一个轴编码器。第一个模式为SPI模式0,第二个模式为2。它们相互冲突。这个问题有解决方案吗?

我使用不同的芯片选择引脚,这两个设备完全独立工作。

我能做些什么来解决这个问题?有没有我错过的教程?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-28 06:24:22

您可以在两个芯片选择之间共享SPI,每个芯片选择都有自己的模式。我这样做。只需编写一个帮助函数,用来代替指定SPI完整配置的每个芯片选择的digitalwrite。

代码语言:javascript
复制
void cs1_low() {
    SPI.setDataMode(SPI_MODE0);
    SPI.setClockDivider(spiRate);
    digitalWrite(MP3_XCS, LOW);
}

void cs2_low() {
    SPI.setDataMode(SPI_MODE1);
    SPI.setClockDivider(spiRate/2)
    digitalWrite(MP3_XCS, LOW);
}

..。

代码语言:javascript
复制
cs1_low();
foo = SPI.transfer(bar);
cs1_high(); //Deselect Control

...blah blah...

cs2_low();
foo = SPI.transfer(bar);
cs2_high(); //Deselect Control

在某些情况下,您可能需要考虑结算。我在SD cards和其他不同的芯片之间使用这一点。

最佳实践是不要假设SPI处于您想要的模式,因为不同的库或中断可能已经更改了它。我见过很多次,模式是相同的,但SD卡和其他卡的速度不同。导致“好吧,它开始了,但后来我得到了垃圾”。

票数 3
EN

Stack Overflow用户

发布于 2013-05-28 05:55:31

如果您有两个SPI端口可用,您还可以为每个设备使用不同的端口,并相应地配置每个端口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16780376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档