Arduino MKR 板只有有限数量的 GPIO。MKR Vidor 4000 不同,因为它有一个 FPGA 来支持它的主微控制器。Mini PCIe 连接器上提供了许多 FPGA 引脚。所以我仔细研究了这个连接器,想看看这些引脚上有哪些功能。
该连接器有 52 个位置,可以从电路板的官方示意图中获取引脚排列。下表显示了 Vidor 和常规 mPCIe 上的引脚及其功能:
pin on Vidor on mCPIe || on mPCIe on Vidor pin
1 WM_PIO2/PEX_PIN1 WAKE# || +3V3AUX +3V3 2
3 WM_PIO3/PEX_PIN3 COEX1 || GND GND 4
5 WM_PIO4/PEX_PIN5 COEX2 || +1.5V PEX_PIN6 6
7 WM_PIO34/PEX_PIN7 CLKREQ# || UIM_PWR PEX_PIN8 8
9 GND GND || UIM_DATA PEX_PIN10 10
11 PEX_PIN11 REFCLK- || UIM_CLK PEX_PIN12 12
13 PEX_PIN13 REFCLK+ || UIM_RESET PEX_PIN14 14
15 GND GND || UIM_VPP PEX_PIN16 16
17 WM_PIO24 RESERVED || GND GND 18
19 WM_PIO25 RESERVED || W_DISABLE# PEX_PIN20 20
21 GND GND || PERST# PEX_RST 22
23 PEX_PIN23 PERn0 || +3.3VAUX +3V3 24
25 PEX_PIN25 PERp0 || GND GND 26
27 GND GND || +1.5V PEX_PIN28 28
29 GND GND || SMB_CLK PEX_PIN30 30
31 PEX_PIN31 PETn0 || SMB_DATA PEX_PIN32 32
33 PEX_PIN33 PETp0 || GND GND 34
35 GND GND || USB_D- USB_DM 36
37 GND GND || USB_D+ USB_DP 38
39 +3V3 +3.3VAUX || GND GND 40
41 +3V3 +3.3VAUX || LED_WWAN# PEX_PIN42 42
43 GND GND || LED_WLAN# PEX_PIN44 44
45 PEX_PIN45 RESERVED || LED_WPAN# PEX_PIN46 46
47 PEX_PIN47 RESERVED || +1.5V PEX_PIN48 48
49 PEX_PIN49 RESERVED || GND GND 50
51 PEX_PIN51 RESERVED || +3.3VAUX +3V3 52
这表明 Vidor 在某种程度上兼容计算机中使用的任何标准 Mini PCIe 接头。至少 GND 和 3.3V 引脚以及 USB 引脚位于同一位置。在 Vidor 上,Mini PCIe 连接器上的 USB 引脚直接连接到板另一端的 Micro USB 连接器。因此,当插入计算机上的 Mini PCIe 插座时,可能无需使用额外的 USB 电缆即可对 Vidor 进行编程。
复位后,当没有编程时,所有这些引脚都是输入。因此,如果将其插入计算机,则不会发生任何不良情况。但是在对引脚进行编程时必须小心。在某些 1.5V 引脚上放置高电平 (3.3V) 可能会带来一些损坏风险。
将引脚用作 GPIO 非常简单。实际上它已经在 VidorTestSketch 中显示(https://github.com/vidor-libraries/VidorPeripherals/blob/master/examples/VidorTestSketch/VidorTestSketch.ino ):
// Ok, so we know now that the FPGA contains the extended GPIO IP
// Please refer to the online documentation for the actual pin assignment
// Let's configure pin A0 to be an output, controlled by the FPGA
FPGA.pinMode(33, OUTPUT);
FPGA.digitalWrite(33, HIGH);
困难的部分是弄清楚为什么他们使用 33 作为引脚号。众所周知,MKR 引脚(AREF、A0..A6、D0..D14)分配了 32 到 54 号。所以 A0 是 33,A1 是 34,依此类推。D14 为 54。
但是 Mini PCIe 连接器上的针脚呢?当您深入研究 Arduino Vidor 论坛时,您会发现一个带有映射的电子表格:
https://docs.google.com/spreadsheets/d/1oAL1Iz39eCHi0IVyMiTRyekmzJg5TgeyO5t0fN6Vl4U/edit#gid=0
“miniPCIe pinout”选项卡显示映射。
pin name number in FPGA
22 PEX_RST 0
6 PEX_PIN6 1
8 PEX_PIN8 2
10 PEX_PIN10 3
12 PEX_PIN12 4
14 PEX_PIN14 5
16 PEX_PIN16 6
20 PEX_PIN20 7
28 PEX_PIN28 8
30 PEX_PIN30 9
32 PEX_PIN32 10
42 PEX_PIN42 11
44 PEX_PIN44 12
45 PEX_PIN45 13
46 PEX_PIN46 14
47 PEX_PIN47 15
48 PEX_PIN48 16
49 PEX_PIN49 17
51 PEX_PIN51 18
11 PEX_PIN11 19 this pin is only an input
13 PEX_PIN13 20 this pin is only an input
23 PEX_PIN23 21 this pin is only an input
25 PEX_PIN25 22 this pin is only an input
31 PEX_PIN31 23 this pin is only an input
33 PEX_PIN33 24 this pin is only an input
对于我的测试,这被证明是正确的。
要访问引脚,可以将电缆直接焊接到焊盘上,这有点棘手或使用适配器。我找不到一个好的适配器,所以我自己做了一个。你可以在这里找到数据:
https://github.com/generationmake/VidorBreakout
分线板将所有 GND 和 3.3V 引脚连接在一起,仅将 GPIO 单独连接到引脚头。此外,Vidor 可以用 M2.5 螺丝直接拧到适配器上,两者都形成一个坚固的单元。
该设计是使用 3D 模型和 FreeCAD 进行的,因此不会发生碰撞。
适配器遵循 Vidor 的 2.54 毫米网格。所以两者都可以插入面包板。虽然您需要一个特殊的面包板,因为适配器比普通面包板更宽。
为了演示 GPIO 和适配器的功能,我使用 17 个绿色 3mm LED 和一个接地的 3.3 kOhm 电阻器制作了一个 LED 序列。
不幸的是,我找不到更多 Mini PCIe 连接器引脚支持的功能。希望这种情况在未来有所改变。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !