【问题标题】:Arduino Uno to Micro SPI pinout remapping?Arduino Uno 到 Micro SPI 引脚重新映射?
【发布时间】:2014-06-01 19:35:41
【问题描述】:
  • Web 开发人员进入硬件领域,所以请保持温和。

问题:我目前正在尝试使用 BlueFruit LE 分线板和 Arduino Micro,但是引脚排列不同,因为 Micro 具有专用 SPI 引脚,而 UNO 具有 SCK、MISO 和 MOSI 在引脚 13 上执行双重任务, 12 和 11。

问题:我可以在 Arduino IDE 或我正在使用的示例代码中的什么位置更改请求的引脚排列?

代码:

来自 Adafruit 的 echoDemo 示例草图(为简洁起见):

 #include <SPI.h>
 #include "Adafruit_BLE_UART.h"

 // Connect CLK/MISO/MOSI to hardware SPI
 // e.g. On UNO & compatible: CLK = 13, MISO = 12, MOSI = 11
 #define ADAFRUITBLE_REQ 10
 #define ADAFRUITBLE_RDY 2     // This should be an interrupt pin, on Uno thats #2 or #3
 #define ADAFRUITBLE_RST 9

如上所述,“UNO & compatible...”正在所述板上寻找正确的引脚。

我已经在两个#include 文件中按名称(CLK 等)搜索了引脚,但没有找到它们的参考。

结果应该是 Arduino IDE 控制台中的以下输出:

 Adafruit Bluefruit Low Energy nRF8001 Print echo demo
 * Advertising started

第二行应该从 BlueFruit LE 板返回到 Micro 并输出到控制台。

我的结果是只输出第一行。

可以理解的是,Arduino 网站上有图表详细说明了 SPI 引脚,并且在 Micro 上清楚地标记了它们(附图片)。我正在寻找的是如何/在何处将这些引脚重新映射到 Micro 的引脚。

任何需要挖掘的帮助、参考资料或文件都会有很大帮助。

•• 更新

感谢下面的答案,我们离我们更近了一步。

对草图中的引脚分配进行了以下更改:

 #include <SPI.h>
 #include "Adafruit_BLE_UART.h"

 // Connect CLK/MISO/MOSI to hardware SPI
 // e.g. On UNO & compatible: CLK = 13, MISO = 12, MOSI = 11
 #define ADAFRUITBLE_REQ SS
 #define ADAFRUITBLE_RDY 2     // This should be an interrupt pin, on Uno thats #2 or #3
 #define ADAFRUITBLE_RST 3

以下是修改后的ble_system.h:

 #ifndef BLE_SYSTEM_H_
 #define BLE_SYSTEM_H

 /*
 #define HAL_IO_RADIO_CSN       SS
 #define HAL_IO_RADIO_REQN      SS
 #define HAL_IO_RADIO_RDY       3
 #define HAL_IO_RADIO_SCK       SCK
 #define HAL_IO_RADIO_MOSI      MOSI
 #define HAL_IO_RADIO_MISO      MISO
 #define HAL_IO_RADIO_RESET     9
 #define HAL_IO_RADIO_ACTIVE    8

 //#define HAL_IO_LED0          2
 //#define HAL_IO_LED1          6
 */

新结果:

• 第 1 行“Adafruit Bluefruit Low Energy nRF8001 Print echo demo”的控制台输出相同。

• 在控制台中键入“getState()”并按 Enter 会产生大量并行字符串,导致 Arduino IDE 崩溃

看起来 BTLE 分线板实际上可能工作正常,但传入 Micro 的数据没有被正确解析。

【问题讨论】:

  • 不是硬件问题,适合这里。
  • 你找到答案了吗?我有相同的 Arduino 微板和相同的 BLE 盾牌。

标签: bluetooth arduino microcontroller bluetooth-lowenergy


【解决方案1】:

查看此 Adafruit github 页面以了解他们的 Bluetooth Low Energy Breakout 板。

【讨论】:

  • 感谢 GH 页面的链接。我还没有看到它。但是我使用的是 Arduino Micro(如 OP 所示),这意味着引脚排列与 UNO 不同。
  • 我知道问题是您没有使用 Uno。我发布的链接说明了引脚的定义位置(在代码中)。
  • 这更有意义。我现在肯定有了更多的进步,输出出现在控制台中,虽然现在它挂在 Arduino IDE 中!更新 OP ^.
【解决方案2】:

您无需担心重新映射引脚。使用 SPI 的代码将通过 MCU 中的 SPI 外设访问它,该外设已经知道要使用的“正确”引脚。所以只要软件使用内置的 SPI 外设,硬件连接到 SPI 引脚,也无需更改。

【讨论】:

  • 听起来很合理。 MCU 数据表看起来可以做到这一点,但我找不到任何专门针对它的文档。 Arduino Micro 页面还说,单独标记的引脚特定于 MISO、MOSI、SCK、SS 等……你能分享一个链接到在 Micro 中执行此操作的 MCU 的文档吗?谢谢!
  • 您检查过标有“SPI”的数据表部分吗?
  • 是的。似乎确实可以得出结论,不需要更改从 BlueFruit 读取的引脚。尽管使用 Uno 的 Adafruit 布局中所述的正常引脚排列,但这种排列不起作用。我现在已经尝试了多次,结果在 OP 中。这就是我要问的全部原因。感谢您在数据表上提供更多信息。
  • 用上面的新结果更新了原始帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多