# Neotron-Pico **Repository Path**: shiliupi/Neotron-Pico ## Basic Information - **Project Name**: Neotron-Pico - **Description**: A Neotron powered by the Raspberry Pi Pico - **Primary Language**: Python - **License**: CC-BY-SA-4.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-27 - **Last Updated**: 2025-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 查看此项目 在[CADLAB.io](https://cadlab.io/project/26331) 上查看此项目。 Neotron Pico > 一款基于 Raspberry Pi Pico 的 Neotron 系统,采用 micro-ATX 形状因子。 Neotron Pico 是基于 的理念,但使用低成本的 Raspberry Pi Pico 代替了德州仪器的 Tiva-C Launchpad。它还扩展到了全尺寸 micro-ATX,并增加了更多扩展插槽,以便您可以轻松设计和添加自己的外设。 ![Bare PCB Photo](./neotron-pico-bare-photo.jpg) ![3D PCB View](./neotron-pico-3d.jpg) ![Top-Down PCB View](./neotron-pico-top-3d.jpg) 可销售硬件 有时我会在 上提供套件,有时也会在 Elecrow 上提供套件或 。 设计 Raspberry Pi Pico 是 Neotron Pico 的核心。它使用 PIO 状态机生成 12 位超级 VGA 视频和数字 16 位 48 kHz 立体声音频。它还具有 I²C 和 SPI 总线。SPI 芯片选择和 IRQ 由 SPI 到 GPIO 扩展器处理。这提供了八个芯片选择和八个 IRQ,支持多达八个扩展插槽或外设。八个芯片选择可以全局禁用,允许 Pico 与 I/O 扩展器或选定的扩展插槽通信。电路板在“插槽 1”位置有一个 SD 卡,在“插槽 0”位置有一个板管理控制器,保留“插槽 2”到“插槽 7”用于扩展。每个扩展插槽都有 I²C 和 SPI,以及唯一的芯片选择和 IRQ 信号。 软件 Neotron Pico 设计为运行 Neotron OS——一个用 Rust 编写的类似 CP/M 或 MS-DOS 的操作系统。但是,作为开源硬件,您可以将 Neotron Pico 编程为执行几乎所有任务。 规格 - 双核 Cortex-M0+ * 一个专用于视频/音频 * 一个可用于操作系统/应用程序 - 264 KiB SRAM - 2 MiB 引导 ROM - micro-ATX 形状因子 - 用于存储的 SD 卡插槽 - 12V 直流输入 - 基于 SPI 和 I²C 的扩展总线 * 四个可外部访问的扩展插槽 * 带有两个更多插槽信号的调试引脚 - 双 PS/2 端口用于键盘和鼠标 - 16 位 48 kHz 立体声音频耳机输出、线路输出、线路输入和麦克风输入 - 12 位(4096 色)VGA 视频输出 * 支持 40x25、80x25 和 80x50 文本模式 * 支持 640x480 @ 60 Hz 16 色、320x240 @ 60 Hz / 300x200 @ 70 Hz 256 色图形模式 - 设计为运行 Neotron OS - 开源硬件 - 完全适合被动冷却 - 低功耗 - 手工组装设计 组件详细信息 处理器 主处理器模块是 Raspberry Pi Pico,其功能包括: - Raspberry Pi Silicon RP2040 SoC * 双核 Cortex-M0+ @ 133 MHz * 264 KiB 内部 SRAM * 无内部闪存 * USB 1.1 * SPI、UART、I²C 和 _可编程 I/O_ 外设 - 26 个 GPIO 引脚 - 2 MiB QSPI 闪存 - 板载 LED - 板载 5V 到 3.3V 调压器 - USB 2.0 全速 OTG 微型 AB 接口 - 零售价:4.00 美元 / 3.60 英镑 由于 Pico 的 I/O 受限(我们仅使用一半可用引脚用于视频输出),我们使用 Microchip MCP23S17 SPI 到 GPIO 扩展器和八路缓冲器来补充。有关更多详细信息,请参阅 部分。 | 引脚 | 名称 | 信号 | 功能 | | :--- | :--- | :------------ | :------------------------------------------------- | | 01 | GP0 | VGA_HSYNC | VGA 水平同步(31.5 kHz) | | 02 | GP1 | VGA_VSYNC | VGA 垂直同步(60 Hz/70 Hz) | | ... | ... | ... | ... | 超级 VGA 输出 Raspberry Pi Silicon RP2040 在一系列标准分辨率(包括 640x480 @ 60 Hz)下生成 12 位 VGA 视频。 - 15 针 D-Sub VGA 接口 - 12 位(4-4-4)RGB R2R DAC - 3peak TPF133A 或德州仪器 THS7316 RGB 视频缓冲器 * 36 MHz 带宽 - 最大支持 1024x768@60Hz * 6 dB 增益 * 驱动 75 欧姆标准 VGA 接口 * SOIC-8 封装(1.27 mm 节距) - 德州仪器 TPD7S019 同步/DDC 电平转换器和 RGB EMC 滤波器 * SSOP-16 封装(0.635 mm 节距) 该设计可以轻松适应移除 TPF133A/THS7316 视频缓冲器和 TPD7S019 电平转换器/滤波器,并改用 板以获得 DVI 输出(使用 HDMI 连接器)。 音频编解码器 音频子系统通过经典的蓝/绿/粉三色3.5毫米TRS接头提供16位48kHz立体声音频输入和输出。输入和输出音量可通过软件控制。 - 德州仪器TLV320AIC23B - I²S + I²C接口 - 放大后32mW耳机输出和线路输出 - 麦克风输入和线路输入 - TSSOP-28封装(0.635毫米间距) - 三色3.5毫米TRS接头(Kycon STX-4335-5BGP-S1) - 耳机输出(绿色) - 线路输入(蓝色) - 麦克风输入(粉色) - 带音频接头的ATX机箱AC'97引脚 - 耳机输出 - 麦克风输入 - 额外的线路电平输出引脚(例如用于额外的RCA音频接头——与3.5毫米耳机接头输出同时工作) - 内部线路电平输入引脚(例如用于CD-ROM音频——当使用3.5毫米线路输入接头时禁用) 板级管理控制器 上电复位序列、软关机、电压监控和PS/2接口由独立的STM32F0 SoC处理。 - 意法半导体STM32F0(STM32F030K6T6)微控制器 - 32位Arm Cortex-M0+内核 - 3.3V I/O(耐压至5V) - 32 KiB闪存 - 4 KiB SRAM - LQFP-32封装(0.8毫米间距) - 控制两个PS/2端口 - 监控5V和3.3V电源轨 - 控制主CPU的系统复位、软启动和软关机 - 可开启和关闭主5V调节器 - 从3.3V备用调节器运行 - 与主CPU的SPI接口(带专用IRQ线) - 连接到VGA DDC引脚的次级I²C总线 | 引脚 | 名称 | 信号 | 功能 | | :--- | :--- | :---------- | :---------------------------------------- | | 02 | PF0 | BUTTON_nPWR | 电源按钮输入(低电平有效) | | 03 | PF1 | BUTTON_nRST | 复位按钮输入(低电平有效) | | 06 | PA0 | MON_3V3 | 3.3V电源轨监控输入(1.65V典型值) | | 07 | PA1 | MON_5V | 5.0V电源轨监控输入(1.65V典型值) | | 08 | PA2 | SYS_nRESET | 系统复位输出(低电平有效) | | 09 | PA3 | DC_ON | 启用5.0V电源输出(高电平有效) | | 10 | PA4 | SPI1_nCS | SPI片选输入(低电平有效) | | 11 | PA5 | SPI1_SCK | SPI时钟输入 | | 12 | PA6 | SPI1_CIPO | SPI数据输出 | | 13 | PA7 | SPI1_COPI | SPI数据输入 | | 14 | PB0 | LED0 | 第一个状态LED的PWM输出 | | 15 | PB1 | LED1 | 第二个状态LED的PWM输出 | | 18 | PA8 | IRQ_nHOST | 主机中断输出(低电平有效) | | 19 | PA9 | I2C1_SCL | I²C时钟 | | 20 | PA10 | I2C1_SDA | I²C数据 | | 21 | PA11 | USART1_CTS | UART清除发送输出 | | 22 | PA12 | USART1_RTS | UART准备接收输入 | | 23 | PA13 | SWDIO | SWD编程数据输入 | | 24 | PA14 | SWCLK | SWD编程时钟输入 | | 25 | PA15 | PS2_CLK0 | 键盘时钟输入 | | 26 | PB3 | PS2_CLK1 | 鼠标时钟输入 | | 27 | PB4 | PS2_DAT0 | 键盘数据输入 | | 28 | PB5 | PS2_DAT1 | 鼠标数据输入 | | 29 | PB6 | USART1_TX | UART发送输出 | | 30 | PB7 | USART1_RX | UART接收输入 | 注意:上述表格中的UART信号作为数据终端设备(DTE)连接。 此设计还应与以下SoC引脚兼容(尽管可能需要重新编译软件): - STM32F042K4Tx - STM32F042K6Tx - STM32L071KBTx - STM32L071KZTx - STM32L072KZTx - STM32L081KZTx - STM32L082KZTx 注意:并非所有STM32引脚都耐压至5V,而PS/2协议是一个5V开漏系统,因此请确保所选部件的PS/2信号引脚具有5V耐压能力(数据手册中标记为`FT`或`FTt`)。上述所有部件应兼容,但尚未经过测试。如果您尝试过,请告知我们! PS/2键盘和鼠标 - Kycon双端口堆叠式6针DIN插座(Kycon KMDGX-6S/6S-S4N) - 通过板级管理控制器控制 电源供应 - 12V典型输入 - 如果不需要12V电源轨,8V至30V也可接受 - 带PTC保险丝,电流为2A - 反向极性保护 - 3A 5.0V主调节器(DC-DC开关模式调节器模块) - Morsun K7805-3AR3 - 200mA 3.3V备用调节器(从12V输入运行的超低功耗线性调节器) - 1A 3.3V调节器(从5.0V电源轨运行的高性能1117型线性调节器) - 由板级管理控制器控制和监控 实时时钟 Neotron Pico在完全断电时仍可保留时间和日期设置,使用实时时钟芯片和CR2032锂锰电池。这也会在非常低功耗的SRAM中保留系统设置,该SRAM集成在实时时钟芯片中。 - MCP7940N或DS1307Z+实时时钟 - CR2032电池备份(应可持续约10年) - 用于系统设置的56字节电池备份SRAM I/O扩展器 - MCP23S17 SPI到GPIO扩展器(SOIC-28) - 74HC138 3:8解码器(SOIC-16) - 五个调试LED - 八个片选输出(低电平有效) - 八个IRQ输入(高电平或低电平有效) 由于我们在Pico上为音频和视频使用了大量引脚,因此没有足够的引脚用于片选线。我们希望在SPI总线上通信的每个设备必须有一个唯一的片选线,因此引脚数量有限意味着我们只能支持有限数量的SPI设备。 然而,在此设计中,我们作弊并使用Microchip MCP23S17 I/O扩展器。这是一个可以通过SPI发送命令控制的SPI外设,具有16个GPIO引脚。它还有一个IRQ输出,可以在输入引脚达到某种状态时触发。MCP23S18(带有开漏输出)不适用——它的管脚排列不同。 问题在于Pico完成与选定SPI设备的通信后——如何让它告诉MCP23S17释放当前片选,而不会导致SPI总线流量也传递到当前选定的扩展插槽?我们通过使用一个简单的8位解码器/缓冲器加使能引脚来解决这个问题。这允许Pico一次断开所有片选信号,无论MCP23S17的输出如何。一旦禁用此功能,我们知道我们正在与仅MCP23S17通信,Pico可以命令它选择我们感兴趣的下一个片选。 中断也通过MCP23S17处理。我们配置设备在任何八个IRQ输入激活时提供一个IRQ(边沿触发,低电平有效)(可编程为边沿或电平触发,上升沿/高电平或下降沿/低电平)。当Pico从MCP23S17接收到IRQ时,它必须通过SPI读取引脚以确定哪个设备实际触发了中断。此模型类似于IBM PC中使用的模型——其中Intel 8088必须通过ISA总线与Intel 8259A可编程中断控制器通信以确定哪个中断被触发——除了我们的CPU速度非常快而总线相当慢,因此我们的中断延迟并不理想。更糟糕的是,如果在发生大SPI事务(例如从SD卡传输512字节块)时触发中断,Pico将不得不等待该事务完成才能与MCP23S17通信以处理IRQ。或者,它可以中途放弃SPI事务并在稍后重试(如果您的扩展设备可以容忍这种无礼行为)。 ``` +------+ +-----+ | |----------/OUTPUT_EN------------->| | | | | | | | +----------+ | | | |--CS_SEL0-> | | | | | | | |--CS_SEL1-> D | | | | | | | |--CS_SEL2-> C | | | | | | | |--CS_SEL3-> O | | | | | | | |--CS_SEL4-> E | | | | | | | |--CS_SEL5-> R | | | | | | | |--CS_SEL6-> | | | | | | | |--CS_SEL7-> | | | +-----+ v v v v v v v v | | +---+---+---+---+---+---+---+---+ | |--/IOCS--->| S S S S S S S S | | <---IRQ----| l l l l l l l l | | <===SPI===>|<============SPI============>| o o o o o o o o | | +---+---+---+---+---+---+---+---+ | <---IRQ7-----------------------+ | | <---IRQ6---------------------------+ | | <---IRQ5-------------------------------+ | | <---IRQ4-----------------------------------+ | | <---IRQ3---------------------------------------+ | | <---IRQ2-------------------------------------------+ | | <---IRQ1-----------------------------------------------+ | | <---IRQ0---------------------------------------------------+ +------+ +----------+ ``` 扩展 七个扩展插座允许您以后添加基于I²C或SPI的设备。每个插座提供一个片选和一个IRQ线——主板设计应确保每个插座获得这些信号的独特信号。每个扩展设备还应包含一个AT24C256或类似EEPROM设备。为了允许这些EEPROM设备被扫描,每个插槽还包含三个`EEPROM_ADDRESS`引脚,以唯一组合连接到Vcc或GND。这些应连接到您的AT24C256的EEPROM地址引脚,从而确保每个扩展卡的EEPROM具有唯一地址——插槽0为0x50,最大可能为插槽7的0x57。对于您的板上的板载设备,您应为每个设备安装一个AT24C256 EEPROM,以便板载设备可以被发现,就好像它们在扩展卡上一样。 扩展插槽是一个简单的2x10接头。我们建议使用TE卡边缘连接器,但如果您愿意,也可以使用两个1x10针头。 扩展连接器的管脚排列如下: ``` +--------+ SPI_COPI -| 1 2 |- GND SPI_CIPO -| 3 4 |- GND SPI_CLK -| 5 6 |- GND ~SPI_CS -| 7 8 |- ~IRQ I2C_SDA -| 9 10 |- I2C_SCL EEPROM_ADDR0 -| 11 12 |- EEPROM_ADDR1 EEPROM_ADDR2 -| 13 14 |- ~RESET 5V -| 15 16 |- 5V 3V3 -| 17 18 |- 3V3 GND -| 19 20 |- GND +--------+ ``` 四个扩展插槽与ATX机箱扩展支架对齐,允许使用带有外部连接器的卡。请注意,这些插槽排列方式与“PCI方式”一致,组件面向远离主板的I/O区域,而不是“ISA方式”,后者会使组件面向I/O区域。另外三个扩展插槽仅用于内部使用。 插槽分配 插槽0 插槽0的信号连接到板级管理控制器。片选和IRQ均连接。 插槽1 插槽1的信号连接到板载SD卡插槽。CS 1连接到卡片的`DAT3`引脚,IRQ 1连接到卡片插槽的`Card Detect`引脚。 插槽2 插槽2是最右侧的扩展插槽。 插槽3 插槽3是最右侧但一个的扩展插槽。 插槽4 插槽4是最左侧但一个的扩展插槽。 插槽5 插槽5是最左侧的扩展插槽。 插槽6 插槽6未安装。SPI片选6和IRQ 6仅在测试接头上可用。 插槽7 插槽7未安装。SPI片选7和IRQ 7仅在测试接头上可用。 主I²C总线 以下所有I²C设备地址均为7位值。请注意,在I²C中,消息中的第一个字节是控制字节;它由设备地址的前七位组成,并在最低位添加一位以指示读取(1)或写入(0)。 下述内存地址为8位值,用于访问I²C设备的内容,并且通常作为消息中的第二个字节。 - 设备地址0x1A - TLV320AIC23 - 内存地址0x00 - 左线路输入通道音量控制 - 内存地址0x01 - 右线路输入通道音量控制 - 内存地址0x02 - 左通道耳机音量控制 - 内存地址0x03 - 右通道耳机音量控制 - 内存地址0x04 - 模拟音频路径控制 - 内存地址0x05 - 数字音频路径控制 - 内存地址0x06 - 关闭电源控制 - 内存地址0x07 - 数字音频接口格式 - 内存地址0x08 - 采样率控制 - 内存地址0x09 - 数字接口激活 - 内存地址0x0F - 复位寄存器 - 设备地址0x52 - 插槽2 ID EEPROM - 内存地址0x00..0xFF - 使用NEID(Neotron扩展ID)格式的扩展卡规范 - 设备地址0x53 - 插槽3 ID EEPROM - 内存地址同插槽1 - 设备地址0x54 - 插槽4 ID EEPROM - 内存地址同插槽1 - 设备地址0x55 - 插槽5 ID EEPROM - 内存地址同插槽1 - 设备地址0x68 - 实时时钟(DS1307+变体) - 内存地址0x00..0x07 - 时钟配置 - 内存地址0x08..0x3F - 带电池备份的SRAM - 设备地址0x6F - 实时时钟(MCP7940N变体) - 内存地址0x00..0x1F - 时钟配置 - 内存地址0x20..0x5F - 带电池备份的SRAM 次级I²C总线 还有一个由板级管理控制器驱动的次级I²C总线。此总线连接到VGA接口的显示数据通道(DDC)引脚,允许读取VGA显示器的。此设备通常位于地址`0x50`。 扩展创意 为什么不自己设计并制作一张扩展卡呢?您可以尝试设计: - 双Atari/SEGA 9针游戏手柄接口 - Mikro Elektronika Click适配器,允许使用多种 - 带有Espressif ESP32-C3的Wi-Fi/蓝牙卡 - 第二处理器卡——例如带有RISC-V微控制器或经典Zilog Z80 - 基于OPL2或OPL3的FM合成器卡 - ISA适配卡(以直角安装ISA卡,即与基板平行)——一个简单的微控制器应能以8 MHz位 banging的方式处理ISA总线,并通过SPI外设接口连接到Neotron扩展插槽 - IDE接口卡,允许使用40针IDE硬盘驱动器和CD-ROM驱动器——这将与ISA总线适配器非常相似 - 软盘控制器卡——例如使用eSPI超级I/O芯片,或连接一个传统的ISA总线软盘控制器,如ISA适配器所示 - 基于的第二监视器输出显卡 自动化构建 该项目将PCB视为嵌入式固件: - 源文件是KiCAD 6文件(在`./Kicad`目录中) - 编译器是KiCAD 6以及各种自动化插件(如KiBom) - 构建系统是 - 构建输出是原理图和PCB的PDF版本,以及各种压缩的Gerber和钻孔文件。 我们不会将构建输出提交到此存储库——永远。相反,我们运行一个GitHub操作,使用KiBot生成我们的输出。在常规拉取请求中,构建输出作为特定GitHub操作运行的结果存储为工件。当标记新版本时,构建输出作为文件存储在中。 您可以通过KiBot Docker容器本地构建: ```console ~/Neotron-Pico $ docker run --rm -ti -v $(pwd):/work setsoft/kicad_auto:dev_k6 root@12345678:/# cd /work/Kicad root@12345678:/work/Kicad# kibot -c docs.kibot.yml -e neotron-pico.kicad_sch -b neotron-pico.kicad_pcb -d docs ``` 这将在`./Kicad/docs`目录中生成所有内容。 变更日志 有关详细更改列表,请参阅。 许可证 这些文档、原理图和PCB设计版权归Neotron开发人员所有,2022年。 (http://creativecommons.org/licenses/by-sa/4.0/) 本作品根据授权。 这意味着您可以: - 分享——复制并在任何介质或格式中分发材料 - 创造—— remix、转换并基于此材料进行创作,用于任何目的,包括商业用途 请注意,目录中提供的模型来自各种制造商。模型的使用条款和条件由原始制造商/作者规定。 注意:发布的文件免费提供,并且没有任何形式的担保——明示或暗示。在将设计用于下单或使用/改编/复制任何设计之前,请务必自行验证设计。Neotron开发人员不对您构建或混搭我们的设计后出现不符合预期的情况负责。这是一个正在进行的工作,您很可能需要修复某些地方。 贡献协议 除非您另有特别声明,否则您为包含在作品中的提交有意提交的任何贡献,根据Apache-2.0许可定义,在上述许可下授权,不附加任何其他条款或条件。 文章和评论 - - - - - - 数据表和参考资料 - Raspberry Pi Pico - 数据表: - Raspberry Pi Silicon RP2040 - 数据表: - 硬件设计指南: - 意法半导体STM32F031K6T6 - 数据表: - Morsun K7805-3AR3 - 数据表: - 德州仪器TLV320AIC23BPW - 数据表: - 注意:TLV320AIC23BI PW是工业温度范围(适用),而TLV320AIC23BPW R装在卷带上(也适用) - 德州仪器THS7316 - 数据表: - 德州仪器TPD7S019 - 数据表: - Microchip 24LC256 EEPROM - 信息页面: - Microchip MCP7940N实时时钟 - 信息页面: 组装说明 有关组装电路板的说明,请参阅。 焊接难度如何? 通常情况下,我从JLCPCB获得的电路板已经安装好了大部分表面贴装组件。这包括所有LED、小电感、电阻器和小电容器(所有均为0805尺寸)、晶体管(均为SOT-23),以及JLCPCB库存中可用的各种较大IC。剩下的只是较大的IC和通孔连接器。 在发布区域中,您会看到一个JLCPCB特定的物料清单(BoM),其中仅包含具有`Cxxxx`格式LCSC/JLCPCB部件编号的部件。上传此文件以及这些部件的位置文件`CPL`即可下单。 如果您想订购裸板,则设计为手工焊接。这就是为什么没有比0805更小的SMD组件的原因。 | 部件 | 制造商 | 型号 | Octopart | LCSC | JLCPCB | Digikey | Mouser | RS | Farnell | | :---------------------- | :---------------- | :-------------- | :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | | 主 CPU | Raspberry Pi | Pico (SC0915) | | N/A | N/A | | | N/A | | | BMC | ST Micro | STM32F030K6T6 | | | | | | | | | BMC (备用) | ST Micro | STM32F031K6T6 | | | | | | | | | 视频放大器 | Texas Instruments | THS7316 | | | | | N/A | N/A | N/A | | 视频放大器 (备用 1) | 3Peak | TPF133A | | | | N/A | N/A | N/A | N/A | | 视频放大器 (备用 2) | DIOO | DIO2663 | | | | N/A | N/A | N/A | N/A | | 视频 ESD 滤波器 | Texas Instruments | TPD7S019-15DBQR | | | | | | N/A | | | GPIO 扩展器 | Microchip | MCP23S17/SO | | | | | | | | | 音频编解码器 | Texas Instruments | TLV320AIC23BPW | | | | | | | | | 实时时钟 | Microchip | MCP7940N-I/P | | | | | | | | | 实时时钟 (备用) | Dallas | DS1307Z+ | | | | | | | | | 电源供应 | Mornsun | K7805-3AR3 | | | | | N/A | N/A | N/A | 以上是完整的翻译内容。