|

楼主 |
发表于 2020-2-14 16:36:09
|
显示全部楼层
本帖最后由 5bin 于 2020-2-14 19:36 编辑
是的,你也可以打造自己的Arcade兼容掌机~
翻译的文档来源:https://arcade.makecode.com/hardware/adding
【【【创建你自己的Arcade硬件】】】
【【概览】】
MakeCode Arcade系统旨在在PC或移动设备上提供更多虚拟体验的同时,还支持各种跨硬件的兼容游戏设备。我们鼓励各位使用本文档中所介绍的指南来设计并构建你自己的MakeCode Arcade兼容掌机。
Arcade硬件必须包含以下组件:
● 一个ARM Cortex M微控制器(见MCU)
● 一个160x120分辨率的显示屏(见显示)
● 4个方向按键,2个动作按键(A/B),1个功能按键(菜单/选择/暂停),1个复位按键(见按键)
● 一个单声道的音频输出(见音频)
● 用于编程烧录及供电的USB接口(见USB接口)
● 一些必要的调试支持(见调试)
此外我们还建议:
● 一个用于联机通讯的3.5mm立体声音频接口(见JACDAC)
● 额外的电池支持,一个电池接口或内置的锂电池,以及相关的充电电路(见电池)
● 电源LED指示(见电源)
以及其它的可选组件:
● 一个三轴加速度计或其它运动传感器(见加速度计)
● 一个震动马达(见震动)
● 用于耳机的第二个3.5mm立体声音频接口(见音频)
● 额外的flash储存
● 一些状态指示LED(见LED)
● 一个扩展接口用于支持外部设备及扩展电路(见扩展接口)
我们还构建了一套开源的最小系统作为Arcade开发板的参考设计。它由原理图(包含PDF及Altium格式),PCB布局(包含Gerbers及Altium格式)与BOM(Excel格式)组成。这些文件可以在相关的github仓库中找到。
通过灵活配置的系统固件可使特定组件及电路设计满足上述规范(见配置)。
本页面的其余三个主要部分都依据我们的参考设计:
● 组件章节描述了必要及可选的组件与功能
● 硬件设计说明提供了附加电路设计的一些注意事项
● 固件开发说明描述了固件相关的开发与配置
【【组件】】
【MCU】
MakeCode Arcade目前仅支持基于ARM Cortex的微控制器,其中的Cortex M4F系列已通过兼容测试。
Arcade的显示方案要求至少160x120x4位的屏幕,大约10KB不到的内存空间;此外还需要至少双倍的数据空间作为显示双缓冲区,以及用户很可能进行较多数量精灵的操作。考虑到堆碎片等情况,要求硬件至少96KB的内存;而较大一些的程序可能会需要更大的内存空间才能够运行。此外,建议512KB的闪存空间以及至少64MHz的处理器速度。
目前已支持的两个系列的微控制器如下:
● D51,基于Microchip的ATSAMD51G19A(Cortex M4F, 192kB of RAM, 512kB of flash, 120MHz)
● F4,基于ST Micro的STM32F4系列如下
- STM32F401xE (Cortex M4F, 96kB of RAM, 512kB of flash, 84MHz)
- STM32F411xE (Cortex M4F, 128kB of RAM, 512kB of flash, 96MHz)
- STM32F412xE (Cortex M4F, 128kB of RAM, 512kB of flash, 96MHz)
- STM32F412xG (Cortex M4F, 256kB of RAM, 1024kB of flash, 96MHz)
其中STM32F41x系列支持100MHz的运行速度,但由于启用USB的关系则只能运行在96MHz的主频上;我们支持至少48引脚的封装。仅64引脚封装的STM32F412支持并行的显示接口,当需要使用基于ILI9341的320x240显示屏时(见显示)。
此外,我们正在考虑增加对以下微控制器的支持(但不在六个月内):
● 基于Nordic的NRF52840(Cortex M4F, 256kB of RAM, 1024kB of flash, 64MHz)
当然还有其它更多可能的选择,期待你的反馈。
【显示】
当使用分辨率为160x128的显示屏时,我们将忽略底部的8行,以便于轻松升级到分辨率为320x240的显示屏。我们采用可用户自定义的15种颜色以及透明度作为调色板。以下为一些经过测试的显示方案,如果有更合适的显示屏及方案,请反馈给我们。
分辨率为160x128的基于控制器ST7735或ILI9163C
在此方案中将使用SPI接口连接至MCU,须使用附带SPI接口的显示屏。不同的显示屏对相同引脚可使用不同的命名,如下都是等效的:
● RS、DC或A0
● MOSI、SDA或DATA
● SCK、SCLK、SCL或CLOCK
● LEDK或LED-
● LEDA或LED+
● RESET或RST
此外多数显示屏并没有MISO,即便有也无需连接。
LCD_BL信号用来调制屏幕背光,以实现亮度调节及关闭;在参考设计中展示了一种针对此操作的方法。
如下我们找到一些基于控制器ST7735和ILI9163C的显示屏:
● MTF0177SN-10
● Z180SN009
● JD-T18003-T01
分辨率为320x240的基于控制器ILI9341的SPI接口
对于D5的MCU方案,SPI接口可以运行在50MHz的频率上,多数显示屏似乎也能够匹配该速度,从而达到大约36fps的刷新率。
相对应的请使用以下显示配置参数:
DISPLAY_TYPE = 9341
DISPLAY_WIDTH = 320
DISPLAY_HEIGHT = 240
DISPLAY_CFG0 = 0x08
DISPLAY_CFG1 = 0x0010ff
DISPLAY_CFG2 = 50
分辨率为320x240的基于控制器ILI9341的8位并行接口
对于F4的MCU方案,将采用8位并行接口,因为42MHz的SPI接口不够稳定,而这需要使用STM32F412RE或更高的版本。
在STM32F412的64引脚版本中,FSMC控制器所对应的引脚连接如下:
● RD/NOE ==== PC5
● WR/NWE ==== PC2/PD2
● RS/A0 ==== PC3
● D0 ==== PB14
● D1 ==== PC6
● D2 ==== PC11
● D3 ==== PC12
● D4 ==== PA2
● D5 ==== PA3
● D6 ==== PA4
● D7 ==== PA5
显示屏的CS引脚可以连接到任意IO上(由bootloader配置中的DISPLAY_CS定义)。目前RS引脚也可通过软件来控制,但建议将其连接至A0(由bootloader配置中的DISPLAY_DC定义)。
WR引脚由bootloader配置中的DISPLAY_MOSI定义;如果连接了显示数据读取则应将DISPLAY_MISO配置为PC5,否则请配置为未定义;此外DISPLAY_SCK应始终配置为未定义。
相对应的请使用以下显示配置参数:
DISPLAY_TYPE = 9341
DISPLAY_WIDTH = 320
DISPLAY_HEIGHT = 240
DISPLAY_CFG0 = 0x08
DISPLAY_CFG1 = 0x0010ff
DISPLAY_CFG2 = 0x1000004
未完待续~
|
|