Arduino Nano:是否支持SPI?

5

Arduino Nano上的SPI硬件可以使用吗?

Nano页面上写道:

SPI:10(SS),11(MOSI),12(MISO),13(SCK)。这些引脚支持SPI通信,尽管由底层硬件提供,但目前未包含在Arduino语言中。

然而有一个SPI库

请问有人能解释这个矛盾吗?我认为要么

  • nano页面过时了
  • SPI库不支持Nano SPI硬件,但支持其他板子
  • SPI库仅以软件形式实现于Nano

是哪一个呢?

谢谢

3个回答

6
正确答案是“以上各种组合”:
  • Arduino Nano基于ATmega168/328芯片,该芯片支持硬件SPI。
  • SPI库仅支持硬件SPI(不管Arduino型号如何)。请注意,您可以相对较慢地使用位移来进行SPI,而不会出现任何问题,这将是一个相对容易的软件实现。
  • SPI库的状态应视为与Wire库的状态相同:不是核心Arduino服务的一部分(与PWM、ADC和数字GPIO相反),但仍得到广泛支持。

因此,也许你多选题中最接近的答案是“过时的”。 SPI的状态应与I2C的状态相同。


2
这在2010年是正确的,但到你写这篇文章的2013年已经不再准确。Arduino在2010年9月底开始将SPI列为Duemilanove板上这些引脚的官方库支持功能,而此前他们列出了一种硬件能力,但不受软件支持。他们似乎只是没有更新与Nano相对应的页面。 - Chris Stratton

3

这应该是一个注释,但我没有足够的声望。

正如angelatlarge所说,SPI库对Nano与其他Arduino一样受支持。但是:

Nano(像所有的Arduino一样)将LED连接到数字引脚13。由于Nano的引脚13也是SPI的SCLK,因此在高波特率下可能会遇到问题。如果您遇到问题,请尝试拆下LED。

来自Nano页面:来源

...

  • SPI:10(SS),11(MOSI),12(MISO),13(SCK)。这些引脚支持SPI通信,虽然由底层硬件提供,但目前未包含在Arduino语言中。

  • LED:13.有一个内置LED连接到数字引脚13。当引脚为HIGH值时,LED亮起,当引脚为LOW时,它关闭。


1
Nano的产品页面已经过时,但它与其他基于ATmega168/ATmega328p的Arduino具有相同的硬件和软件SPI支持。
通过wayback机器上的一些考古发现,功能上类似的Duemilanove产品页面在2010年9月15日至26日之间从硬件但不是软件提到了SPI库支持。当Uno推出时,其产品页面基于当时Duemilanvoe的状态,因此它一直声称支持。
应该对Nano页面进行相应的更新,但这似乎被忽视了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接