├── .gitignore ├── dev-board ├── pcb │ ├── gerbers.zip │ ├── fp-lib-table │ ├── sym-lib-table │ ├── .gitignore │ ├── dev-board.dcm │ ├── dev-board.lib │ ├── bom.csv │ ├── 25.sch │ ├── dev-board.pro │ ├── dev-board-cache.lib │ └── dev-board.sch ├── dev-board-top.png ├── dev-board-bottom.png └── README.md ├── .cargo └── config ├── src ├── prelude.rs ├── utils.rs ├── log.rs ├── error.rs ├── lib.rs └── series25.rs ├── memory.x ├── CHANGELOG.md ├── RELEASE_PROCESS.md ├── LICENSE ├── .travis.yml ├── README.md ├── .gdbinit ├── Cargo.toml └── examples └── dump.rs /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /dev-board/pcb/gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonas-schievink/spi-memory/HEAD/dev-board/pcb/gerbers.zip -------------------------------------------------------------------------------- /dev-board/dev-board-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonas-schievink/spi-memory/HEAD/dev-board/dev-board-top.png -------------------------------------------------------------------------------- /dev-board/dev-board-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jonas-schievink/spi-memory/HEAD/dev-board/dev-board-bottom.png -------------------------------------------------------------------------------- /dev-board/pcb/fp-lib-table: -------------------------------------------------------------------------------- 1 | (fp_lib_table 2 | (lib (name dev-board)(type KiCad)(uri ${KIPRJMOD}/dev-board.pretty)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /dev-board/pcb/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name dev-board)(type Legacy)(uri ${KIPRJMOD}/dev-board.lib)(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /.cargo/config: -------------------------------------------------------------------------------- 1 | [target.'cfg(all(target_arch = "arm", target_os = "none"))'] 2 | runner = 'arm-none-eabi-gdb' 3 | rustflags = [ 4 | "-C", "link-arg=-Tlink.x", 5 | ] 6 | -------------------------------------------------------------------------------- /src/prelude.rs: -------------------------------------------------------------------------------- 1 | //! Automatically loads in the BlockDevice and Read trait so the user doesn't have to do that all the time. 2 | pub use crate::{BlockDevice, Read}; 3 | -------------------------------------------------------------------------------- /dev-board/pcb/.gitignore: -------------------------------------------------------------------------------- 1 | # Backup and autosave files 2 | _autosave* 3 | *.sch-bak 4 | *.kicad_pcb-bak 5 | 6 | # Netlist. Generated from schematic. 7 | *.net 8 | 9 | # "Intermediate Netlist" (?) created by BOM generation 10 | *.xml 11 | 12 | fp-info-cache 13 | -------------------------------------------------------------------------------- /memory.x: -------------------------------------------------------------------------------- 1 | MEMORY 2 | { 3 | /* NOTE K = KiBi = 1024 bytes */ 4 | FLASH : ORIGIN = 0x08000000, LENGTH = 64K 5 | RAM : ORIGIN = 0x20000000, LENGTH = 32K 6 | } 7 | 8 | /* This is where the call stack will be allocated. */ 9 | /* The stack is of the full descending type. */ 10 | /* NOTE Do NOT modify `_stack_start` unless you know what you are doing */ 11 | _stack_start = ORIGIN(RAM) + LENGTH(RAM); 12 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## Unreleased 4 | 5 | * Implement `Display` for `Error` 6 | 7 | ## 0.2.0 - 2020-03-25 8 | 9 | * Add `BlockDevice` and `Read` traits, and allow writing to devices ([#5]) 10 | * Improve and fix handling of the JEDEC ID ([#16]) 11 | 12 | [#5]: https://github.com/jonas-schievink/spi-memory/pull/5 13 | [#16]: https://github.com/jonas-schievink/spi-memory/pull/16 14 | 15 | ## 0.1.0 - 2019-05-24 16 | 17 | Initial release. 18 | -------------------------------------------------------------------------------- /dev-board/pcb/dev-board.dcm: -------------------------------------------------------------------------------- 1 | EESchema-DOCLIB Version 2.0 2 | # 3 | $CMP MCP2210-I-SS 4 | D USB to SPI Protocol Converter with GPIO,SSOP 5 | K USB,SPI,Master,Converter,Bridge 6 | F https://ww1.microchip.com/downloads/en/DeviceDoc/22288A.pdf 7 | $ENDCMP 8 | # 9 | $CMP TPS2115APW 10 | D Autoswitching Power Mux, TSSOP-8 11 | K power,source,selector,switch,multiplexer 12 | F http://www.ti.com/lit/ds/symlink/tps2115a.pdf 13 | $ENDCMP 14 | # 15 | #End Doc Library 16 | -------------------------------------------------------------------------------- /src/utils.rs: -------------------------------------------------------------------------------- 1 | use core::fmt; 2 | 3 | pub struct HexSlice(pub T) 4 | where 5 | T: AsRef<[u8]>; 6 | 7 | impl> fmt::Debug for HexSlice { 8 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 9 | f.write_str("[")?; 10 | for (i, byte) in self.0.as_ref().iter().enumerate() { 11 | if i != 0 { 12 | f.write_str(", ")?; 13 | } 14 | write!(f, "{:02x}", byte)?; 15 | } 16 | f.write_str("]") 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /RELEASE_PROCESS.md: -------------------------------------------------------------------------------- 1 | # What to do to publish a new release 2 | 3 | 1. Ensure all notable changes are in the changelog under "Unreleased". 4 | 5 | 2. Execute `cargo release ` to bump version(s), tag and publish 6 | everything. External subcommand, must be installed with `cargo install 7 | cargo-release`. 8 | 9 | `` can be one of `major|minor|patch`. If this is the first release 10 | (`0.1.0`), use `minor`, since the version starts out as `0.0.0`. 11 | 12 | 3. Go to the GitHub releases, edit the just-pushed tag. Copy the release notes 13 | from the changelog. 14 | -------------------------------------------------------------------------------- /dev-board/README.md: -------------------------------------------------------------------------------- 1 | # Development / Testing Board 2 | 3 | This directory contains design files and software for a development and testing 4 | PCB that can hold up to 16 SPI memory chips using the 25-series pinout. 5 | 6 | The PCB features a micro USB receptacle connected to a USB-to-SPI converter, and 7 | can also be mounted on a Raspberry Pi, directly using the Pi's native SPI 8 | peripheral (and Linux driver). The USB feature is useful for development of the 9 | library on a regular PC, while the latter is useful for performing automated 10 | Hardware-in-the-Loop testing. 11 | 12 | ![PCB Top](dev-board-top.png) 13 | ![PCB Bottom](dev-board-bottom.png) 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) Jonas Schievink 2 | 3 | Permission to use, copy, modify, and/or distribute this software for 4 | any purpose with or without fee is hereby granted. 5 | 6 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 7 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 8 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 9 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 10 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 11 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 12 | OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: 3 | - 1.35.0 4 | - stable 5 | - nightly 6 | cache: cargo 7 | sudo: false 8 | env: 9 | global: 10 | - TARGET_BUILD=thumbv7em-none-eabi 11 | - RUSTFLAGS="--deny warnings" 12 | - RUST_BACKTRACE=1 13 | - CARGO_INCREMENTAL=0 # decrease size of `target` to make the cache smaller 14 | matrix: 15 | - FEATURES="" # default configuration 16 | - FEATURES="--all-features" 17 | install: 18 | - rustup target add $TARGET_BUILD 19 | script: 20 | - cargo build --all --examples --target $TARGET_BUILD $FEATURES 21 | - cargo build --all --examples --target $TARGET_BUILD --release $FEATURES 22 | - cargo test -p spi-memory --lib 23 | notifications: 24 | email: 25 | on_success: never 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `spi-memory` 2 | 3 | [![crates.io](https://img.shields.io/crates/v/spi-memory.svg)](https://crates.io/crates/spi-memory) 4 | [![docs.rs](https://docs.rs/spi-memory/badge.svg)](https://docs.rs/spi-memory/) 5 | [![Build Status](https://travis-ci.org/jonas-schievink/spi-memory.svg?branch=master)](https://travis-ci.org/jonas-schievink/spi-memory) 6 | 7 | This crate provides a generic [`embedded-hal`]-based driver for different 8 | families of SPI Flash and EEPROM chips. 9 | 10 | Right now, only 25-series Flash chips are supported. Feel free to send PRs to 11 | support other families though! 12 | 13 | Please refer to the [changelog](CHANGELOG.md) to see what changed in the last 14 | releases. 15 | 16 | [`embedded-hal`]: https://github.com/rust-embedded/embedded-hal 17 | 18 | ## Usage 19 | 20 | Add an entry to your `Cargo.toml`: 21 | 22 | ```toml 23 | [dependencies] 24 | spi-memory = "0.2.0" 25 | ``` 26 | 27 | Check the [API Documentation](https://docs.rs/spi-memory/) for how to use the 28 | crate's functionality. 29 | -------------------------------------------------------------------------------- /.gdbinit: -------------------------------------------------------------------------------- 1 | # disable "are you sure you want to quit?" 2 | define hook-quit 3 | set confirm off 4 | end 5 | 6 | target extended-remote :3333 7 | 8 | # print demangled symbols 9 | set print asm-demangle on 10 | 11 | # set backtrace limit to not have infinite backtrace loops 12 | set backtrace limit 32 13 | 14 | # detect unhandled exceptions, hard faults and panics 15 | break DefaultHandler 16 | break HardFault 17 | break rust_begin_unwind 18 | 19 | monitor arm semihosting enable 20 | 21 | # # send captured ITM to the file itm.fifo 22 | # # (the microcontroller SWO pin must be connected to the programmer SWO pin) 23 | # # 8000000 must match the core clock frequency 24 | # monitor tpiu config internal itm.txt uart off 8000000 25 | 26 | # # OR: make the microcontroller SWO pin output compatible with UART (8N1) 27 | # # 8000000 must match the core clock frequency 28 | # # 2000000 is the frequency of the SWO pin 29 | # monitor tpiu config external uart off 8000000 2000000 30 | 31 | # # enable ITM port 0 32 | # monitor itm port 0 on 33 | 34 | load 35 | cont 36 | -------------------------------------------------------------------------------- /src/log.rs: -------------------------------------------------------------------------------- 1 | #![allow(unused_macros)] 2 | 3 | #[cfg(feature = "log")] 4 | macro_rules! error { 5 | ($($t:tt)*) => {{ log::error!($($t)*); }}; 6 | } 7 | 8 | #[cfg(feature = "log")] 9 | macro_rules! warn { 10 | ($($t:tt)*) => {{ log::warn!($($t)*); }}; 11 | } 12 | 13 | #[cfg(feature = "log")] 14 | macro_rules! info { 15 | ($($t:tt)*) => {{ log::info!($($t)*); }}; 16 | } 17 | 18 | #[cfg(feature = "log")] 19 | macro_rules! debug { 20 | ($($t:tt)*) => {{ log::debug!($($t)*); }}; 21 | } 22 | 23 | #[cfg(feature = "log")] 24 | macro_rules! trace { 25 | ($($t:tt)*) => {{ log::trace!($($t)*); }}; 26 | } 27 | 28 | #[cfg(not(feature = "log"))] 29 | macro_rules! error { 30 | ($($t:tt)*) => {{ format_args!($($t)*); }}; 31 | } 32 | 33 | #[cfg(not(feature = "log"))] 34 | macro_rules! warn { 35 | ($($t:tt)*) => {{ format_args!($($t)*); }}; 36 | } 37 | 38 | #[cfg(not(feature = "log"))] 39 | macro_rules! info { 40 | ($($t:tt)*) => {{ format_args!($($t)*); }}; 41 | } 42 | 43 | #[cfg(not(feature = "log"))] 44 | macro_rules! debug { 45 | ($($t:tt)*) => {{ format_args!($($t)*); }}; 46 | } 47 | 48 | #[cfg(not(feature = "log"))] 49 | macro_rules! trace { 50 | ($($t:tt)*) => {{ format_args!($($t)*); }}; 51 | } 52 | -------------------------------------------------------------------------------- /dev-board/pcb/dev-board.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # MCP2210-I-SS 5 | # 6 | DEF MCP2210-I-SS U 0 20 Y Y 1 F N 7 | F0 "U" -400 800 50 H V C CNN 8 | F1 "MCP2210-I-SS" 400 800 50 H V C CNN 9 | F2 "Package_SO:SSOP-20_5.3x7.2mm_P0.65mm" 0 1100 50 H I C CNN 10 | F3 "" 0 800 50 H I C CNN 11 | $FPLIST 12 | SSOP*5.3x7.2mm*P0.65mm* 13 | $ENDFPLIST 14 | DRAW 15 | S -400 700 400 -700 0 1 10 f 16 | X VDD 1 -100 800 100 D 50 50 1 1 W 17 | X GP4 10 500 -200 100 L 50 50 1 1 B 18 | X SCK 11 500 600 100 L 50 50 1 1 O 19 | X GP5 12 500 -100 100 L 50 50 1 1 B 20 | X MISO 13 500 400 100 L 50 50 1 1 I 21 | X GP6 14 500 0 100 L 50 50 1 1 B 22 | X GP7 15 500 100 100 L 50 50 1 1 B 23 | X GP8 16 500 200 100 L 50 50 1 1 B 24 | X VUSB 17 0 800 100 D 50 50 1 1 W 25 | X D- 18 -500 100 100 R 50 50 1 1 B 26 | X D+ 19 -500 0 100 R 50 50 1 1 B 27 | X OSC1 2 -500 400 100 R 50 50 1 1 I 28 | X VSS 20 0 -800 100 U 50 50 1 1 W 29 | X OSC2 3 -500 300 100 R 50 50 1 1 O 30 | X ~RST 4 -500 600 100 R 50 50 1 1 I 31 | X GP0 5 500 -600 100 L 50 50 1 1 B 32 | X GP1 6 500 -500 100 L 50 50 1 1 B 33 | X GP2 7 500 -400 100 L 50 50 1 1 B 34 | X GP3 8 500 -300 100 L 50 50 1 1 B 35 | X MOSI 9 500 500 100 L 50 50 1 1 O 36 | ENDDRAW 37 | ENDDEF 38 | # 39 | # TPS2115APW 40 | # 41 | DEF TPS2115APW U 0 20 Y Y 1 F N 42 | F0 "U" -300 350 50 H V C CNN 43 | F1 "TPS2115APW" 100 350 50 H V C CNN 44 | F2 "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" 0 500 50 H I C CNN 45 | F3 "" 0 0 50 H I C CNN 46 | $FPLIST 47 | TSSOP*4.4x3mm*P0.65mm* 48 | $ENDFPLIST 49 | DRAW 50 | S -300 -300 300 300 0 1 0 f 51 | X STAT 1 400 -100 100 L 50 50 1 1 O 52 | X D0 2 -400 0 100 R 50 50 1 1 I 53 | X D1 3 -400 -100 100 R 50 50 1 1 I 54 | X ILIM 4 -400 -200 100 R 50 50 1 1 I 55 | X GND 5 0 -400 100 U 50 50 1 1 W 56 | X IN2 6 -400 100 100 R 50 50 1 1 W 57 | X OUT 7 400 100 100 L 50 50 1 1 w 58 | X IN1 8 -400 200 100 R 50 50 1 1 W 59 | ENDDRAW 60 | ENDDEF 61 | # 62 | #End Library 63 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "spi-memory" 3 | version = "0.2.0" 4 | authors = ["Jonas Schievink ", "Henrik Böving "] 5 | edition = "2018" 6 | description = "A generic driver for different SPI Flash and EEPROM chips" 7 | documentation = "https://docs.rs/spi-memory/" 8 | repository = "https://github.com/jonas-schievink/spi-memory.git" 9 | keywords = ["embedded-hal-driver", "serial", "flash", "eeprom", "spi"] 10 | categories = ["embedded"] 11 | readme = "README.md" 12 | license = "0BSD" 13 | 14 | # cargo-release configuration 15 | [package.metadata.release] 16 | tag-message = "{{version}}" 17 | no-dev-version = true 18 | pre-release-commit-message = "Release {{version}}" 19 | 20 | # Change the changelog's `Unreleased` section to refer to this release and 21 | # prepend new `Unreleased` section 22 | [[package.metadata.release.pre-release-replacements]] 23 | file = "CHANGELOG.md" 24 | search = "## Unreleased" 25 | replace = "## Unreleased\n\nNo changes.\n\n## {{version}} - {{date}}" 26 | 27 | # Bump the version inside the example manifest in `README.md` 28 | [[package.metadata.release.pre-release-replacements]] 29 | file = "README.md" 30 | search = 'spi-memory = "[a-z0-9\\.-]+"' 31 | replace = 'spi-memory = "{{version}}"' 32 | 33 | # Bump the version referenced by the `html_root_url` attribute in `lib.rs` 34 | [[package.metadata.release.pre-release-replacements]] 35 | file = "src/lib.rs" 36 | search = "https://docs.rs/spi-memory/[a-z0-9\\.-]+" 37 | replace = "https://docs.rs/spi-memory/{{version}}" 38 | 39 | [dependencies] 40 | embedded-hal = "0.2.3" 41 | log = { version = "0.4.6", optional = true } 42 | bitflags = "1.0.4" 43 | 44 | [dev-dependencies] 45 | cortex-m = "0.6.0" 46 | cortex-m-rt = "0.6.8" 47 | cortex-m-semihosting = "0.3.3" 48 | stm32f4xx-hal = { version = "0.7.0", features = ["stm32f401"] } 49 | panic-semihosting = "0.5.2" 50 | 51 | [profile.dev] 52 | opt-level = "z" 53 | panic = "abort" 54 | -------------------------------------------------------------------------------- /src/error.rs: -------------------------------------------------------------------------------- 1 | use core::fmt::{self, Debug, Display}; 2 | use embedded_hal::blocking::spi::Transfer; 3 | use embedded_hal::digital::v2::OutputPin; 4 | 5 | mod private { 6 | #[derive(Debug)] 7 | pub enum Private {} 8 | } 9 | 10 | /// The error type used by this library. 11 | /// 12 | /// This can encapsulate an SPI or GPIO error, and adds its own protocol errors 13 | /// on top of that. 14 | pub enum Error, GPIO: OutputPin> { 15 | /// An SPI transfer failed. 16 | Spi(SPI::Error), 17 | 18 | /// A GPIO could not be set. 19 | Gpio(GPIO::Error), 20 | 21 | /// Status register contained unexpected flags. 22 | /// 23 | /// This can happen when the chip is faulty, incorrectly connected, or the 24 | /// driver wasn't constructed or destructed properly (eg. while there is 25 | /// still a write in progress). 26 | UnexpectedStatus, 27 | 28 | #[doc(hidden)] 29 | __NonExhaustive(private::Private), 30 | } 31 | 32 | impl, GPIO: OutputPin> Debug for Error 33 | where 34 | SPI::Error: Debug, 35 | GPIO::Error: Debug, 36 | { 37 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 38 | match self { 39 | Error::Spi(spi) => write!(f, "Error::Spi({:?})", spi), 40 | Error::Gpio(gpio) => write!(f, "Error::Gpio({:?})", gpio), 41 | Error::UnexpectedStatus => f.write_str("Error::UnexpectedStatus"), 42 | Error::__NonExhaustive(_) => unreachable!(), 43 | } 44 | } 45 | } 46 | 47 | impl, GPIO: OutputPin> Display for Error 48 | where 49 | SPI::Error: Display, 50 | GPIO::Error: Display, 51 | { 52 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 53 | match self { 54 | Error::Spi(spi) => write!(f, "SPI error: {}", spi), 55 | Error::Gpio(gpio) => write!(f, "GPIO error: {}", gpio), 56 | Error::UnexpectedStatus => f.write_str("unexpected value in status register"), 57 | Error::__NonExhaustive(_) => unreachable!(), 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | //! An [`embedded-hal`]-based SPI-Flash chip driver. 2 | //! 3 | //! This crate aims to be compatible with common families of SPI flash chips. 4 | //! Currently, reading, writing, erasing 25-series chips is supported, and 5 | //! support for other chip families (eg. 24-series chips) is planned. 6 | //! 7 | //! Contributions are welcome! 8 | //! 9 | //! [`embedded-hal`]: https://docs.rs/embedded-hal/ 10 | 11 | #![doc(html_root_url = "https://docs.rs/spi-memory/0.2.0")] 12 | #![warn(missing_debug_implementations, rust_2018_idioms)] 13 | #![cfg_attr(not(test), no_std)] 14 | 15 | #[macro_use] 16 | mod log; 17 | mod error; 18 | pub mod prelude; 19 | pub mod series25; 20 | mod utils; 21 | 22 | pub use crate::error::Error; 23 | 24 | use embedded_hal::blocking::spi::Transfer; 25 | use embedded_hal::digital::v2::OutputPin; 26 | 27 | /// A trait for reading operations from a memory chip. 28 | pub trait Read, CS: OutputPin> { 29 | /// Reads bytes from a memory chip. 30 | /// 31 | /// # Parameters 32 | /// * `addr`: The address to start reading at. 33 | /// * `buf`: The buffer to read `buf.len()` bytes into. 34 | fn read(&mut self, addr: Addr, buf: &mut [u8]) -> Result<(), Error>; 35 | } 36 | 37 | /// A trait for writing and erasing operations on a memory chip. 38 | pub trait BlockDevice, CS: OutputPin> { 39 | /// Erases sectors from the memory chip. 40 | /// 41 | /// # Parameters 42 | /// * `addr`: The address to start erasing at. If the address is not on a sector boundary, 43 | /// the lower bits can be ignored in order to make it fit. 44 | fn erase_sectors(&mut self, addr: Addr, amount: usize) -> Result<(), Error>; 45 | 46 | /// Erases the memory chip fully. 47 | /// 48 | /// Warning: Full erase operations can take a significant amount of time. 49 | /// Check your device's datasheet for precise numbers. 50 | fn erase_all(&mut self) -> Result<(), Error>; 51 | 52 | /// Writes bytes onto the memory chip. This method is supposed to assume that the sectors 53 | /// it is writing to have already been erased and should not do any erasing themselves. 54 | /// 55 | /// # Parameters 56 | /// * `addr`: The address to write to. 57 | /// * `data`: The bytes to write to `addr`. 58 | fn write_bytes(&mut self, addr: Addr, data: &mut [u8]) -> Result<(), Error>; 59 | } 60 | -------------------------------------------------------------------------------- /dev-board/pcb/bom.csv: -------------------------------------------------------------------------------- 1 | Reference, Quantity, Value, Footprint, Datasheet, Comment, ECS Part no 2 | C1 ,1,0.47µF,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,0.22-0.47µF according to MCP DS, 3 | C15 C14 C6 C7 C8 C9 C10 C11 C12 C13 C16 C17 C18 C19 C20 C21 C22 C23 ,18,100n,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,, 4 | C2 C3 ,2,18pF,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,, 5 | C4 C5 ,2,1µF,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,X5R/X7R, 6 | D1 D4 ,2,USB,LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,, 7 | D2 D3 ,2,PI,LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,, 8 | H1 H2 H3 H4 ,4,MountingHole,MountingHole:MountingHole_2.7mm_M2.5_Pad,~,, 9 | J1 ,1,Raspberry_Pi_2_3,Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical,https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf,, 10 | J2 ,1,USB_B_Micro,Connector_USB:USB_Micro-B_Molex-105017-0001,~,, 11 | Q2 Q1 ,2,BSS84,Package_TO_SOT_SMD:SOT-23,http://assets.nexperia.com/documents/data-sheet/BSS84.pdf,, 12 | R1 R2 R4 R9 R10 R11 ,6,10k,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,1-10K according to MCP DS, 13 | R15 R14 ,2,DNP,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,, 14 | R5 R3 R6 R7 R8 ,5,1k,Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder,~,Ilim is 500/Rlim, 15 | RN1 ,1,10k,Resistor_SMD:R_Array_Convex_4x0603,~,, 16 | TP1 ,1,STAT,TestPoint:TestPoint_Pad_D1.5mm,~,, 17 | TP10 ,1,SCLK,TestPoint:TestPoint_Pad_D1.5mm,~,, 18 | TP11 ,1,MOSI,TestPoint:TestPoint_Pad_D1.5mm,~,, 19 | TP12 ,1,MISO,TestPoint:TestPoint_Pad_D1.5mm,~,, 20 | TP2 ,1,3V3,TestPoint:TestPoint_Pad_D1.5mm,~,, 21 | TP3 ,1,5V,TestPoint:TestPoint_Pad_D1.5mm,~,, 22 | TP4 ,1,REL,TestPoint:TestPoint_Pad_D1.5mm,~,, 23 | TP5 ,1,ACK,TestPoint:TestPoint_Pad_D1.5mm,~,, 24 | TP6 ,1,VBUS,TestPoint:TestPoint_Pad_D1.5mm,~,, 25 | TP7 ,1,5VP,TestPoint:TestPoint_Pad_D1.5mm,~,, 26 | TP8 ,1,CHIP_PWR,TestPoint:TestPoint_Pad_D1.5mm,~,, 27 | TP9 ,1,CVCC,TestPoint:TestPoint_Pad_D1.5mm,~,, 28 | U1 ,1,MCP2210-I-SS,Package_SO:SSOP-20_5.3x7.2mm_P0.65mm,https://ww1.microchip.com/downloads/en/DeviceDoc/22288A.pdf,, 29 | U2 ,1,TPS2115APW,Package_SO:TSSOP-8_4.4x3mm_P0.65mm,http://www.ti.com/lit/ds/symlink/tps2115a.pdf,, 30 | U3 ,1,MIC5504-3.3YM5,Package_TO_SOT_SMD:SOT-23-5,http://ww1.microchip.com/downloads/en/DeviceDoc/MIC550X.pdf,, 31 | U4 ,1,CD74HC154,Package_SO:SOIC-24W_7.5x15.4mm_P1.27mm,http://www.ti.com/lit/ds/symlink/cd74hc154.pdf,, 32 | U5 U6 U7 U8 U9 U10 U11 U12 U13 U14 U15 U16 U17 U18 U19 U20 ,16,25LCxxx,Package_SO:SOIC-8_3.9x4.9mm_P1.27mm,http://ww1.microchip.com/downloads/en/DeviceDoc/21832H.pdf,, 33 | Y1 ,1,12MHz,Crystal:Crystal_SMD_TXC_7A-2Pin_5x3.2mm,https://www.mouser.de/datasheet/2/122/ecx-53r-17605.pdf,,ECS-120-18-30-JEM-TR 34 | -------------------------------------------------------------------------------- /examples/dump.rs: -------------------------------------------------------------------------------- 1 | //! A Nucleo-64 F401 example that dumps flash contents to a USART. 2 | //! 3 | //! The flash chip is connected to the canonical SPI port on the Arduino-style 4 | //! connector: 5 | //! 6 | //! * SCK = D13 = PA5 7 | //! * MISO = D12 = PA6 8 | //! * MOSI = D11 = PA7 9 | //! 10 | //! The data is dumped in hexadecimal format through USART2 (TX = D1 = PA2). 11 | 12 | #![no_std] 13 | #![no_main] 14 | 15 | extern crate panic_semihosting; 16 | 17 | use cortex_m_rt::entry; 18 | use cortex_m_semihosting::hprintln; 19 | use embedded_hal::digital::v2::OutputPin; 20 | use embedded_hal::serial::Write; 21 | use embedded_hal::spi::MODE_0; 22 | use stm32f4xx_hal::gpio::GpioExt; 23 | use stm32f4xx_hal::rcc::RccExt; 24 | use stm32f4xx_hal::serial::{self, Serial}; 25 | use stm32f4xx_hal::spi::Spi; 26 | use stm32f4xx_hal::stm32 as pac; 27 | use stm32f4xx_hal::time::{Bps, MegaHertz}; 28 | 29 | use spi_memory::prelude::*; 30 | use spi_memory::series25::Flash; 31 | 32 | use core::fmt::Write as _; 33 | 34 | /// Flash chip size in Mbit. 35 | const MEGABITS: u32 = 4; 36 | 37 | /// Serial baudrate. 38 | const BAUDRATE: u32 = 912600; 39 | 40 | /// Size of the flash chip in bytes. 41 | const SIZE_IN_BYTES: u32 = (MEGABITS * 1024 * 1024) / 8; 42 | 43 | fn print<'a, E>(buf: &[u8], w: &'a mut (dyn Write + 'static)) { 44 | for c in buf { 45 | write!(w, "{:02X}", c).unwrap(); 46 | } 47 | writeln!(w).unwrap(); 48 | } 49 | 50 | #[entry] 51 | fn main() -> ! { 52 | let periph = pac::Peripherals::take().unwrap(); 53 | let clocks = periph.RCC.constrain().cfgr.freeze(); 54 | let gpioa = periph.GPIOA.split(); 55 | 56 | let cs = { 57 | let mut cs = gpioa.pa9.into_push_pull_output(); 58 | cs.set_high().unwrap(); // deselect 59 | cs 60 | }; 61 | 62 | let spi = { 63 | let sck = gpioa.pa5.into_alternate_af5(); 64 | let miso = gpioa.pa6.into_alternate_af5(); 65 | let mosi = gpioa.pa7.into_alternate_af5(); 66 | 67 | Spi::spi1( 68 | periph.SPI1, 69 | (sck, miso, mosi), 70 | MODE_0, 71 | MegaHertz(1).into(), 72 | clocks, 73 | ) 74 | }; 75 | 76 | let mut serial = { 77 | let tx = gpioa.pa2.into_alternate_af7(); 78 | 79 | let config = serial::config::Config { 80 | baudrate: Bps(BAUDRATE), 81 | ..Default::default() 82 | }; 83 | Serial::usart2(periph.USART2, (tx, serial::NoRx), config, clocks).unwrap() 84 | }; 85 | 86 | let mut flash = Flash::init(spi, cs).unwrap(); 87 | let id = flash.read_jedec_id().unwrap(); 88 | hprintln!("{:?}", id).ok(); 89 | 90 | let mut addr = 0; 91 | const BUF: usize = 32; 92 | let mut buf = [0; BUF]; 93 | 94 | while addr < SIZE_IN_BYTES { 95 | flash.read(addr, &mut buf).unwrap(); 96 | print(&buf, &mut serial); 97 | 98 | addr += BUF as u32; 99 | } 100 | 101 | hprintln!("DONE").ok(); 102 | 103 | loop {} 104 | } 105 | -------------------------------------------------------------------------------- /dev-board/pcb/25.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | LIBS:dev-board-cache 3 | EELAYER 30 0 4 | EELAYER END 5 | $Descr A4 11693 8268 6 | encoding utf-8 7 | Sheet 2 17 8 | Title "" 9 | Date "" 10 | Rev "" 11 | Comp "" 12 | Comment1 "" 13 | Comment2 "" 14 | Comment3 "" 15 | Comment4 "" 16 | $EndDescr 17 | $Comp 18 | L Memory_EEPROM:25LCxxx U5 19 | U 1 1 5E08F69E 20 | P 5150 3950 21 | AR Path="/5E08F0E6/5E08F69E" Ref="U5" Part="1" 22 | AR Path="/5E0DF126/5E08F69E" Ref="U6" Part="1" 23 | AR Path="/5E0EA7AF/5E08F69E" Ref="U7" Part="1" 24 | AR Path="/5E0EA7B4/5E08F69E" Ref="U8" Part="1" 25 | AR Path="/5E121445/5E08F69E" Ref="U9" Part="1" 26 | AR Path="/5E12144A/5E08F69E" Ref="U10" Part="1" 27 | AR Path="/5E12144F/5E08F69E" Ref="U11" Part="1" 28 | AR Path="/5E121454/5E08F69E" Ref="U12" Part="1" 29 | AR Path="/5E6B272D/5E08F69E" Ref="U?" Part="1" 30 | AR Path="/5E6B2F93/5E08F69E" Ref="U6" Part="1" 31 | AR Path="/5E6CD70C/5E08F69E" Ref="U7" Part="1" 32 | AR Path="/5E6DA750/5E08F69E" Ref="U8" Part="1" 33 | AR Path="/5E6E82DE/5E08F69E" Ref="U9" Part="1" 34 | AR Path="/5E6F68FB/5E08F69E" Ref="U10" Part="1" 35 | AR Path="/5E7061AD/5E08F69E" Ref="U11" Part="1" 36 | AR Path="/5E71622F/5E08F69E" Ref="U12" Part="1" 37 | AR Path="/5D73BCFF/5E08F69E" Ref="U20" Part="1" 38 | AR Path="/5D73BD13/5E08F69E" Ref="U19" Part="1" 39 | AR Path="/5D73BD27/5E08F69E" Ref="U18" Part="1" 40 | AR Path="/5D73BD3B/5E08F69E" Ref="U17" Part="1" 41 | AR Path="/5D73BD4F/5E08F69E" Ref="U16" Part="1" 42 | AR Path="/5D73BD63/5E08F69E" Ref="U15" Part="1" 43 | AR Path="/5D73BD77/5E08F69E" Ref="U14" Part="1" 44 | AR Path="/5D73BD8B/5E08F69E" Ref="U13" Part="1" 45 | F 0 "U20" H 4900 4200 50 0000 C CNN 46 | F 1 "25LCxxx" H 5350 4200 50 0000 C CNN 47 | F 2 "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" H 5150 3950 50 0001 C CNN 48 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/21832H.pdf" H 5150 3950 50 0001 C CNN 49 | 1 5150 3950 50 | 1 0 0 -1 51 | $EndComp 52 | Wire Wire Line 53 | 5150 3650 4750 3650 54 | Wire Wire Line 55 | 4750 3650 4750 3850 56 | Wire Wire Line 57 | 4750 3850 4750 3950 58 | Connection ~ 4750 3850 59 | Text HLabel 4750 4050 0 50 Input ~ 0 60 | ~CS 61 | Connection ~ 4750 3650 62 | $Comp 63 | L Device:C C7 64 | U 1 1 5E0FC1AC 65 | P 4200 3950 66 | AR Path="/5E0DF126/5E0FC1AC" Ref="C7" Part="1" 67 | AR Path="/5E08F0E6/5E0FC1AC" Ref="C6" Part="1" 68 | AR Path="/5E0EA7AF/5E0FC1AC" Ref="C8" Part="1" 69 | AR Path="/5E0EA7B4/5E0FC1AC" Ref="C9" Part="1" 70 | AR Path="/5E121445/5E0FC1AC" Ref="C10" Part="1" 71 | AR Path="/5E12144A/5E0FC1AC" Ref="C11" Part="1" 72 | AR Path="/5E12144F/5E0FC1AC" Ref="C12" Part="1" 73 | AR Path="/5E121454/5E0FC1AC" Ref="C13" Part="1" 74 | AR Path="/5E6B272D/5E0FC1AC" Ref="C?" Part="1" 75 | AR Path="/5E6B2F93/5E0FC1AC" Ref="C7" Part="1" 76 | AR Path="/5E6CD70C/5E0FC1AC" Ref="C8" Part="1" 77 | AR Path="/5E6DA750/5E0FC1AC" Ref="C9" Part="1" 78 | AR Path="/5E6E82DE/5E0FC1AC" Ref="C10" Part="1" 79 | AR Path="/5E6F68FB/5E0FC1AC" Ref="C11" Part="1" 80 | AR Path="/5E7061AD/5E0FC1AC" Ref="C12" Part="1" 81 | AR Path="/5E71622F/5E0FC1AC" Ref="C13" Part="1" 82 | AR Path="/5D73BCFF/5E0FC1AC" Ref="C23" Part="1" 83 | AR Path="/5D73BD13/5E0FC1AC" Ref="C22" Part="1" 84 | AR Path="/5D73BD27/5E0FC1AC" Ref="C21" Part="1" 85 | AR Path="/5D73BD3B/5E0FC1AC" Ref="C20" Part="1" 86 | AR Path="/5D73BD4F/5E0FC1AC" Ref="C19" Part="1" 87 | AR Path="/5D73BD63/5E0FC1AC" Ref="C18" Part="1" 88 | AR Path="/5D73BD77/5E0FC1AC" Ref="C17" Part="1" 89 | AR Path="/5D73BD8B/5E0FC1AC" Ref="C16" Part="1" 90 | F 0 "C23" H 4315 3996 50 0000 L CNN 91 | F 1 "100n" H 4315 3905 50 0000 L CNN 92 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 4238 3800 50 0001 C CNN 93 | F 3 "~" H 4200 3950 50 0001 C CNN 94 | 1 4200 3950 95 | 1 0 0 -1 96 | $EndComp 97 | Wire Wire Line 98 | 4200 3650 4200 3800 99 | Wire Wire Line 100 | 4200 3650 4750 3650 101 | Wire Wire Line 102 | 4200 4100 4200 4250 103 | Wire Wire Line 104 | 4200 4250 5150 4250 105 | Connection ~ 5150 4250 106 | Wire Wire Line 107 | 5150 4250 5150 4350 108 | Text HLabel 5550 3850 2 50 Input ~ 0 109 | SCLK 110 | Text HLabel 5550 3950 2 50 Input ~ 0 111 | MOSI 112 | Text HLabel 5550 4050 2 50 Output ~ 0 113 | MISO 114 | Text HLabel 5150 4350 3 50 UnSpc ~ 0 115 | GND 116 | Text HLabel 5150 3550 1 50 UnSpc ~ 0 117 | VCC 118 | Wire Wire Line 119 | 5150 3550 5150 3650 120 | Connection ~ 5150 3650 121 | $EndSCHEMATC 122 | -------------------------------------------------------------------------------- /dev-board/pcb/dev-board.pro: -------------------------------------------------------------------------------- 1 | update=Tue 15 Oct 2019 09:31:58 PM CEST 2 | version=1 3 | last_client=kicad 4 | [general] 5 | version=1 6 | RootSch= 7 | BoardNm= 8 | [cvpcb] 9 | version=1 10 | NetIExt=net 11 | [eeschema] 12 | version=1 13 | LibDir= 14 | [schematic_editor] 15 | version=1 16 | PageLayoutDescrFile= 17 | PlotDirectoryName= 18 | SubpartIdSeparator=0 19 | SubpartFirstId=65 20 | NetFmtName=Pcbnew 21 | SpiceAjustPassiveValues=0 22 | LabSize=25 23 | ERC_TestSimilarLabels=1 24 | [pcbnew] 25 | version=1 26 | PageLayoutDescrFile= 27 | LastNetListRead=dev-board.net 28 | CopperLayerCount=2 29 | BoardThickness=1.6 30 | AllowMicroVias=0 31 | AllowBlindVias=0 32 | RequireCourtyardDefinitions=0 33 | ProhibitOverlappingCourtyards=1 34 | MinTrackWidth=0.15 35 | MinViaDiameter=0.4 36 | MinViaDrill=0.2 37 | MinMicroViaDiameter=0.2 38 | MinMicroViaDrill=0.09999999999999999 39 | MinHoleToHole=0.25 40 | TrackWidth1=0.15 41 | TrackWidth2=0.15 42 | TrackWidth3=0.4 43 | ViaDiameter1=0.4 44 | ViaDrill1=0.2 45 | ViaDiameter2=0.6 46 | ViaDrill2=0.3 47 | dPairWidth1=0.2 48 | dPairGap1=0.25 49 | dPairViaGap1=0.25 50 | SilkLineWidth=0.15 51 | SilkTextSizeV=0.6 52 | SilkTextSizeH=0.6 53 | SilkTextSizeThickness=0.09 54 | SilkTextItalic=0 55 | SilkTextUpright=1 56 | CopperLineWidth=0.15 57 | CopperTextSizeV=1.5 58 | CopperTextSizeH=1.5 59 | CopperTextThickness=0.3 60 | CopperTextItalic=0 61 | CopperTextUpright=1 62 | EdgeCutLineWidth=0.15 63 | CourtyardLineWidth=0.05 64 | OthersLineWidth=0.15 65 | OthersTextSizeV=1 66 | OthersTextSizeH=1 67 | OthersTextSizeThickness=0.15 68 | OthersTextItalic=0 69 | OthersTextUpright=1 70 | SolderMaskClearance=0.09999999999999999 71 | SolderMaskMinWidth=0 72 | SolderPasteClearance=0 73 | SolderPasteRatio=-0 74 | [pcbnew/Layer.F.Cu] 75 | Name=F.Cu 76 | Type=0 77 | Enabled=1 78 | [pcbnew/Layer.In1.Cu] 79 | Name=In1.Cu 80 | Type=0 81 | Enabled=0 82 | [pcbnew/Layer.In2.Cu] 83 | Name=In2.Cu 84 | Type=0 85 | Enabled=0 86 | [pcbnew/Layer.In3.Cu] 87 | Name=In3.Cu 88 | Type=0 89 | Enabled=0 90 | [pcbnew/Layer.In4.Cu] 91 | Name=In4.Cu 92 | Type=0 93 | Enabled=0 94 | [pcbnew/Layer.In5.Cu] 95 | Name=In5.Cu 96 | Type=0 97 | Enabled=0 98 | [pcbnew/Layer.In6.Cu] 99 | Name=In6.Cu 100 | Type=0 101 | Enabled=0 102 | [pcbnew/Layer.In7.Cu] 103 | Name=In7.Cu 104 | Type=0 105 | Enabled=0 106 | [pcbnew/Layer.In8.Cu] 107 | Name=In8.Cu 108 | Type=0 109 | Enabled=0 110 | [pcbnew/Layer.In9.Cu] 111 | Name=In9.Cu 112 | Type=0 113 | Enabled=0 114 | [pcbnew/Layer.In10.Cu] 115 | Name=In10.Cu 116 | Type=0 117 | Enabled=0 118 | [pcbnew/Layer.In11.Cu] 119 | Name=In11.Cu 120 | Type=0 121 | Enabled=0 122 | [pcbnew/Layer.In12.Cu] 123 | Name=In12.Cu 124 | Type=0 125 | Enabled=0 126 | [pcbnew/Layer.In13.Cu] 127 | Name=In13.Cu 128 | Type=0 129 | Enabled=0 130 | [pcbnew/Layer.In14.Cu] 131 | Name=In14.Cu 132 | Type=0 133 | Enabled=0 134 | [pcbnew/Layer.In15.Cu] 135 | Name=In15.Cu 136 | Type=0 137 | Enabled=0 138 | [pcbnew/Layer.In16.Cu] 139 | Name=In16.Cu 140 | Type=0 141 | Enabled=0 142 | [pcbnew/Layer.In17.Cu] 143 | Name=In17.Cu 144 | Type=0 145 | Enabled=0 146 | [pcbnew/Layer.In18.Cu] 147 | Name=In18.Cu 148 | Type=0 149 | Enabled=0 150 | [pcbnew/Layer.In19.Cu] 151 | Name=In19.Cu 152 | Type=0 153 | Enabled=0 154 | [pcbnew/Layer.In20.Cu] 155 | Name=In20.Cu 156 | Type=0 157 | Enabled=0 158 | [pcbnew/Layer.In21.Cu] 159 | Name=In21.Cu 160 | Type=0 161 | Enabled=0 162 | [pcbnew/Layer.In22.Cu] 163 | Name=In22.Cu 164 | Type=0 165 | Enabled=0 166 | [pcbnew/Layer.In23.Cu] 167 | Name=In23.Cu 168 | Type=0 169 | Enabled=0 170 | [pcbnew/Layer.In24.Cu] 171 | Name=In24.Cu 172 | Type=0 173 | Enabled=0 174 | [pcbnew/Layer.In25.Cu] 175 | Name=In25.Cu 176 | Type=0 177 | Enabled=0 178 | [pcbnew/Layer.In26.Cu] 179 | Name=In26.Cu 180 | Type=0 181 | Enabled=0 182 | [pcbnew/Layer.In27.Cu] 183 | Name=In27.Cu 184 | Type=0 185 | Enabled=0 186 | [pcbnew/Layer.In28.Cu] 187 | Name=In28.Cu 188 | Type=0 189 | Enabled=0 190 | [pcbnew/Layer.In29.Cu] 191 | Name=In29.Cu 192 | Type=0 193 | Enabled=0 194 | [pcbnew/Layer.In30.Cu] 195 | Name=In30.Cu 196 | Type=0 197 | Enabled=0 198 | [pcbnew/Layer.B.Cu] 199 | Name=B.Cu 200 | Type=0 201 | Enabled=1 202 | [pcbnew/Layer.B.Adhes] 203 | Enabled=1 204 | [pcbnew/Layer.F.Adhes] 205 | Enabled=1 206 | [pcbnew/Layer.B.Paste] 207 | Enabled=1 208 | [pcbnew/Layer.F.Paste] 209 | Enabled=1 210 | [pcbnew/Layer.B.SilkS] 211 | Enabled=1 212 | [pcbnew/Layer.F.SilkS] 213 | Enabled=1 214 | [pcbnew/Layer.B.Mask] 215 | Enabled=1 216 | [pcbnew/Layer.F.Mask] 217 | Enabled=1 218 | [pcbnew/Layer.Dwgs.User] 219 | Enabled=1 220 | [pcbnew/Layer.Cmts.User] 221 | Enabled=1 222 | [pcbnew/Layer.Eco1.User] 223 | Enabled=1 224 | [pcbnew/Layer.Eco2.User] 225 | Enabled=1 226 | [pcbnew/Layer.Edge.Cuts] 227 | Enabled=1 228 | [pcbnew/Layer.Margin] 229 | Enabled=1 230 | [pcbnew/Layer.B.CrtYd] 231 | Enabled=1 232 | [pcbnew/Layer.F.CrtYd] 233 | Enabled=1 234 | [pcbnew/Layer.B.Fab] 235 | Enabled=1 236 | [pcbnew/Layer.F.Fab] 237 | Enabled=1 238 | [pcbnew/Layer.Rescue] 239 | Enabled=0 240 | [pcbnew/Netclasses] 241 | [pcbnew/Netclasses/Default] 242 | Name=Default 243 | Clearance=0.1 244 | TrackWidth=0.15 245 | ViaDiameter=0.4 246 | ViaDrill=0.2 247 | uViaDiameter=0.3 248 | uViaDrill=0.1 249 | dPairWidth=0.2 250 | dPairGap=0.25 251 | dPairViaGap=0.25 252 | -------------------------------------------------------------------------------- /src/series25.rs: -------------------------------------------------------------------------------- 1 | //! Driver for 25-series SPI Flash and EEPROM chips. 2 | 3 | use crate::{utils::HexSlice, BlockDevice, Error, Read}; 4 | use bitflags::bitflags; 5 | use core::convert::TryInto; 6 | use core::fmt; 7 | use embedded_hal::blocking::spi::Transfer; 8 | use embedded_hal::digital::v2::OutputPin; 9 | 10 | /// 3-Byte JEDEC manufacturer and device identification. 11 | pub struct Identification { 12 | /// Data collected 13 | /// - First byte is the manufacturer's ID code from eg JEDEC Publication No. 106AJ 14 | /// - The trailing bytes are a manufacturer-specific device ID. 15 | bytes: [u8; 3], 16 | 17 | /// The number of continuations that precede the main manufacturer ID 18 | continuations: u8, 19 | } 20 | 21 | impl Identification { 22 | /// Build an Identification from JEDEC ID bytes. 23 | pub fn from_jedec_id(buf: &[u8]) -> Identification { 24 | // Example response for Cypress part FM25V02A: 25 | // 7F 7F 7F 7F 7F 7F C2 22 08 (9 bytes) 26 | // 0x7F is a "continuation code", not part of the core manufacturer ID 27 | // 0xC2 is the company identifier for Cypress (Ramtron) 28 | 29 | // Find the end of the continuation bytes (0x7F) 30 | let mut start_idx = 0; 31 | for i in 0..(buf.len() - 2) { 32 | if buf[i] != 0x7F { 33 | start_idx = i; 34 | break; 35 | } 36 | } 37 | 38 | Self { 39 | bytes: [buf[start_idx], buf[start_idx + 1], buf[start_idx + 2]], 40 | continuations: start_idx as u8, 41 | } 42 | } 43 | 44 | /// The JEDEC manufacturer code for this chip. 45 | pub fn mfr_code(&self) -> u8 { 46 | self.bytes[0] 47 | } 48 | 49 | /// The manufacturer-specific device ID for this chip. 50 | pub fn device_id(&self) -> &[u8] { 51 | self.bytes[1..].as_ref() 52 | } 53 | 54 | /// Number of continuation codes in this chip ID. 55 | /// 56 | /// For example the ARM Ltd identifier is `7F 7F 7F 7F 3B` (5 bytes), so 57 | /// the continuation count is 4. 58 | pub fn continuation_count(&self) -> u8 { 59 | self.continuations 60 | } 61 | } 62 | 63 | impl fmt::Debug for Identification { 64 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 65 | f.debug_tuple("Identification") 66 | .field(&HexSlice(self.bytes)) 67 | .finish() 68 | } 69 | } 70 | 71 | #[allow(unused)] // TODO support more features 72 | enum Opcode { 73 | /// Read the 8-bit legacy device ID. 74 | ReadDeviceId = 0xAB, 75 | /// Read the 8-bit manufacturer and device IDs. 76 | ReadMfDId = 0x90, 77 | /// Read 16-bit manufacturer ID and 8-bit device ID. 78 | ReadJedecId = 0x9F, 79 | /// Set the write enable latch. 80 | WriteEnable = 0x06, 81 | /// Clear the write enable latch. 82 | WriteDisable = 0x04, 83 | /// Read the 8-bit status register. 84 | ReadStatus = 0x05, 85 | /// Write the 8-bit status register. Not all bits are writeable. 86 | WriteStatus = 0x01, 87 | Read = 0x03, 88 | PageProg = 0x02, // directly writes to EEPROMs too 89 | SectorErase = 0x20, 90 | BlockErase = 0xD8, 91 | ChipErase = 0xC7, 92 | } 93 | 94 | bitflags! { 95 | /// Status register bits. 96 | pub struct Status: u8 { 97 | /// Erase or write in progress. 98 | const BUSY = 1 << 0; 99 | /// Status of the **W**rite **E**nable **L**atch. 100 | const WEL = 1 << 1; 101 | /// The 3 protection region bits. 102 | const PROT = 0b00011100; 103 | /// **S**tatus **R**egister **W**rite **D**isable bit. 104 | const SRWD = 1 << 7; 105 | } 106 | } 107 | 108 | /// Driver for 25-series SPI Flash chips. 109 | /// 110 | /// # Type Parameters 111 | /// 112 | /// * **`SPI`**: The SPI master to which the flash chip is attached. 113 | /// * **`CS`**: The **C**hip-**S**elect line attached to the `\CS`/`\CE` pin of 114 | /// the flash chip. 115 | #[derive(Debug)] 116 | pub struct Flash, CS: OutputPin> { 117 | spi: SPI, 118 | cs: CS, 119 | } 120 | 121 | impl, CS: OutputPin> Flash { 122 | /// Creates a new 25-series flash driver. 123 | /// 124 | /// # Parameters 125 | /// 126 | /// * **`spi`**: An SPI master. Must be configured to operate in the correct 127 | /// mode for the device. 128 | /// * **`cs`**: The **C**hip-**S**elect Pin connected to the `\CS`/`\CE` pin 129 | /// of the flash chip. Will be driven low when accessing the device. 130 | pub fn init(spi: SPI, cs: CS) -> Result> { 131 | let mut this = Self { spi, cs }; 132 | let status = this.read_status()?; 133 | info!("Flash::init: status = {:?}", status); 134 | 135 | // Here we don't expect any writes to be in progress, and the latch must 136 | // also be deasserted. 137 | if !(status & (Status::BUSY | Status::WEL)).is_empty() { 138 | return Err(Error::UnexpectedStatus); 139 | } 140 | 141 | Ok(this) 142 | } 143 | 144 | fn command(&mut self, bytes: &mut [u8]) -> Result<(), Error> { 145 | // If the SPI transfer fails, make sure to disable CS anyways 146 | self.cs.set_low().map_err(Error::Gpio)?; 147 | let spi_result = self.spi.transfer(bytes).map_err(Error::Spi); 148 | self.cs.set_high().map_err(Error::Gpio)?; 149 | spi_result?; 150 | Ok(()) 151 | } 152 | 153 | /// Reads the JEDEC manufacturer/device identification. 154 | pub fn read_jedec_id(&mut self) -> Result> { 155 | // Optimistically read 12 bytes, even though some identifiers will be shorter 156 | let mut buf: [u8; 12] = [0; 12]; 157 | buf[0] = Opcode::ReadJedecId as u8; 158 | self.command(&mut buf)?; 159 | 160 | // Skip buf[0] (SPI read response byte) 161 | Ok(Identification::from_jedec_id(&buf[1..])) 162 | } 163 | 164 | /// Reads the status register. 165 | pub fn read_status(&mut self) -> Result> { 166 | let mut buf = [Opcode::ReadStatus as u8, 0]; 167 | self.command(&mut buf)?; 168 | 169 | Ok(Status::from_bits_truncate(buf[1])) 170 | } 171 | 172 | fn write_enable(&mut self) -> Result<(), Error> { 173 | let mut cmd_buf = [Opcode::WriteEnable as u8]; 174 | self.command(&mut cmd_buf)?; 175 | Ok(()) 176 | } 177 | 178 | fn wait_done(&mut self) -> Result<(), Error> { 179 | // TODO: Consider changing this to a delay based pattern 180 | while self.read_status()?.contains(Status::BUSY) {} 181 | Ok(()) 182 | } 183 | } 184 | 185 | impl, CS: OutputPin> Read for Flash { 186 | /// Reads flash contents into `buf`, starting at `addr`. 187 | /// 188 | /// Note that `addr` is not fully decoded: Flash chips will typically only 189 | /// look at the lowest `N` bits needed to encode their size, which means 190 | /// that the contents are "mirrored" to addresses that are a multiple of the 191 | /// flash size. Only 24 bits of `addr` are transferred to the device in any 192 | /// case, limiting the maximum size of 25-series SPI flash chips to 16 MiB. 193 | /// 194 | /// # Parameters 195 | /// 196 | /// * `addr`: 24-bit address to start reading at. 197 | /// * `buf`: Destination buffer to fill. 198 | fn read(&mut self, addr: u32, buf: &mut [u8]) -> Result<(), Error> { 199 | // TODO what happens if `buf` is empty? 200 | 201 | let mut cmd_buf = [ 202 | Opcode::Read as u8, 203 | (addr >> 16) as u8, 204 | (addr >> 8) as u8, 205 | addr as u8, 206 | ]; 207 | 208 | self.cs.set_low().map_err(Error::Gpio)?; 209 | let mut spi_result = self.spi.transfer(&mut cmd_buf); 210 | if spi_result.is_ok() { 211 | spi_result = self.spi.transfer(buf); 212 | } 213 | self.cs.set_high().map_err(Error::Gpio)?; 214 | spi_result.map(|_| ()).map_err(Error::Spi) 215 | } 216 | } 217 | 218 | impl, CS: OutputPin> BlockDevice for Flash { 219 | fn erase_sectors(&mut self, addr: u32, amount: usize) -> Result<(), Error> { 220 | for c in 0..amount { 221 | self.write_enable()?; 222 | 223 | let current_addr: u32 = (addr as usize + c * 256).try_into().unwrap(); 224 | let mut cmd_buf = [ 225 | Opcode::SectorErase as u8, 226 | (current_addr >> 16) as u8, 227 | (current_addr >> 8) as u8, 228 | current_addr as u8, 229 | ]; 230 | self.command(&mut cmd_buf)?; 231 | self.wait_done()?; 232 | } 233 | 234 | Ok(()) 235 | } 236 | 237 | fn write_bytes(&mut self, addr: u32, data: &mut [u8]) -> Result<(), Error> { 238 | for (c, chunk) in data.chunks_mut(256).enumerate() { 239 | self.write_enable()?; 240 | 241 | let current_addr: u32 = (addr as usize + c * 256).try_into().unwrap(); 242 | let mut cmd_buf = [ 243 | Opcode::PageProg as u8, 244 | (current_addr >> 16) as u8, 245 | (current_addr >> 8) as u8, 246 | current_addr as u8, 247 | ]; 248 | 249 | self.cs.set_low().map_err(Error::Gpio)?; 250 | let mut spi_result = self.spi.transfer(&mut cmd_buf); 251 | if spi_result.is_ok() { 252 | spi_result = self.spi.transfer(chunk); 253 | } 254 | self.cs.set_high().map_err(Error::Gpio)?; 255 | spi_result.map(|_| ()).map_err(Error::Spi)?; 256 | self.wait_done()?; 257 | } 258 | Ok(()) 259 | } 260 | 261 | fn erase_all(&mut self) -> Result<(), Error> { 262 | self.write_enable()?; 263 | let mut cmd_buf = [Opcode::ChipErase as u8]; 264 | self.command(&mut cmd_buf)?; 265 | self.wait_done()?; 266 | Ok(()) 267 | } 268 | } 269 | 270 | #[cfg(test)] 271 | mod tests { 272 | use super::*; 273 | 274 | #[test] 275 | fn test_decode_jedec_id() { 276 | let cypress_id_bytes = [0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xC2, 0x22, 0x08]; 277 | let ident = Identification::from_jedec_id(&cypress_id_bytes); 278 | assert_eq!(0xC2, ident.mfr_code()); 279 | assert_eq!(6, ident.continuation_count()); 280 | let device_id = ident.device_id(); 281 | assert_eq!(device_id[0], 0x22); 282 | assert_eq!(device_id[1], 0x08); 283 | } 284 | } 285 | -------------------------------------------------------------------------------- /dev-board/pcb/dev-board-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.4 2 | #encoding utf-8 3 | # 4 | # 74xx_IEEE_74154 5 | # 6 | DEF 74xx_IEEE_74154 U 0 30 Y Y 1 F N 7 | F0 "U" 250 1000 50 H V C CNN 8 | F1 "74xx_IEEE_74154" 300 -850 50 H V C CNN 9 | F2 "" 0 0 25 H I C CNN 10 | F3 "" 0 0 25 H I C CNN 11 | DRAW 12 | T 0 -150 200 60 0 0 0 & Normal 0 C C 13 | T 0 0 550 60 0 0 0 DMUX Normal 0 C C 14 | T 0 0 200 60 0 0 0 EN Normal 0 C C 15 | S -250 900 250 -800 0 0 0 N 16 | P 5 0 0 0 -250 400 -100 400 -100 0 -250 0 -250 0 N 17 | X GND 12 0 -800 0 U 50 50 0 0 W N 18 | X VCC 24 0 900 0 D 50 50 0 0 W N 19 | X ~S0 1 550 800 300 L 50 50 1 1 O I 20 | X ~S9 10 550 -100 300 L 50 50 1 1 O I 21 | X ~S10 11 550 -200 300 L 50 50 1 1 O I 22 | X ~S11 13 550 -300 300 L 50 50 1 1 O I 23 | X ~S12 14 550 -400 300 L 50 50 1 1 O I 24 | X ~S13 15 550 -500 300 L 50 50 1 1 I I 25 | X ~S14 16 550 -600 300 L 50 50 1 1 O I 26 | X ~S15 17 550 -700 300 L 50 50 1 1 O I 27 | X ~E0 18 -550 300 300 R 50 50 1 1 I I 28 | X ~E1 19 -550 100 300 R 50 50 1 1 I I 29 | X ~S1 2 550 700 300 L 50 50 1 1 O I 30 | X A3 20 -550 500 300 R 50 50 1 1 I 31 | X A2 21 -550 600 300 R 50 50 1 1 I 32 | X A1 22 -550 700 300 R 50 50 1 1 I 33 | X A0 23 -550 800 300 R 50 50 1 1 I 34 | X ~S2 3 550 600 300 L 50 50 1 1 O I 35 | X ~S3 4 550 500 300 L 50 50 1 1 O I 36 | X ~S4 5 550 400 300 L 50 50 1 1 O I 37 | X ~S5 6 550 300 300 L 50 50 1 1 O I 38 | X ~S6 7 550 200 300 L 50 50 1 1 O I 39 | X ~S7 8 550 100 300 L 50 50 1 1 O I 40 | X ~S8 9 550 0 300 L 50 50 1 1 O I 41 | ENDDRAW 42 | ENDDEF 43 | # 44 | # Connector_Raspberry_Pi_2_3 45 | # 46 | DEF Connector_Raspberry_Pi_2_3 J 0 40 Y Y 1 F N 47 | F0 "J" -700 1250 50 H V L BNN 48 | F1 "Connector_Raspberry_Pi_2_3" 400 -1250 50 H V L TNN 49 | F2 "" 0 0 50 H I C CNN 50 | F3 "" 0 0 50 H I C CNN 51 | $FPLIST 52 | PinHeader*2x20*P2.54mm*Vertical* 53 | PinSocket*2x20*P2.54mm*Vertical* 54 | $ENDFPLIST 55 | DRAW 56 | S -700 1200 700 -1200 0 1 10 f 57 | S -665 -690 -700 -710 1 1 0 N 58 | S -665 -590 -700 -610 1 1 0 N 59 | S -665 -490 -700 -510 1 1 0 N 60 | S -665 -390 -700 -410 1 1 0 N 61 | S -665 -290 -700 -310 1 1 0 N 62 | S -665 -190 -700 -210 1 1 0 N 63 | S -665 10 -700 -10 1 1 0 N 64 | S -665 110 -700 90 1 1 0 N 65 | S -665 210 -700 190 1 1 0 N 66 | S -665 410 -700 390 1 1 0 N 67 | S -665 510 -700 490 1 1 0 N 68 | S -665 610 -700 590 1 1 0 N 69 | S -665 810 -700 790 1 1 0 N 70 | S -665 910 -700 890 1 1 0 N 71 | S -410 -1165 -390 -1200 1 1 0 N 72 | S -310 -1165 -290 -1200 1 1 0 N 73 | S -210 -1165 -190 -1200 1 1 0 N 74 | S -210 1200 -190 1165 1 1 0 N 75 | S -110 -1165 -90 -1200 1 1 0 N 76 | S -110 1200 -90 1165 1 1 0 N 77 | S -10 -1165 10 -1200 1 1 0 N 78 | S 90 -1165 110 -1200 1 1 0 N 79 | S 90 1200 110 1165 1 1 0 N 80 | S 190 -1165 210 -1200 1 1 0 N 81 | S 190 1200 210 1165 1 1 0 N 82 | S 290 -1165 310 -1200 1 1 0 N 83 | S 700 -790 665 -810 1 1 0 N 84 | S 700 -690 665 -710 1 1 0 N 85 | S 700 -490 665 -510 1 1 0 N 86 | S 700 -390 665 -410 1 1 0 N 87 | S 700 -290 665 -310 1 1 0 N 88 | S 700 -190 665 -210 1 1 0 N 89 | S 700 -90 665 -110 1 1 0 N 90 | S 700 110 665 90 1 1 0 N 91 | S 700 210 665 190 1 1 0 N 92 | S 700 310 665 290 1 1 0 N 93 | S 700 510 665 490 1 1 0 N 94 | S 700 610 665 590 1 1 0 N 95 | S 700 810 665 790 1 1 0 N 96 | S 700 910 665 890 1 1 0 N 97 | X 3V3 1 100 1300 100 D 50 50 1 1 W 98 | X GPIO15/RXD 10 -800 800 100 R 50 50 1 1 B 99 | X GPIO17 11 -800 500 100 R 50 50 1 1 B 100 | X GPIO18/PWM0 12 -800 400 100 R 50 50 1 1 B 101 | X GPIO27 13 -800 -700 100 R 50 50 1 1 B 102 | X GND 14 -200 -1300 100 U 50 50 1 1 W 103 | X GPIO22 15 -800 -200 100 R 50 50 1 1 B 104 | X GPIO23 16 -800 -300 100 R 50 50 1 1 B 105 | X 3V3 17 200 1300 100 D 50 50 1 1 W 106 | X GPIO24 18 -800 -400 100 R 50 50 1 1 B 107 | X MOSI0/GPIO10 19 800 -400 100 L 50 50 1 1 B 108 | X 5V 2 -200 1300 100 D 50 50 1 1 W 109 | X GND 20 -100 -1300 100 U 50 50 1 1 W 110 | X MISO0/GPIO9 21 800 -300 100 L 50 50 1 1 B 111 | X GPIO25 22 -800 -500 100 R 50 50 1 1 B 112 | X SCLK0/GPIO11 23 800 -500 100 L 50 50 1 1 B 113 | X ~CE0~/GPIO8 24 800 -200 100 L 50 50 1 1 B 114 | X GND 25 0 -1300 100 U 50 50 1 1 W 115 | X ~CE1~/GPIO7 26 800 -100 100 L 50 50 1 1 B 116 | X ID_SD/GPIO0 27 800 900 100 L 50 50 1 1 B 117 | X ID_SC/GPIO1 28 800 800 100 L 50 50 1 1 B 118 | X GCLK1/GPIO5 29 800 200 100 L 50 50 1 1 B 119 | X SDA/GPIO2 3 800 600 100 L 50 50 1 1 B 120 | X GND 30 100 -1300 100 U 50 50 1 1 W 121 | X GCLK2/GPIO6 31 800 100 100 L 50 50 1 1 B 122 | X PWM0/GPIO12 32 800 -700 100 L 50 50 1 1 B 123 | X PWM1/GPIO13 33 800 -800 100 L 50 50 1 1 B 124 | X GND 34 200 -1300 100 U 50 50 1 1 W 125 | X GPIO19/MISO1 35 -800 200 100 R 50 50 1 1 B 126 | X GPIO16 36 -800 600 100 R 50 50 1 1 B 127 | X GPIO26 37 -800 -600 100 R 50 50 1 1 B 128 | X GPIO20/MOSI1 38 -800 100 100 R 50 50 1 1 B 129 | X GND 39 300 -1300 100 U 50 50 1 1 W 130 | X 5V 4 -100 1300 100 D 50 50 1 1 W 131 | X GPIO21/SCLK1 40 -800 0 100 R 50 50 1 1 B 132 | X SCL/GPIO3 5 800 500 100 L 50 50 1 1 B 133 | X GND 6 -400 -1300 100 U 50 50 1 1 W 134 | X GCLK0/GPIO4 7 800 300 100 L 50 50 1 1 B 135 | X GPIO14/TXD 8 -800 900 100 R 50 50 1 1 B 136 | X GND 9 -300 -1300 100 U 50 50 1 1 W 137 | ENDDRAW 138 | ENDDEF 139 | # 140 | # Connector_TestPoint 141 | # 142 | DEF Connector_TestPoint TP 0 30 N N 1 F N 143 | F0 "TP" 0 270 50 H V C CNN 144 | F1 "Connector_TestPoint" 0 200 50 H V C CNN 145 | F2 "" 200 0 50 H I C CNN 146 | F3 "" 200 0 50 H I C CNN 147 | $FPLIST 148 | Pin* 149 | Test* 150 | $ENDFPLIST 151 | DRAW 152 | C 0 130 30 0 1 0 N 153 | X 1 1 0 0 100 U 50 50 1 1 P 154 | ENDDRAW 155 | ENDDEF 156 | # 157 | # Connector_USB_B_Micro 158 | # 159 | DEF Connector_USB_B_Micro J 0 40 Y Y 1 F N 160 | F0 "J" -200 450 50 H V L CNN 161 | F1 "Connector_USB_B_Micro" -200 350 50 H V L CNN 162 | F2 "" 150 -50 50 H I C CNN 163 | F3 "" 150 -50 50 H I C CNN 164 | ALIAS USB_B_Mini 165 | $FPLIST 166 | USB* 167 | $ENDFPLIST 168 | DRAW 169 | C -150 85 25 0 1 10 F 170 | C -25 135 15 0 1 10 F 171 | S -200 -300 200 300 0 1 10 f 172 | S -5 -300 5 -270 0 1 0 N 173 | S 10 50 -20 20 0 1 10 F 174 | S 200 -205 170 -195 0 1 0 N 175 | S 200 -105 170 -95 0 1 0 N 176 | S 200 -5 170 5 0 1 0 N 177 | S 200 195 170 205 0 1 0 N 178 | P 2 0 1 10 -75 85 25 85 N 179 | P 4 0 1 10 -125 85 -100 85 -50 135 -25 135 N 180 | P 4 0 1 10 -100 85 -75 85 -50 35 0 35 N 181 | P 4 0 1 10 25 110 25 60 75 85 25 110 F 182 | P 5 0 1 0 -170 220 -70 220 -80 190 -160 190 -170 220 F 183 | P 9 0 1 0 -185 230 -185 220 -175 190 -175 180 -65 180 -65 190 -55 220 -55 230 -185 230 N 184 | X VBUS 1 300 200 100 L 50 50 1 1 w 185 | X D- 2 300 -100 100 L 50 50 1 1 P 186 | X D+ 3 300 0 100 L 50 50 1 1 P 187 | X ID 4 300 -200 100 L 50 50 1 1 P 188 | X GND 5 0 -400 100 U 50 50 1 1 w 189 | X Shield 6 -100 -400 100 U 50 50 1 1 P 190 | ENDDRAW 191 | ENDDEF 192 | # 193 | # Device_C 194 | # 195 | DEF Device_C C 0 10 N Y 1 F N 196 | F0 "C" 25 100 50 H V L CNN 197 | F1 "Device_C" 25 -100 50 H V L CNN 198 | F2 "" 38 -150 50 H I C CNN 199 | F3 "" 0 0 50 H I C CNN 200 | $FPLIST 201 | C_* 202 | $ENDFPLIST 203 | DRAW 204 | P 2 0 1 20 -80 -30 80 -30 N 205 | P 2 0 1 20 -80 30 80 30 N 206 | X ~ 1 0 150 110 D 50 50 1 1 P 207 | X ~ 2 0 -150 110 U 50 50 1 1 P 208 | ENDDRAW 209 | ENDDEF 210 | # 211 | # Device_Crystal 212 | # 213 | DEF Device_Crystal Y 0 40 N N 1 F N 214 | F0 "Y" 0 150 50 H V C CNN 215 | F1 "Device_Crystal" 0 -150 50 H V C CNN 216 | F2 "" 0 0 50 H I C CNN 217 | F3 "" 0 0 50 H I C CNN 218 | $FPLIST 219 | Crystal* 220 | $ENDFPLIST 221 | DRAW 222 | S -45 100 45 -100 0 1 12 N 223 | P 2 0 1 0 -100 0 -75 0 N 224 | P 2 0 1 20 -75 -50 -75 50 N 225 | P 2 0 1 20 75 -50 75 50 N 226 | P 2 0 1 0 100 0 75 0 N 227 | X 1 1 -150 0 50 R 50 50 1 1 P 228 | X 2 2 150 0 50 L 50 50 1 1 P 229 | ENDDRAW 230 | ENDDEF 231 | # 232 | # Device_LED 233 | # 234 | DEF Device_LED D 0 40 N N 1 F N 235 | F0 "D" 0 100 50 H V C CNN 236 | F1 "Device_LED" 0 -100 50 H V C CNN 237 | F2 "" 0 0 50 H I C CNN 238 | F3 "" 0 0 50 H I C CNN 239 | $FPLIST 240 | LED* 241 | LED_SMD:* 242 | LED_THT:* 243 | $ENDFPLIST 244 | DRAW 245 | P 2 0 1 8 -50 -50 -50 50 N 246 | P 2 0 1 0 -50 0 50 0 N 247 | P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N 248 | P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N 249 | P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N 250 | X K 1 -150 0 100 R 50 50 1 1 P 251 | X A 2 150 0 100 L 50 50 1 1 P 252 | ENDDRAW 253 | ENDDEF 254 | # 255 | # Device_R 256 | # 257 | DEF Device_R R 0 0 N Y 1 F N 258 | F0 "R" 80 0 50 V V C CNN 259 | F1 "Device_R" 0 0 50 V V C CNN 260 | F2 "" -70 0 50 V I C CNN 261 | F3 "" 0 0 50 H I C CNN 262 | $FPLIST 263 | R_* 264 | $ENDFPLIST 265 | DRAW 266 | S -40 -100 40 100 0 1 10 N 267 | X ~ 1 0 150 50 D 50 50 1 1 P 268 | X ~ 2 0 -150 50 U 50 50 1 1 P 269 | ENDDRAW 270 | ENDDEF 271 | # 272 | # Mechanical_MountingHole_Pad 273 | # 274 | DEF Mechanical_MountingHole_Pad H 0 40 N N 1 F N 275 | F0 "H" 0 250 50 H V C CNN 276 | F1 "Mechanical_MountingHole_Pad" 0 175 50 H V C CNN 277 | F2 "" 0 0 50 H I C CNN 278 | F3 "" 0 0 50 H I C CNN 279 | $FPLIST 280 | MountingHole*Pad* 281 | $ENDFPLIST 282 | DRAW 283 | C 0 50 50 0 1 50 N 284 | X 1 1 0 -100 100 U 50 50 1 1 I 285 | ENDDRAW 286 | ENDDEF 287 | # 288 | # Memory_EEPROM_25LCxxx 289 | # 290 | DEF Memory_EEPROM_25LCxxx U 0 20 Y Y 1 F N 291 | F0 "U" -300 250 50 H V C CNN 292 | F1 "Memory_EEPROM_25LCxxx" 100 -250 50 H V L CNN 293 | F2 "" 0 0 50 H I C CNN 294 | F3 "" 0 0 50 H I C CNN 295 | ALIAS BR25Sxxx CAT250xxx AT25xxx 296 | $FPLIST 297 | DIP*W7.62mm* 298 | SOIC*3.9x4.9mm* 299 | TSSOP*4.4x3mm*P0.65mm* 300 | $ENDFPLIST 301 | DRAW 302 | S -300 200 300 -200 1 1 10 f 303 | X ~CS 1 -400 -100 100 R 50 50 1 1 I 304 | X MISO 2 400 -100 100 L 50 50 1 1 T 305 | X ~WP 3 -400 100 100 R 50 50 1 1 I 306 | X GND 4 0 -300 100 U 50 50 1 1 W 307 | X MOSI 5 400 0 100 L 50 50 1 1 I 308 | X SCK 6 400 100 100 L 50 50 1 1 I 309 | X ~HOLD 7 -400 0 100 R 50 50 1 1 I 310 | X VCC 8 0 300 100 D 50 50 1 1 W 311 | ENDDRAW 312 | ENDDEF 313 | # 314 | # Regulator_Linear_MIC5504-3.3YM5 315 | # 316 | DEF Regulator_Linear_MIC5504-3.3YM5 U 0 20 Y Y 1 F N 317 | F0 "U" -300 350 50 H V L CNN 318 | F1 "Regulator_Linear_MIC5504-3.3YM5" -300 250 50 H V L CNN 319 | F2 "Package_TO_SOT_SMD:SOT-23-5" 0 -400 50 H I C CNN 320 | F3 "" -250 250 50 H I C CNN 321 | ALIAS MIC5504-2.8YM5 MIC5504-2.5YM5 MIC5504-1.8YM5 MIC5504-1.2YM5 MIC5501-3.0YM5 322 | $FPLIST 323 | SOT?23?5* 324 | $ENDFPLIST 325 | DRAW 326 | S -300 -200 300 200 0 1 10 f 327 | X VIN 1 -400 100 100 R 50 50 1 1 W 328 | X GND 2 0 -300 100 U 50 50 1 1 W 329 | X EN 3 -400 -100 100 R 50 50 1 1 I 330 | X NC 4 300 -100 100 L 50 50 1 1 N N 331 | X VOUT 5 400 100 100 L 50 50 1 1 w 332 | ENDDRAW 333 | ENDDEF 334 | # 335 | # Transistor_FET_BSS84 336 | # 337 | DEF Transistor_FET_BSS84 Q 0 0 Y N 1 F N 338 | F0 "Q" 200 75 50 H V L CNN 339 | F1 "Transistor_FET_BSS84" 200 0 50 H V L CNN 340 | F2 "Package_TO_SOT_SMD:SOT-23" 200 -75 50 H I L CIN 341 | F3 "" 0 0 50 H I L CNN 342 | ALIAS VP0610T BSS84 NTR2101P BSS83P Si2319CDS IRLML6402 DMG2301L AO3401A 343 | $FPLIST 344 | SOT?23* 345 | $ENDFPLIST 346 | DRAW 347 | C 65 0 111 0 1 10 N 348 | C 100 -70 11 0 1 0 F 349 | C 100 70 11 0 1 0 F 350 | P 2 0 1 0 -100 0 10 0 N 351 | P 2 0 1 0 30 -70 100 -70 N 352 | P 2 0 1 10 30 -50 30 -90 N 353 | P 2 0 1 0 30 0 100 0 N 354 | P 2 0 1 10 30 20 30 -20 N 355 | P 2 0 1 0 30 70 100 70 N 356 | P 2 0 1 10 30 90 30 50 N 357 | P 2 0 1 0 100 -70 100 -100 N 358 | P 2 0 1 0 100 -70 100 0 N 359 | P 2 0 1 0 100 100 100 70 N 360 | P 3 0 1 10 10 75 10 -75 10 -75 N 361 | P 4 0 1 0 90 0 50 -15 50 15 90 0 F 362 | P 4 0 1 0 100 -70 130 -70 130 70 100 70 N 363 | P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N 364 | P 4 0 1 0 130 -15 115 10 145 10 130 -15 N 365 | X G 1 -200 0 100 R 50 50 1 1 I 366 | X S 2 100 -200 100 U 50 50 1 1 P 367 | X D 3 100 200 100 D 50 50 1 1 P 368 | ENDDRAW 369 | ENDDEF 370 | # 371 | # dev-board_MCP2210-I-SS 372 | # 373 | DEF dev-board_MCP2210-I-SS U 0 20 Y Y 1 F N 374 | F0 "U" -400 800 50 H V C CNN 375 | F1 "dev-board_MCP2210-I-SS" 400 800 50 H V C CNN 376 | F2 "Package_SO:SSOP-20_5.3x7.2mm_P0.65mm" 0 1100 50 H I C CNN 377 | F3 "" 0 800 50 H I C CNN 378 | $FPLIST 379 | SSOP*5.3x7.2mm*P0.65mm* 380 | $ENDFPLIST 381 | DRAW 382 | S -400 700 400 -700 0 1 10 f 383 | X VDD 1 -100 800 100 D 50 50 1 1 W 384 | X GP4 10 500 -200 100 L 50 50 1 1 B 385 | X SCK 11 500 600 100 L 50 50 1 1 O 386 | X GP5 12 500 -100 100 L 50 50 1 1 B 387 | X MISO 13 500 400 100 L 50 50 1 1 I 388 | X GP6 14 500 0 100 L 50 50 1 1 B 389 | X GP7 15 500 100 100 L 50 50 1 1 B 390 | X GP8 16 500 200 100 L 50 50 1 1 B 391 | X VUSB 17 0 800 100 D 50 50 1 1 W 392 | X D- 18 -500 100 100 R 50 50 1 1 B 393 | X D+ 19 -500 0 100 R 50 50 1 1 B 394 | X OSC1 2 -500 400 100 R 50 50 1 1 I 395 | X VSS 20 0 -800 100 U 50 50 1 1 W 396 | X OSC2 3 -500 300 100 R 50 50 1 1 O 397 | X ~RST 4 -500 600 100 R 50 50 1 1 I 398 | X GP0 5 500 -600 100 L 50 50 1 1 B 399 | X GP1 6 500 -500 100 L 50 50 1 1 B 400 | X GP2 7 500 -400 100 L 50 50 1 1 B 401 | X GP3 8 500 -300 100 L 50 50 1 1 B 402 | X MOSI 9 500 500 100 L 50 50 1 1 O 403 | ENDDRAW 404 | ENDDEF 405 | # 406 | # dev-board_TPS2115APW 407 | # 408 | DEF dev-board_TPS2115APW U 0 20 Y Y 1 F N 409 | F0 "U" -300 350 50 H V C CNN 410 | F1 "dev-board_TPS2115APW" 100 350 50 H V C CNN 411 | F2 "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" 0 500 50 H I C CNN 412 | F3 "" 0 0 50 H I C CNN 413 | $FPLIST 414 | TSSOP*4.4x3mm*P0.65mm* 415 | $ENDFPLIST 416 | DRAW 417 | S -300 -300 300 300 0 1 0 f 418 | X STAT 1 400 -100 100 L 50 50 1 1 O 419 | X D0 2 -400 0 100 R 50 50 1 1 I 420 | X D1 3 -400 -100 100 R 50 50 1 1 I 421 | X ILIM 4 -400 -200 100 R 50 50 1 1 I 422 | X GND 5 0 -400 100 U 50 50 1 1 W 423 | X IN2 6 -400 100 100 R 50 50 1 1 W 424 | X OUT 7 400 100 100 L 50 50 1 1 w 425 | X IN1 8 -400 200 100 R 50 50 1 1 W 426 | ENDDRAW 427 | ENDDEF 428 | # 429 | # power_+3.3V 430 | # 431 | DEF power_+3.3V #PWR 0 0 Y Y 1 F P 432 | F0 "#PWR" 0 -150 50 H I C CNN 433 | F1 "power_+3.3V" 0 140 50 H V C CNN 434 | F2 "" 0 0 50 H I C CNN 435 | F3 "" 0 0 50 H I C CNN 436 | ALIAS +3.3V 437 | DRAW 438 | P 2 0 1 0 -30 50 0 100 N 439 | P 2 0 1 0 0 0 0 100 N 440 | P 2 0 1 0 0 100 30 50 N 441 | X +3V3 1 0 0 0 U 50 50 1 1 W N 442 | ENDDRAW 443 | ENDDEF 444 | # 445 | # power_+5V 446 | # 447 | DEF power_+5V #PWR 0 0 Y Y 1 F P 448 | F0 "#PWR" 0 -150 50 H I C CNN 449 | F1 "power_+5V" 0 140 50 H V C CNN 450 | F2 "" 0 0 50 H I C CNN 451 | F3 "" 0 0 50 H I C CNN 452 | DRAW 453 | P 2 0 1 0 -30 50 0 100 N 454 | P 2 0 1 0 0 0 0 100 N 455 | P 2 0 1 0 0 100 30 50 N 456 | X +5V 1 0 0 0 U 50 50 1 1 W N 457 | ENDDRAW 458 | ENDDEF 459 | # 460 | # power_+5VP 461 | # 462 | DEF power_+5VP #PWR 0 0 Y Y 1 F P 463 | F0 "#PWR" 0 -150 50 H I C CNN 464 | F1 "power_+5VP" 0 140 50 H V C CNN 465 | F2 "" 0 0 50 H I C CNN 466 | F3 "" 0 0 50 H I C CNN 467 | DRAW 468 | P 2 0 1 0 -30 50 0 100 N 469 | P 2 0 1 0 0 0 0 100 N 470 | P 2 0 1 0 0 100 30 50 N 471 | X +5VP 1 0 0 0 U 50 50 1 1 W N 472 | ENDDRAW 473 | ENDDEF 474 | # 475 | # power_GND 476 | # 477 | DEF power_GND #PWR 0 0 Y Y 1 F P 478 | F0 "#PWR" 0 -250 50 H I C CNN 479 | F1 "power_GND" 0 -150 50 H V C CNN 480 | F2 "" 0 0 50 H I C CNN 481 | F3 "" 0 0 50 H I C CNN 482 | DRAW 483 | P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N 484 | X GND 1 0 0 0 D 50 50 1 1 W N 485 | ENDDRAW 486 | ENDDEF 487 | # 488 | # power_PWR_FLAG 489 | # 490 | DEF power_PWR_FLAG #FLG 0 0 N N 1 F P 491 | F0 "#FLG" 0 75 50 H I C CNN 492 | F1 "power_PWR_FLAG" 0 150 50 H V C CNN 493 | F2 "" 0 0 50 H I C CNN 494 | F3 "" 0 0 50 H I C CNN 495 | DRAW 496 | P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N 497 | X pwr 1 0 0 0 U 50 50 0 0 w 498 | ENDDRAW 499 | ENDDEF 500 | # 501 | # power_VBUS 502 | # 503 | DEF power_VBUS #PWR 0 0 Y Y 1 F P 504 | F0 "#PWR" 0 -150 50 H I C CNN 505 | F1 "power_VBUS" 0 150 50 H V C CNN 506 | F2 "" 0 0 50 H I C CNN 507 | F3 "" 0 0 50 H I C CNN 508 | DRAW 509 | P 2 0 1 0 -30 50 0 100 N 510 | P 2 0 1 0 0 0 0 100 N 511 | P 2 0 1 0 0 100 30 50 N 512 | X VBUS 1 0 0 0 U 50 50 1 1 W N 513 | ENDDRAW 514 | ENDDEF 515 | # 516 | #End Library 517 | -------------------------------------------------------------------------------- /dev-board/pcb/dev-board.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 4 2 | LIBS:dev-board-cache 3 | EELAYER 30 0 4 | EELAYER END 5 | $Descr A3 16535 11693 6 | encoding utf-8 7 | Sheet 1 17 8 | Title "SPI Memory development and testing module" 9 | Date "" 10 | Rev "A" 11 | Comp "" 12 | Comment1 "" 13 | Comment2 "" 14 | Comment3 "" 15 | Comment4 "" 16 | $EndDescr 17 | Text Notes 5500 1000 0 118 ~ 24 18 | Mounting Holes 19 | Text Notes 1600 1000 0 118 ~ 24 20 | 40-Pin HAT Connector 21 | Text Notes 8900 1000 0 118 ~ 24 22 | USB Interface 23 | $Comp 24 | L Connector:Raspberry_Pi_2_3 J1 25 | U 1 1 5D59676A 26 | P 2600 2900 27 | F 0 "J1" H 1950 4150 50 0000 C CNN 28 | F 1 "Raspberry_Pi_2_3" H 3200 4150 50 0000 C CNN 29 | F 2 "Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical" H 2600 2900 50 0001 C CNN 30 | F 3 "https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf" H 2600 2900 50 0001 C CNN 31 | 1 2600 2900 32 | 1 0 0 -1 33 | $EndComp 34 | $Comp 35 | L power:+5VP #PWR01 36 | U 1 1 5D5AA0F0 37 | P 2700 1500 38 | F 0 "#PWR01" H 2700 1350 50 0001 C CNN 39 | F 1 "+5VP" H 2715 1673 50 0000 C CNN 40 | F 2 "" H 2700 1500 50 0001 C CNN 41 | F 3 "" H 2700 1500 50 0001 C CNN 42 | 1 2700 1500 43 | 1 0 0 -1 44 | $EndComp 45 | Wire Wire Line 46 | 2900 4200 2800 4200 47 | Wire Wire Line 48 | 2800 4200 2700 4200 49 | Connection ~ 2800 4200 50 | Wire Wire Line 51 | 2600 4200 2700 4200 52 | Connection ~ 2700 4200 53 | Wire Wire Line 54 | 2600 4200 2500 4200 55 | Connection ~ 2600 4200 56 | Wire Wire Line 57 | 2400 4200 2500 4200 58 | Connection ~ 2500 4200 59 | Wire Wire Line 60 | 2400 4200 2300 4200 61 | Connection ~ 2400 4200 62 | Wire Wire Line 63 | 2300 4200 2200 4200 64 | Connection ~ 2300 4200 65 | $Comp 66 | L power:GND #PWR02 67 | U 1 1 5D5B1130 68 | P 2800 4400 69 | F 0 "#PWR02" H 2800 4150 50 0001 C CNN 70 | F 1 "GND" H 2805 4227 50 0000 C CNN 71 | F 2 "" H 2800 4400 50 0001 C CNN 72 | F 3 "" H 2800 4400 50 0001 C CNN 73 | 1 2800 4400 74 | 1 0 0 -1 75 | $EndComp 76 | Wire Wire Line 77 | 2800 4400 2800 4200 78 | $Comp 79 | L Mechanical:MountingHole_Pad H1 80 | U 1 1 5D5B6246 81 | P 5500 1400 82 | F 0 "H1" H 5600 1446 50 0000 L CNN 83 | F 1 "MountingHole" H 5600 1355 50 0000 L CNN 84 | F 2 "MountingHole:MountingHole_2.7mm_M2.5_Pad" H 5500 1400 50 0001 C CNN 85 | F 3 "~" H 5500 1400 50 0001 C CNN 86 | 1 5500 1400 87 | 1 0 0 -1 88 | $EndComp 89 | $Comp 90 | L Mechanical:MountingHole_Pad H2 91 | U 1 1 5D5BD3B6 92 | P 6400 1400 93 | F 0 "H2" H 6500 1446 50 0000 L CNN 94 | F 1 "MountingHole" H 6500 1355 50 0000 L CNN 95 | F 2 "MountingHole:MountingHole_2.7mm_M2.5_Pad" H 6400 1400 50 0001 C CNN 96 | F 3 "~" H 6400 1400 50 0001 C CNN 97 | 1 6400 1400 98 | 1 0 0 -1 99 | $EndComp 100 | $Comp 101 | L Mechanical:MountingHole_Pad H3 102 | U 1 1 5D5BFA5D 103 | P 5500 1800 104 | F 0 "H3" H 5600 1846 50 0000 L CNN 105 | F 1 "MountingHole" H 5600 1755 50 0000 L CNN 106 | F 2 "MountingHole:MountingHole_2.7mm_M2.5_Pad" H 5500 1800 50 0001 C CNN 107 | F 3 "~" H 5500 1800 50 0001 C CNN 108 | 1 5500 1800 109 | 1 0 0 -1 110 | $EndComp 111 | $Comp 112 | L Mechanical:MountingHole_Pad H4 113 | U 1 1 5D5C25AF 114 | P 6400 1800 115 | F 0 "H4" H 6500 1846 50 0000 L CNN 116 | F 1 "MountingHole" H 6500 1755 50 0000 L CNN 117 | F 2 "MountingHole:MountingHole_2.7mm_M2.5_Pad" H 6400 1800 50 0001 C CNN 118 | F 3 "~" H 6400 1800 50 0001 C CNN 119 | 1 6400 1800 120 | 1 0 0 -1 121 | $EndComp 122 | NoConn ~ 3400 2000 123 | NoConn ~ 3400 2100 124 | NoConn ~ 2800 1600 125 | NoConn ~ 2700 1600 126 | Wire Wire Line 127 | 3400 3200 3900 3200 128 | Wire Wire Line 129 | 3400 3300 3900 3300 130 | Text Label 3900 3300 2 50 ~ 0 131 | SPI_MOSI 132 | Text Label 3900 3400 2 50 ~ 0 133 | SPI_SCLK 134 | Wire Wire Line 135 | 3900 3400 3400 3400 136 | $Comp 137 | L power:GND #PWR07 138 | U 1 1 5D6C0A4E 139 | P 8650 4850 140 | F 0 "#PWR07" H 8650 4600 50 0001 C CNN 141 | F 1 "GND" H 8655 4677 50 0000 C CNN 142 | F 2 "" H 8650 4850 50 0001 C CNN 143 | F 3 "" H 8650 4850 50 0001 C CNN 144 | 1 8650 4850 145 | 1 0 0 -1 146 | $EndComp 147 | Text Label 3900 3200 2 50 ~ 0 148 | SPI_MISO 149 | $Comp 150 | L power:VBUS #PWR06 151 | U 1 1 5D6E8244 152 | P 8500 4050 153 | F 0 "#PWR06" H 8500 3900 50 0001 C CNN 154 | F 1 "VBUS" H 8515 4223 50 0000 C CNN 155 | F 2 "" H 8500 4050 50 0001 C CNN 156 | F 3 "" H 8500 4050 50 0001 C CNN 157 | 1 8500 4050 158 | 1 0 0 -1 159 | $EndComp 160 | Wire Wire Line 161 | 10100 2950 10600 2950 162 | Text Label 10600 2950 2 50 ~ 0 163 | SPI_MISO 164 | Wire Wire Line 165 | 10100 2850 10600 2850 166 | Text Label 10600 2850 2 50 ~ 0 167 | SPI_MOSI 168 | Text Label 10600 2750 2 50 ~ 0 169 | SPI_SCLK 170 | Wire Wire Line 171 | 10600 2750 10100 2750 172 | $Comp 173 | L Device:C C1 174 | U 1 1 5D70826B 175 | P 9850 2300 176 | F 0 "C1" V 9598 2300 50 0000 C CNN 177 | F 1 "0.47µF" V 9689 2300 50 0000 C CNN 178 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 9888 2150 50 0001 C CNN 179 | F 3 "~" H 9850 2300 50 0001 C CNN 180 | F 4 "0.22-0.47µF according to MCP DS" V 9850 2300 50 0001 C CNN "Comment" 181 | 1 9850 2300 182 | 0 1 1 0 183 | $EndComp 184 | $Comp 185 | L power:GND #PWR03 186 | U 1 1 5D70C617 187 | P 10100 2400 188 | F 0 "#PWR03" H 10100 2150 50 0001 C CNN 189 | F 1 "GND" H 10105 2227 50 0000 C CNN 190 | F 2 "" H 10100 2400 50 0001 C CNN 191 | F 3 "" H 10100 2400 50 0001 C CNN 192 | 1 10100 2400 193 | 1 0 0 -1 194 | $EndComp 195 | $Comp 196 | L Device:R R1 197 | U 1 1 5D713562 198 | P 9000 2500 199 | F 0 "R1" H 9070 2546 50 0000 L CNN 200 | F 1 "10k" H 9070 2455 50 0000 L CNN 201 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 8930 2500 50 0001 C CNN 202 | F 3 "~" H 9000 2500 50 0001 C CNN 203 | F 4 "1-10K according to MCP DS" H 9000 2500 50 0001 C CNN "Comment" 204 | 1 9000 2500 205 | 1 0 0 -1 206 | $EndComp 207 | Wire Wire Line 208 | 9000 2750 9000 2650 209 | $Comp 210 | L Device:Crystal Y1 211 | U 1 1 5D71AA6D 212 | P 8650 3000 213 | F 0 "Y1" V 8604 3131 50 0000 L CNN 214 | F 1 "12MHz" V 8695 3131 50 0000 L CNN 215 | F 2 "Crystal:Crystal_SMD_TXC_7A-2Pin_5x3.2mm" H 8650 3000 50 0001 C CNN 216 | F 3 "https://www.mouser.de/datasheet/2/122/ecx-53r-17605.pdf" H 8650 3000 50 0001 C CNN 217 | F 4 "ECS-120-18-30-JEM-TR" V 8650 3000 50 0001 C CNN "ECS Part no" 218 | 1 8650 3000 219 | 0 1 1 0 220 | $EndComp 221 | Wire Wire Line 222 | 9100 2950 9100 2850 223 | Wire Wire Line 224 | 9100 2850 8650 2850 225 | Wire Wire Line 226 | 9100 3050 9100 3150 227 | Wire Wire Line 228 | 9100 3150 8650 3150 229 | $Comp 230 | L power:GND #PWR05 231 | U 1 1 5D723281 232 | P 8000 2850 233 | F 0 "#PWR05" H 8000 2600 50 0001 C CNN 234 | F 1 "GND" H 8005 2677 50 0000 C CNN 235 | F 2 "" H 8000 2850 50 0001 C CNN 236 | F 3 "" H 8000 2850 50 0001 C CNN 237 | 1 8000 2850 238 | 1 0 0 -1 239 | $EndComp 240 | Wire Wire Line 241 | 8100 4750 8000 4750 242 | NoConn ~ 8400 4550 243 | $Comp 244 | L Connector:USB_B_Micro J2 245 | U 1 1 5D5C8BC2 246 | P 8100 4350 247 | F 0 "J2" H 8157 4817 50 0000 C CNN 248 | F 1 "USB_B_Micro" H 8157 4726 50 0000 C CNN 249 | F 2 "Connector_USB:USB_Micro-B_Molex-105017-0001" H 8250 4300 50 0001 C CNN 250 | F 3 "~" H 8250 4300 50 0001 C CNN 251 | 1 8100 4350 252 | 1 0 0 -1 253 | $EndComp 254 | Wire Wire Line 255 | 8500 4050 8500 4150 256 | Wire Wire Line 257 | 8500 4150 8400 4150 258 | Wire Wire Line 259 | 8100 4750 8650 4750 260 | Connection ~ 8100 4750 261 | Wire Wire Line 262 | 8800 4450 8400 4450 263 | Wire Wire Line 264 | 8800 3250 8800 4450 265 | Wire Wire Line 266 | 8400 4350 8900 4350 267 | Wire Wire Line 268 | 8900 3350 8900 4350 269 | $Comp 270 | L Device:C C2 271 | U 1 1 5D71EFD7 272 | P 8350 2750 273 | F 0 "C2" V 8098 2750 50 0000 C CNN 274 | F 1 "18pF" V 8189 2750 50 0000 C CNN 275 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 8388 2600 50 0001 C CNN 276 | F 3 "~" H 8350 2750 50 0001 C CNN 277 | 1 8350 2750 278 | 0 1 1 0 279 | $EndComp 280 | $Comp 281 | L Device:C C3 282 | U 1 1 5D71FB07 283 | P 8350 3250 284 | F 0 "C3" V 8098 3250 50 0000 C CNN 285 | F 1 "18pF" V 8189 3250 50 0000 C CNN 286 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 8388 3100 50 0001 C CNN 287 | F 3 "~" H 8350 3250 50 0001 C CNN 288 | 1 8350 3250 289 | 0 1 1 0 290 | $EndComp 291 | Wire Wire Line 292 | 8500 3250 8650 3250 293 | Wire Wire Line 294 | 8650 3250 8650 3150 295 | Connection ~ 8650 3150 296 | Wire Wire Line 297 | 8650 2850 8650 2750 298 | Wire Wire Line 299 | 8650 2750 8500 2750 300 | Connection ~ 8650 2850 301 | Wire Wire Line 302 | 8200 2750 8200 3250 303 | Wire Wire Line 304 | 8200 2750 8000 2750 305 | Wire Wire Line 306 | 8000 2750 8000 2850 307 | Connection ~ 8200 2750 308 | Text Label 11700 3150 2 50 ~ 0 309 | ~SPI_RELEASE 310 | Text Notes 12700 1000 0 118 ~ 24 311 | Power Management 312 | Text Notes 12400 1200 0 50 ~ 0 313 | U2 will forward VBUS to +5V if VBUS is available. If not,\nit will forward the Pi's +5VP instead. 314 | Wire Wire Line 315 | 9100 2750 9000 2750 316 | Wire Wire Line 317 | 8900 3350 9100 3350 318 | Wire Wire Line 319 | 9100 3250 8800 3250 320 | $Comp 321 | L dev-board:MCP2210-I-SS U1 322 | U 1 1 5D5CDFC7 323 | P 9600 3350 324 | F 0 "U1" H 9250 2600 50 0000 C CNN 325 | F 1 "MCP2210-I-SS" H 9950 2600 50 0000 C CNN 326 | F 2 "Package_SO:SSOP-20_5.3x7.2mm_P0.65mm" H 9600 4450 50 0001 C CNN 327 | F 3 "https://ww1.microchip.com/downloads/en/DeviceDoc/22288A.pdf" H 9600 4150 50 0001 C CNN 328 | 1 9600 3350 329 | 1 0 0 -1 330 | $EndComp 331 | $Comp 332 | L dev-board:TPS2115APW U2 333 | U 1 1 5D5E225B 334 | P 13950 2050 335 | F 0 "U2" H 13950 2515 50 0000 C CNN 336 | F 1 "TPS2115APW" H 13950 2424 50 0000 C CNN 337 | F 2 "Package_SO:TSSOP-8_4.4x3mm_P0.65mm" H 13950 2550 50 0001 C CNN 338 | F 3 "http://www.ti.com/lit/ds/symlink/tps2115a.pdf" H 13950 2050 50 0001 C CNN 339 | 1 13950 2050 340 | 1 0 0 -1 341 | $EndComp 342 | $Comp 343 | L power:VBUS #PWR09 344 | U 1 1 5D5E868D 345 | P 12700 1750 346 | F 0 "#PWR09" H 12700 1600 50 0001 C CNN 347 | F 1 "VBUS" H 12715 1923 50 0000 C CNN 348 | F 2 "" H 12700 1750 50 0001 C CNN 349 | F 3 "" H 12700 1750 50 0001 C CNN 350 | 1 12700 1750 351 | 1 0 0 -1 352 | $EndComp 353 | $Comp 354 | L power:+5VP #PWR08 355 | U 1 1 5D5EA233 356 | P 12300 1750 357 | F 0 "#PWR08" H 12300 1600 50 0001 C CNN 358 | F 1 "+5VP" H 12315 1923 50 0000 C CNN 359 | F 2 "" H 12300 1750 50 0001 C CNN 360 | F 3 "" H 12300 1750 50 0001 C CNN 361 | 1 12300 1750 362 | 1 0 0 -1 363 | $EndComp 364 | NoConn ~ 13550 2050 365 | $Comp 366 | L power:GND #PWR011 367 | U 1 1 5D5ECF51 368 | P 13550 2850 369 | F 0 "#PWR011" H 13550 2600 50 0001 C CNN 370 | F 1 "GND" H 13555 2677 50 0000 C CNN 371 | F 2 "" H 13550 2850 50 0001 C CNN 372 | F 3 "" H 13550 2850 50 0001 C CNN 373 | 1 13550 2850 374 | 1 0 0 -1 375 | $EndComp 376 | $Comp 377 | L Device:R R5 378 | U 1 1 5D5EFF3F 379 | P 13550 2500 380 | F 0 "R5" H 13620 2546 50 0000 L CNN 381 | F 1 "1k" H 13620 2455 50 0000 L CNN 382 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 13480 2500 50 0001 C CNN 383 | F 3 "~" H 13550 2500 50 0001 C CNN 384 | F 4 "Ilim is 500/Rlim" H 13550 2500 50 0001 C CNN "Comment" 385 | 1 13550 2500 386 | 1 0 0 -1 387 | $EndComp 388 | Wire Wire Line 389 | 13550 2850 13550 2750 390 | Wire Wire Line 391 | 13550 2750 13950 2750 392 | Wire Wire Line 393 | 13950 2750 13950 2450 394 | Connection ~ 13550 2750 395 | $Comp 396 | L power:+5V #PWR010 397 | U 1 1 5D5F729A 398 | P 14550 1750 399 | F 0 "#PWR010" H 14550 1600 50 0001 C CNN 400 | F 1 "+5V" H 14565 1923 50 0000 C CNN 401 | F 2 "" H 14550 1750 50 0001 C CNN 402 | F 3 "" H 14550 1750 50 0001 C CNN 403 | 1 14550 1750 404 | 1 0 0 -1 405 | $EndComp 406 | Wire Wire Line 407 | 9000 2350 9000 2300 408 | Wire Wire Line 409 | 8650 4850 8650 4750 410 | Connection ~ 8650 4750 411 | Wire Wire Line 412 | 14350 1950 14550 1950 413 | Wire Wire Line 414 | 14550 1950 14550 1750 415 | Wire Wire Line 416 | 9600 4750 9600 4150 417 | Wire Wire Line 418 | 8650 4750 9600 4750 419 | $Comp 420 | L Regulator_Linear:MIC5504-3.3YM5 U3 421 | U 1 1 5D6605EE 422 | P 13450 4000 423 | F 0 "U3" H 13450 4367 50 0000 C CNN 424 | F 1 "MIC5504-3.3YM5" H 13450 4276 50 0000 C CNN 425 | F 2 "Package_TO_SOT_SMD:SOT-23-5" H 13450 3600 50 0001 C CNN 426 | F 3 "http://ww1.microchip.com/downloads/en/DeviceDoc/MIC550X.pdf" H 13200 4250 50 0001 C CNN 427 | 1 13450 4000 428 | 1 0 0 -1 429 | $EndComp 430 | Text Notes 8600 1200 0 50 ~ 0 431 | The MCP has to be run at 3.3V so the IO voltage is\ncompatible with the Pi's. 432 | $Comp 433 | L power:+5V #PWR012 434 | U 1 1 5D670F22 435 | P 12600 3800 436 | F 0 "#PWR012" H 12600 3650 50 0001 C CNN 437 | F 1 "+5V" H 12615 3973 50 0000 C CNN 438 | F 2 "" H 12600 3800 50 0001 C CNN 439 | F 3 "" H 12600 3800 50 0001 C CNN 440 | 1 12600 3800 441 | 1 0 0 -1 442 | $EndComp 443 | $Comp 444 | L power:GND #PWR014 445 | U 1 1 5D67715B 446 | P 13450 4450 447 | F 0 "#PWR014" H 13450 4200 50 0001 C CNN 448 | F 1 "GND" H 13455 4277 50 0000 C CNN 449 | F 2 "" H 13450 4450 50 0001 C CNN 450 | F 3 "" H 13450 4450 50 0001 C CNN 451 | 1 13450 4450 452 | 1 0 0 -1 453 | $EndComp 454 | Wire Wire Line 455 | 13450 4450 13450 4400 456 | $Comp 457 | L Device:C C4 458 | U 1 1 5D67A53D 459 | P 14000 4150 460 | F 0 "C4" H 14115 4241 50 0000 L CNN 461 | F 1 "1µF" H 14115 4150 50 0000 L CNN 462 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 14038 4000 50 0001 C CNN 463 | F 3 "~" H 14000 4150 50 0001 C CNN 464 | F 4 "X5R/X7R" H 14115 4059 50 0000 L CNN "Comment" 465 | 1 14000 4150 466 | 1 0 0 -1 467 | $EndComp 468 | $Comp 469 | L Device:C C5 470 | U 1 1 5D67D8E3 471 | P 12600 4250 472 | F 0 "C5" H 12715 4341 50 0000 L CNN 473 | F 1 "1µF" H 12715 4250 50 0000 L CNN 474 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 12638 4100 50 0001 C CNN 475 | F 3 "~" H 12600 4250 50 0001 C CNN 476 | F 4 "X5R/X7R" H 12715 4159 50 0000 L CNN "Comment" 477 | 1 12600 4250 478 | -1 0 0 1 479 | $EndComp 480 | Connection ~ 13450 4400 481 | Wire Wire Line 482 | 13450 4400 13450 4300 483 | Wire Wire Line 484 | 13450 4400 14000 4400 485 | Wire Wire Line 486 | 14000 3900 13850 3900 487 | Wire Wire Line 488 | 14000 3900 14300 3900 489 | Wire Wire Line 490 | 14300 3900 14300 3800 491 | Connection ~ 14000 3900 492 | $Comp 493 | L power:+3.3V #PWR013 494 | U 1 1 5D686C76 495 | P 14300 3800 496 | F 0 "#PWR013" H 14300 3650 50 0001 C CNN 497 | F 1 "+3.3V" H 14315 3973 50 0000 C CNN 498 | F 2 "" H 14300 3800 50 0001 C CNN 499 | F 3 "" H 14300 3800 50 0001 C CNN 500 | 1 14300 3800 501 | 1 0 0 -1 502 | $EndComp 503 | $Comp 504 | L power:+3.3V #PWR04 505 | U 1 1 5D69580D 506 | P 9000 2200 507 | F 0 "#PWR04" H 9000 2050 50 0001 C CNN 508 | F 1 "+3.3V" H 9015 2373 50 0000 C CNN 509 | F 2 "" H 9000 2200 50 0001 C CNN 510 | F 3 "" H 9000 2200 50 0001 C CNN 511 | 1 9000 2200 512 | 1 0 0 -1 513 | $EndComp 514 | Wire Wire Line 515 | 1800 3100 1250 3100 516 | Wire Wire Line 517 | 1800 3600 1250 3600 518 | Wire Wire Line 519 | 13550 2350 13550 2250 520 | Wire Wire Line 521 | 13550 2650 13550 2750 522 | Text Label 1250 3100 0 50 ~ 0 523 | ~SPI_RELEASE 524 | Text Label 1250 3600 0 50 ~ 0 525 | SPI_REL_ACK 526 | NoConn ~ 1800 2000 527 | NoConn ~ 1800 2100 528 | NoConn ~ 3400 2300 529 | NoConn ~ 3400 2400 530 | NoConn ~ 3400 3700 531 | NoConn ~ 3400 3600 532 | $Comp 533 | L Device:R R3 534 | U 1 1 5D744234 535 | P 15400 3150 536 | F 0 "R3" V 15193 3150 50 0000 C CNN 537 | F 1 "1k" V 15284 3150 50 0000 C CNN 538 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 15330 3150 50 0001 C CNN 539 | F 3 "~" H 15400 3150 50 0001 C CNN 540 | 1 15400 3150 541 | -1 0 0 1 542 | $EndComp 543 | $Comp 544 | L Device:LED D1 545 | U 1 1 5D7446A8 546 | P 15400 2750 547 | F 0 "D1" V 15439 2632 50 0000 R CNN 548 | F 1 "USB" V 15348 2632 50 0000 R CNN 549 | F 2 "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 15400 2750 50 0001 C CNN 550 | F 3 "~" H 15400 2750 50 0001 C CNN 551 | 1 15400 2750 552 | 0 -1 -1 0 553 | $EndComp 554 | Wire Wire Line 555 | 15400 2900 15400 3000 556 | Wire Wire Line 557 | 10000 2300 10100 2300 558 | Wire Wire Line 559 | 10100 2300 10100 2400 560 | Wire Wire Line 561 | 9700 2300 9600 2300 562 | Wire Wire Line 563 | 9600 2300 9600 2550 564 | Wire Wire Line 565 | 9600 2300 9500 2300 566 | Wire Wire Line 567 | 9500 2300 9500 2550 568 | Connection ~ 9600 2300 569 | Wire Wire Line 570 | 9500 2300 9000 2300 571 | Connection ~ 9500 2300 572 | Connection ~ 9000 2300 573 | Wire Wire Line 574 | 9000 2300 9000 2200 575 | NoConn ~ 1800 2300 576 | NoConn ~ 1800 2400 577 | NoConn ~ 1800 2500 578 | NoConn ~ 1800 2700 579 | NoConn ~ 1800 2800 580 | NoConn ~ 1800 2900 581 | NoConn ~ 3400 2800 582 | NoConn ~ 3400 3000 583 | NoConn ~ 3400 3100 584 | $Comp 585 | L Device:R R2 586 | U 1 1 5D801BCD 587 | P 10750 3000 588 | F 0 "R2" H 10820 3046 50 0000 L CNN 589 | F 1 "10k" H 10820 2955 50 0000 L CNN 590 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 10680 3000 50 0001 C CNN 591 | F 3 "~" H 10750 3000 50 0001 C CNN 592 | 1 10750 3000 593 | 1 0 0 -1 594 | $EndComp 595 | Wire Wire Line 596 | 10750 3150 11000 3150 597 | $Comp 598 | L power:+3.3V #PWR015 599 | U 1 1 5D802E2F 600 | P 10750 2850 601 | F 0 "#PWR015" H 10750 2700 50 0001 C CNN 602 | F 1 "+3.3V" H 10765 3023 50 0000 C CNN 603 | F 2 "" H 10750 2850 50 0001 C CNN 604 | F 3 "" H 10750 2850 50 0001 C CNN 605 | 1 10750 2850 606 | 1 0 0 -1 607 | $EndComp 608 | NoConn ~ 10100 3350 609 | Wire Wire Line 610 | 2400 1500 2400 1600 611 | $Comp 612 | L power:PWR_FLAG #FLG0101 613 | U 1 1 5D8692CD 614 | P 2200 1500 615 | F 0 "#FLG0101" H 2200 1575 50 0001 C CNN 616 | F 1 "PWR_FLAG" H 2200 1673 50 0000 C CNN 617 | F 2 "" H 2200 1500 50 0001 C CNN 618 | F 3 "~" H 2200 1500 50 0001 C CNN 619 | 1 2200 1500 620 | 1 0 0 -1 621 | $EndComp 622 | Wire Wire Line 623 | 2500 1600 2500 1500 624 | Wire Wire Line 625 | 2500 1500 2700 1500 626 | Wire Wire Line 627 | 2500 1500 2400 1500 628 | Connection ~ 2500 1500 629 | Wire Wire Line 630 | 2400 1500 2200 1500 631 | Connection ~ 2400 1500 632 | NoConn ~ 6400 1500 633 | NoConn ~ 6400 1900 634 | NoConn ~ 5500 1900 635 | NoConn ~ 5500 1500 636 | $Comp 637 | L power:VBUS #PWR017 638 | U 1 1 5D71FB8B 639 | P 15400 2500 640 | F 0 "#PWR017" H 15400 2350 50 0001 C CNN 641 | F 1 "VBUS" H 15415 2673 50 0000 C CNN 642 | F 2 "" H 15400 2500 50 0001 C CNN 643 | F 3 "" H 15400 2500 50 0001 C CNN 644 | 1 15400 2500 645 | 1 0 0 -1 646 | $EndComp 647 | Wire Wire Line 648 | 15400 2500 15400 2600 649 | $Comp 650 | L power:+5VP #PWR016 651 | U 1 1 5D72B25D 652 | P 15100 2500 653 | F 0 "#PWR016" H 15100 2350 50 0001 C CNN 654 | F 1 "+5VP" H 15115 2673 50 0000 C CNN 655 | F 2 "" H 15100 2500 50 0001 C CNN 656 | F 3 "" H 15100 2500 50 0001 C CNN 657 | 1 15100 2500 658 | 1 0 0 -1 659 | $EndComp 660 | $Comp 661 | L Device:LED D2 662 | U 1 1 5D730059 663 | P 15100 2750 664 | F 0 "D2" V 15139 2632 50 0000 R CNN 665 | F 1 "PI" V 15048 2632 50 0000 R CNN 666 | F 2 "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 15100 2750 50 0001 C CNN 667 | F 3 "~" H 15100 2750 50 0001 C CNN 668 | 1 15100 2750 669 | 0 -1 -1 0 670 | $EndComp 671 | Wire Wire Line 672 | 15100 2600 15100 2500 673 | $Comp 674 | L Device:R R6 675 | U 1 1 5D7365B9 676 | P 15100 3150 677 | F 0 "R6" V 14893 3150 50 0000 C CNN 678 | F 1 "1k" V 14984 3150 50 0000 C CNN 679 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 15030 3150 50 0001 C CNN 680 | F 3 "~" H 15100 3150 50 0001 C CNN 681 | 1 15100 3150 682 | -1 0 0 1 683 | $EndComp 684 | Wire Wire Line 685 | 15100 3000 15100 2900 686 | Wire Wire Line 687 | 15100 3300 15400 3300 688 | $Comp 689 | L power:GND #PWR018 690 | U 1 1 5D73EFBD 691 | P 15100 3400 692 | F 0 "#PWR018" H 15100 3150 50 0001 C CNN 693 | F 1 "GND" H 15105 3227 50 0000 C CNN 694 | F 2 "" H 15100 3400 50 0001 C CNN 695 | F 3 "" H 15100 3400 50 0001 C CNN 696 | 1 15100 3400 697 | 1 0 0 -1 698 | $EndComp 699 | Wire Wire Line 700 | 15100 3400 15100 3300 701 | Connection ~ 15100 3300 702 | $Comp 703 | L Connector:TestPoint TP2 704 | U 1 1 5D74F2A5 705 | P 14000 3800 706 | F 0 "TP2" H 14058 3918 50 0000 L CNN 707 | F 1 "3V3" H 14058 3827 50 0000 L CNN 708 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 14200 3800 50 0001 C CNN 709 | F 3 "~" H 14200 3800 50 0001 C CNN 710 | 1 14000 3800 711 | 1 0 0 -1 712 | $EndComp 713 | Wire Wire Line 714 | 14000 3900 14000 3800 715 | Wire Wire Line 716 | 14000 4400 14000 4300 717 | Wire Wire Line 718 | 14000 4000 14000 3900 719 | $Comp 720 | L Connector:TestPoint TP3 721 | U 1 1 5D7931E1 722 | P 14650 2150 723 | F 0 "TP3" V 14604 2338 50 0000 L CNN 724 | F 1 "5V" V 14695 2338 50 0000 L CNN 725 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 14850 2150 50 0001 C CNN 726 | F 3 "~" H 14850 2150 50 0001 C CNN 727 | 1 14650 2150 728 | -1 0 0 1 729 | $EndComp 730 | $Comp 731 | L Device:LED D3 732 | U 1 1 5D7B3C56 733 | P 1900 7400 734 | F 0 "D3" V 1939 7282 50 0000 R CNN 735 | F 1 "PI" V 1848 7282 50 0000 R CNN 736 | F 2 "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 1900 7400 50 0001 C CNN 737 | F 3 "~" H 1900 7400 50 0001 C CNN 738 | 1 1900 7400 739 | 0 -1 -1 0 740 | $EndComp 741 | $Comp 742 | L Device:R R7 743 | U 1 1 5D7B3C60 744 | P 2200 7000 745 | F 0 "R7" H 2100 6950 50 0000 C CNN 746 | F 1 "1k" H 2100 7050 50 0000 C CNN 747 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 2130 7000 50 0001 C CNN 748 | F 3 "~" H 2200 7000 50 0001 C CNN 749 | 1 2200 7000 750 | 1 0 0 -1 751 | $EndComp 752 | $Comp 753 | L Device:R R4 754 | U 1 1 5D75A725 755 | P 12900 4100 756 | F 0 "R4" H 12830 4054 50 0000 R CNN 757 | F 1 "10k" H 12830 4145 50 0000 R CNN 758 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 12830 4100 50 0001 C CNN 759 | F 3 "~" H 12900 4100 50 0001 C CNN 760 | 1 12900 4100 761 | 0 -1 -1 0 762 | $EndComp 763 | Wire Wire Line 764 | 12600 4400 13450 4400 765 | Wire Wire Line 766 | 12600 3800 12600 3900 767 | Wire Wire Line 768 | 12600 3900 13050 3900 769 | Wire Wire Line 770 | 12600 3900 12600 4100 771 | Wire Wire Line 772 | 12600 4100 12750 4100 773 | Connection ~ 12600 3900 774 | Connection ~ 12600 4100 775 | Text Notes 5400 3100 0 59 ~ 0 776 | Brass Standoffs:\nMouser part numbers\n710-971050154\n710-970050154 777 | $Comp 778 | L Connector:TestPoint TP4 779 | U 1 1 5D68B8F7 780 | P 11000 3150 781 | F 0 "TP4" H 11050 3300 50 0000 L CNN 782 | F 1 "REL" H 11050 3200 50 0000 L CNN 783 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 11200 3150 50 0001 C CNN 784 | F 3 "~" H 11200 3150 50 0001 C CNN 785 | 1 11000 3150 786 | 1 0 0 -1 787 | $EndComp 788 | Connection ~ 11000 3150 789 | $Comp 790 | L Connector:TestPoint TP5 791 | U 1 1 5D69C244 792 | P 11000 3250 793 | F 0 "TP5" H 10800 3300 50 0000 L CNN 794 | F 1 "ACK" H 10800 3400 50 0000 L CNN 795 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 11200 3250 50 0001 C CNN 796 | F 3 "~" H 11200 3250 50 0001 C CNN 797 | 1 11000 3250 798 | -1 0 0 1 799 | $EndComp 800 | Connection ~ 11000 3250 801 | $Comp 802 | L power:+3.3V #PWR019 803 | U 1 1 5D6EA62D 804 | P 1550 5650 805 | F 0 "#PWR019" H 1550 5500 50 0001 C CNN 806 | F 1 "+3.3V" H 1565 5823 50 0000 C CNN 807 | F 2 "" H 1550 5650 50 0001 C CNN 808 | F 3 "" H 1550 5650 50 0001 C CNN 809 | 1 1550 5650 810 | 1 0 0 -1 811 | $EndComp 812 | Wire Wire Line 813 | 11000 3250 11700 3250 814 | Text Label 11700 3250 2 50 ~ 0 815 | SPI_REL_ACK 816 | Wire Wire Line 817 | 11000 3150 11700 3150 818 | Wire Wire Line 819 | 10100 3150 10750 3150 820 | Connection ~ 10750 3150 821 | $Comp 822 | L Device:R R9 823 | U 1 1 5D7EDDC0 824 | P 1550 5850 825 | F 0 "R9" H 1620 5896 50 0000 L CNN 826 | F 1 "10k" H 1620 5805 50 0000 L CNN 827 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 1480 5850 50 0001 C CNN 828 | F 3 "~" H 1550 5850 50 0001 C CNN 829 | 1 1550 5850 830 | 1 0 0 -1 831 | $EndComp 832 | Wire Wire Line 833 | 10100 3250 11000 3250 834 | Text Notes 1400 5200 0 118 ~ 24 835 | Master LEDs 836 | Text Notes 1100 5350 0 59 ~ 0 837 | 2 LEDs indicating the current bus master 838 | Text Label 950 6050 0 50 ~ 0 839 | SPI_REL_ACK 840 | $Comp 841 | L Device:R R8 842 | U 1 1 5D848ED6 843 | P 2550 7000 844 | F 0 "R8" H 2480 6954 50 0000 R CNN 845 | F 1 "1k" H 2480 7045 50 0000 R CNN 846 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 2480 7000 50 0001 C CNN 847 | F 3 "~" H 2550 7000 50 0001 C CNN 848 | 1 2550 7000 849 | 1 0 0 -1 850 | $EndComp 851 | Text Notes 4700 5200 0 118 ~ 24 852 | Chip Select Multiplexer 853 | Text Notes 4600 5550 0 50 ~ 0 854 | Due to lack of GPIOs, we use a 4-to-16 decoder to address\nthe test chips. It's shared between the Pi and USB chip, so\nwe hook them up to pull-ups and drive them only via\nOpen-Drain to prevent shorts. 855 | Wire Wire Line 856 | 12300 1950 12300 1750 857 | $Comp 858 | L Connector:TestPoint TP7 859 | U 1 1 5DA7893D 860 | P 13300 1800 861 | F 0 "TP7" V 13254 1988 50 0000 L CNN 862 | F 1 "5VP" V 13345 1988 50 0000 L CNN 863 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 13500 1800 50 0001 C CNN 864 | F 3 "~" H 13500 1800 50 0001 C CNN 865 | 1 13300 1800 866 | 1 0 0 -1 867 | $EndComp 868 | $Comp 869 | L Connector:TestPoint TP6 870 | U 1 1 5DA7EA1E 871 | P 13500 1800 872 | F 0 "TP6" V 13454 1988 50 0000 L CNN 873 | F 1 "VBUS" V 13545 1988 50 0000 L CNN 874 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 13700 1800 50 0001 C CNN 875 | F 3 "~" H 13700 1800 50 0001 C CNN 876 | 1 13500 1800 877 | 1 0 0 -1 878 | $EndComp 879 | Text Label 4350 6600 0 50 ~ 0 880 | CSBIT0 881 | Text Label 4350 6700 0 50 ~ 0 882 | CSBIT1 883 | Text Label 4350 6800 0 50 ~ 0 884 | CSBIT2 885 | Text Label 4350 6900 0 50 ~ 0 886 | CSBIT3 887 | $Comp 888 | L power:+3.3V #PWR021 889 | U 1 1 5DB82285 890 | P 5700 6000 891 | F 0 "#PWR021" H 5700 5850 50 0001 C CNN 892 | F 1 "+3.3V" H 5715 6173 50 0000 C CNN 893 | F 2 "" H 5700 6000 50 0001 C CNN 894 | F 3 "" H 5700 6000 50 0001 C CNN 895 | 1 5700 6000 896 | 1 0 0 -1 897 | $EndComp 898 | $Comp 899 | L 74xx_IEEE:74154 U4 900 | U 1 1 5D9910A9 901 | P 6000 7400 902 | F 0 "U4" H 5800 8350 50 0000 C CNN 903 | F 1 "CD74HC154" H 6250 8350 50 0000 C CNN 904 | F 2 "Package_SO:SOIC-24W_7.5x15.4mm_P1.27mm" H 6000 7400 25 0001 C CNN 905 | F 3 "http://www.ti.com/lit/ds/symlink/cd74hc154.pdf" H 6000 7400 25 0001 C CNN 906 | 1 6000 7400 907 | 1 0 0 -1 908 | $EndComp 909 | Wire Wire Line 910 | 6000 6500 6000 6000 911 | Wire Wire Line 912 | 6000 6000 5700 6000 913 | Connection ~ 5700 6000 914 | Wire Wire Line 915 | 5450 7300 5450 8300 916 | Wire Wire Line 917 | 5450 8300 6000 8300 918 | Wire Wire Line 919 | 6000 8300 6000 8200 920 | $Comp 921 | L power:GND #PWR022 922 | U 1 1 5DC6C654 923 | P 6000 8300 924 | F 0 "#PWR022" H 6000 8050 50 0001 C CNN 925 | F 1 "GND" H 6005 8127 50 0000 C CNN 926 | F 2 "" H 6000 8300 50 0001 C CNN 927 | F 3 "" H 6000 8300 50 0001 C CNN 928 | 1 6000 8300 929 | 1 0 0 -1 930 | $EndComp 931 | Connection ~ 6000 8300 932 | $Comp 933 | L Device:R R10 934 | U 1 1 5DC83C87 935 | P 4875 7300 936 | F 0 "R10" H 4925 7250 50 0000 L CNN 937 | F 1 "10k" H 4925 7350 50 0000 L CNN 938 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 4805 7300 50 0001 C CNN 939 | F 3 "~" H 4875 7300 50 0001 C CNN 940 | 1 4875 7300 941 | 1 0 0 -1 942 | $EndComp 943 | Text Label 10500 3950 2 50 ~ 0 944 | CSBIT0 945 | Text Label 10500 3850 2 50 ~ 0 946 | CSBIT1 947 | Text Label 10500 3750 2 50 ~ 0 948 | CSBIT2 949 | Text Label 10500 3650 2 50 ~ 0 950 | CSBIT3 951 | Text Label 10500 3550 2 50 ~ 0 952 | ~CSEN 953 | Wire Wire Line 954 | 10500 3550 10100 3550 955 | Wire Wire Line 956 | 10100 3650 10500 3650 957 | Wire Wire Line 958 | 10500 3750 10100 3750 959 | Wire Wire Line 960 | 10100 3850 10500 3850 961 | Wire Wire Line 962 | 10500 3950 10100 3950 963 | Text Label 1250 3200 0 50 ~ 0 964 | CSBIT0 965 | Text Label 1250 3300 0 50 ~ 0 966 | CSBIT1 967 | Text Label 1250 3400 0 50 ~ 0 968 | CSBIT2 969 | Text Label 1250 3500 0 50 ~ 0 970 | CSBIT3 971 | Wire Wire Line 972 | 1250 3500 1800 3500 973 | Wire Wire Line 974 | 1250 3200 1800 3200 975 | Wire Wire Line 976 | 1800 3300 1250 3300 977 | Wire Wire Line 978 | 1250 3400 1800 3400 979 | Text Label 3900 2600 2 50 ~ 0 980 | ~CSEN 981 | Wire Wire Line 982 | 3400 2600 3900 2600 983 | Text Label 6750 6600 2 50 ~ 0 984 | ~CS0 985 | Text Label 6750 6700 2 50 ~ 0 986 | ~CS1 987 | Text Label 6750 6800 2 50 ~ 0 988 | ~CS2 989 | Text Label 6750 6900 2 50 ~ 0 990 | ~CS3 991 | Text Label 6750 7000 2 50 ~ 0 992 | ~CS4 993 | Text Label 6750 7100 2 50 ~ 0 994 | ~CS5 995 | Text Label 6750 7200 2 50 ~ 0 996 | ~CS6 997 | Text Label 6750 7400 2 50 ~ 0 998 | ~CS8 999 | Text Label 6750 7500 2 50 ~ 0 1000 | ~CS9 1001 | Text Label 6750 7600 2 50 ~ 0 1002 | ~CS10 1003 | Text Label 6750 7700 2 50 ~ 0 1004 | ~CS11 1005 | Text Label 6750 7800 2 50 ~ 0 1006 | ~CS12 1007 | Text Label 6750 7900 2 50 ~ 0 1008 | ~CS13 1009 | Text Label 6750 8000 2 50 ~ 0 1010 | ~CS14 1011 | Text Label 6750 8100 2 50 ~ 0 1012 | ~CS15 1013 | Wire Wire Line 1014 | 6750 8100 6550 8100 1015 | Wire Wire Line 1016 | 6550 8000 6750 8000 1017 | Wire Wire Line 1018 | 6550 7800 6750 7800 1019 | Wire Wire Line 1020 | 6750 7700 6550 7700 1021 | Wire Wire Line 1022 | 6550 7600 6750 7600 1023 | Wire Wire Line 1024 | 6750 7500 6550 7500 1025 | Wire Wire Line 1026 | 6550 7400 6750 7400 1027 | Wire Wire Line 1028 | 6750 7300 6550 7300 1029 | Wire Wire Line 1030 | 6550 7200 6750 7200 1031 | Wire Wire Line 1032 | 6750 7100 6550 7100 1033 | Wire Wire Line 1034 | 6550 7000 6750 7000 1035 | Wire Wire Line 1036 | 6750 6900 6550 6900 1037 | Wire Wire Line 1038 | 6550 6800 6750 6800 1039 | Wire Wire Line 1040 | 6750 6700 6550 6700 1041 | Wire Wire Line 1042 | 6550 6600 6750 6600 1043 | Wire Wire Line 1044 | 13250 2750 13550 2750 1045 | Wire Wire Line 1046 | 13250 2150 13550 2150 1047 | $Sheet 1048 | S 8650 6500 700 400 1049 | U 5E08F0E6 1050 | F0 "CHIP0" 50 1051 | F1 "25.sch" 50 1052 | F2 "~CS" I L 8650 6600 50 1053 | F3 "SCLK" I R 9350 6700 50 1054 | F4 "MOSI" I R 9350 6600 50 1055 | F5 "MISO" I R 9350 6800 50 1056 | F6 "GND" I L 8650 6800 50 1057 | F7 "VCC" I L 8650 6700 50 1058 | $EndSheet 1059 | Text Label 8400 6600 0 50 ~ 0 1060 | ~CS0 1061 | Text Label 6750 7300 2 50 ~ 0 1062 | ~CS7 1063 | $Comp 1064 | L Connector:TestPoint TP1 1065 | U 1 1 5D6EF39F 1066 | P 14450 2150 1067 | F 0 "TP1" V 14404 2338 50 0000 L CNN 1068 | F 1 "STAT" V 14495 2338 50 0000 L CNN 1069 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 14650 2150 50 0001 C CNN 1070 | F 3 "~" H 14650 2150 50 0001 C CNN 1071 | 1 14450 2150 1072 | -1 0 0 1 1073 | $EndComp 1074 | Wire Wire Line 1075 | 14450 2150 14350 2150 1076 | Wire Wire Line 1077 | 14650 1950 14550 1950 1078 | Wire Wire Line 1079 | 14650 1950 14650 2150 1080 | Connection ~ 14550 1950 1081 | $Comp 1082 | L Device:R R15 1083 | U 1 1 5E26AB2E 1084 | P 1900 7000 1085 | F 0 "R15" H 2050 7050 50 0000 C CNN 1086 | F 1 "DNP" H 2050 6950 50 0000 C CNN 1087 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 1830 7000 50 0001 C CNN 1088 | F 3 "~" H 1900 7000 50 0001 C CNN 1089 | 1 1900 7000 1090 | -1 0 0 1 1091 | $EndComp 1092 | Wire Wire Line 1093 | 2850 7200 2850 7150 1094 | $Comp 1095 | L Device:LED D4 1096 | U 1 1 5D829628 1097 | P 2850 7400 1098 | F 0 "D4" V 2889 7282 50 0000 R CNN 1099 | F 1 "USB" V 2798 7282 50 0000 R CNN 1100 | F 2 "LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 2850 7400 50 0001 C CNN 1101 | F 3 "~" H 2850 7400 50 0001 C CNN 1102 | 1 2850 7400 1103 | 0 -1 -1 0 1104 | $EndComp 1105 | $Comp 1106 | L Device:R R14 1107 | U 1 1 5E327EB0 1108 | P 2850 7000 1109 | F 0 "R14" H 3000 7050 50 0000 C CNN 1110 | F 1 "DNP" H 3000 6950 50 0000 C CNN 1111 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 2780 7000 50 0001 C CNN 1112 | F 3 "~" H 2850 7000 50 0001 C CNN 1113 | 1 2850 7000 1114 | -1 0 0 1 1115 | $EndComp 1116 | Wire Wire Line 1117 | 1900 6850 1900 6650 1118 | Wire Wire Line 1119 | 2200 6850 2200 6550 1120 | Wire Wire Line 1121 | 1550 6000 1550 6050 1122 | Connection ~ 1900 6650 1123 | Connection ~ 13500 1850 1124 | Wire Wire Line 1125 | 13500 1850 13550 1850 1126 | Wire Wire Line 1127 | 13500 1800 13500 1850 1128 | Wire Wire Line 1129 | 12300 1950 13300 1950 1130 | Wire Wire Line 1131 | 13300 1800 13300 1950 1132 | Connection ~ 13300 1950 1133 | Wire Wire Line 1134 | 13300 1950 13550 1950 1135 | $Comp 1136 | L Device:C C15 1137 | U 1 1 5E406D06 1138 | P 12700 2200 1139 | F 0 "C15" H 12815 2246 50 0000 L CNN 1140 | F 1 "100n" H 12815 2155 50 0000 L CNN 1141 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 12738 2050 50 0001 C CNN 1142 | F 3 "~" H 12700 2200 50 0001 C CNN 1143 | 1 12700 2200 1144 | 1 0 0 -1 1145 | $EndComp 1146 | $Comp 1147 | L Device:C C14 1148 | U 1 1 5E407CE1 1149 | P 12300 2200 1150 | F 0 "C14" H 12415 2246 50 0000 L CNN 1151 | F 1 "100n" H 12415 2155 50 0000 L CNN 1152 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" H 12338 2050 50 0001 C CNN 1153 | F 3 "~" H 12300 2200 50 0001 C CNN 1154 | 1 12300 2200 1155 | 1 0 0 -1 1156 | $EndComp 1157 | Connection ~ 12300 1950 1158 | Wire Wire Line 1159 | 12300 2050 12300 1950 1160 | Wire Wire Line 1161 | 12700 1850 12700 2050 1162 | Connection ~ 12700 1850 1163 | Wire Wire Line 1164 | 12700 1850 13500 1850 1165 | Wire Wire Line 1166 | 12700 1750 12700 1850 1167 | Wire Wire Line 1168 | 12700 2350 12700 2750 1169 | Wire Wire Line 1170 | 12700 2750 13250 2750 1171 | Connection ~ 13250 2750 1172 | Wire Wire Line 1173 | 12300 2350 12300 2750 1174 | Wire Wire Line 1175 | 12300 2750 12700 2750 1176 | Connection ~ 12700 2750 1177 | Wire Wire Line 1178 | 1550 5650 1550 5700 1179 | Wire Wire Line 1180 | 2550 7200 2550 7150 1181 | Wire Wire Line 1182 | 2850 7200 2550 7200 1183 | Wire Wire Line 1184 | 2550 6850 2550 6650 1185 | Wire Wire Line 1186 | 2550 6650 1900 6650 1187 | Wire Wire Line 1188 | 2850 6850 2850 6550 1189 | Connection ~ 2850 7200 1190 | Wire Wire Line 1191 | 2200 7200 1900 7200 1192 | Wire Wire Line 1193 | 2200 7200 2200 7150 1194 | Connection ~ 1900 7200 1195 | Wire Wire Line 1196 | 1900 7200 1900 7150 1197 | Text Label 8400 6700 0 50 ~ 0 1198 | CVCC 1199 | Text Label 8400 6800 0 50 ~ 0 1200 | CGND 1201 | Wire Wire Line 1202 | 8400 6700 8650 6700 1203 | Wire Wire Line 1204 | 8400 6600 8650 6600 1205 | Wire Wire Line 1206 | 8650 6800 8400 6800 1207 | Text Label 9750 6600 2 50 ~ 0 1208 | SPI_MOSI 1209 | Text Label 9750 6700 2 50 ~ 0 1210 | SPI_SCLK 1211 | Text Label 9750 6800 2 50 ~ 0 1212 | SPI_MISO 1213 | Wire Wire Line 1214 | 9750 6800 9350 6800 1215 | Wire Wire Line 1216 | 9350 6700 9750 6700 1217 | Wire Wire Line 1218 | 9750 6600 9350 6600 1219 | Text Label 10000 10450 1 50 ~ 0 1220 | CVCC 1221 | $Comp 1222 | L power:+3.3V #PWR023 1223 | U 1 1 5E66E5FF 1224 | P 9700 10700 1225 | F 0 "#PWR023" H 9700 10550 50 0001 C CNN 1226 | F 1 "+3.3V" H 9715 10873 50 0000 C CNN 1227 | F 2 "" H 9700 10700 50 0001 C CNN 1228 | F 3 "" H 9700 10700 50 0001 C CNN 1229 | 1 9700 10700 1230 | 1 0 0 -1 1231 | $EndComp 1232 | $Comp 1233 | L power:GND #PWR024 1234 | U 1 1 5E67C28E 1235 | P 10000 10800 1236 | F 0 "#PWR024" H 10000 10550 50 0001 C CNN 1237 | F 1 "GND" H 10005 10627 50 0000 C CNN 1238 | F 2 "" H 10000 10800 50 0001 C CNN 1239 | F 3 "" H 10000 10800 50 0001 C CNN 1240 | 1 10000 10800 1241 | 1 0 0 -1 1242 | $EndComp 1243 | $Sheet 1244 | S 10250 6500 700 400 1245 | U 5E6B2F93 1246 | F0 "CHIP1" 50 1247 | F1 "25.sch" 50 1248 | F2 "~CS" I L 10250 6600 50 1249 | F3 "SCLK" I R 10950 6700 50 1250 | F4 "MOSI" I R 10950 6600 50 1251 | F5 "MISO" I R 10950 6800 50 1252 | F6 "GND" I L 10250 6800 50 1253 | F7 "VCC" I L 10250 6700 50 1254 | $EndSheet 1255 | Text Label 10000 6600 0 50 ~ 0 1256 | ~CS1 1257 | Text Label 10000 6700 0 50 ~ 0 1258 | CVCC 1259 | Text Label 10000 6800 0 50 ~ 0 1260 | CGND 1261 | Wire Wire Line 1262 | 10000 6700 10250 6700 1263 | Wire Wire Line 1264 | 10000 6600 10250 6600 1265 | Wire Wire Line 1266 | 10250 6800 10000 6800 1267 | Text Label 11350 6600 2 50 ~ 0 1268 | SPI_MOSI 1269 | Text Label 11350 6700 2 50 ~ 0 1270 | SPI_SCLK 1271 | Text Label 11350 6800 2 50 ~ 0 1272 | SPI_MISO 1273 | Wire Wire Line 1274 | 11350 6800 10950 6800 1275 | Wire Wire Line 1276 | 10950 6700 11350 6700 1277 | Wire Wire Line 1278 | 11350 6600 10950 6600 1279 | $Sheet 1280 | S 8650 7200 700 400 1281 | U 5E6CD70C 1282 | F0 "CHIP2" 50 1283 | F1 "25.sch" 50 1284 | F2 "~CS" I L 8650 7300 50 1285 | F3 "SCLK" I R 9350 7400 50 1286 | F4 "MOSI" I R 9350 7300 50 1287 | F5 "MISO" I R 9350 7500 50 1288 | F6 "GND" I L 8650 7500 50 1289 | F7 "VCC" I L 8650 7400 50 1290 | $EndSheet 1291 | Text Label 8400 7300 0 50 ~ 0 1292 | ~CS2 1293 | Text Label 8400 7400 0 50 ~ 0 1294 | CVCC 1295 | Text Label 8400 7500 0 50 ~ 0 1296 | CGND 1297 | Wire Wire Line 1298 | 8400 7400 8650 7400 1299 | Wire Wire Line 1300 | 8400 7300 8650 7300 1301 | Wire Wire Line 1302 | 8650 7500 8400 7500 1303 | Text Label 9750 7300 2 50 ~ 0 1304 | SPI_MOSI 1305 | Text Label 9750 7400 2 50 ~ 0 1306 | SPI_SCLK 1307 | Text Label 9750 7500 2 50 ~ 0 1308 | SPI_MISO 1309 | Wire Wire Line 1310 | 9750 7500 9350 7500 1311 | Wire Wire Line 1312 | 9350 7400 9750 7400 1313 | Wire Wire Line 1314 | 9750 7300 9350 7300 1315 | $Sheet 1316 | S 10250 7200 700 400 1317 | U 5E6DA750 1318 | F0 "CHIP3" 50 1319 | F1 "25.sch" 50 1320 | F2 "~CS" I L 10250 7300 50 1321 | F3 "SCLK" I R 10950 7400 50 1322 | F4 "MOSI" I R 10950 7300 50 1323 | F5 "MISO" I R 10950 7500 50 1324 | F6 "GND" I L 10250 7500 50 1325 | F7 "VCC" I L 10250 7400 50 1326 | $EndSheet 1327 | Text Label 10000 7300 0 50 ~ 0 1328 | ~CS3 1329 | Text Label 10000 7400 0 50 ~ 0 1330 | CVCC 1331 | Text Label 10000 7500 0 50 ~ 0 1332 | CGND 1333 | Wire Wire Line 1334 | 10000 7400 10250 7400 1335 | Wire Wire Line 1336 | 10000 7300 10250 7300 1337 | Wire Wire Line 1338 | 10250 7500 10000 7500 1339 | Text Label 11350 7300 2 50 ~ 0 1340 | SPI_MOSI 1341 | Text Label 11350 7400 2 50 ~ 0 1342 | SPI_SCLK 1343 | Text Label 11350 7500 2 50 ~ 0 1344 | SPI_MISO 1345 | Wire Wire Line 1346 | 11350 7500 10950 7500 1347 | Wire Wire Line 1348 | 10950 7400 11350 7400 1349 | Wire Wire Line 1350 | 11350 7300 10950 7300 1351 | $Sheet 1352 | S 8650 7850 700 400 1353 | U 5E6E82DE 1354 | F0 "CHIP4" 50 1355 | F1 "25.sch" 50 1356 | F2 "~CS" I L 8650 7950 50 1357 | F3 "SCLK" I R 9350 8050 50 1358 | F4 "MOSI" I R 9350 7950 50 1359 | F5 "MISO" I R 9350 8150 50 1360 | F6 "GND" I L 8650 8150 50 1361 | F7 "VCC" I L 8650 8050 50 1362 | $EndSheet 1363 | Text Label 8400 7950 0 50 ~ 0 1364 | ~CS4 1365 | Text Label 8400 8050 0 50 ~ 0 1366 | CVCC 1367 | Text Label 8400 8150 0 50 ~ 0 1368 | CGND 1369 | Wire Wire Line 1370 | 8400 8050 8650 8050 1371 | Wire Wire Line 1372 | 8400 7950 8650 7950 1373 | Wire Wire Line 1374 | 8650 8150 8400 8150 1375 | Text Label 9750 7950 2 50 ~ 0 1376 | SPI_MOSI 1377 | Text Label 9750 8050 2 50 ~ 0 1378 | SPI_SCLK 1379 | Text Label 9750 8150 2 50 ~ 0 1380 | SPI_MISO 1381 | Wire Wire Line 1382 | 9750 8150 9350 8150 1383 | Wire Wire Line 1384 | 9350 8050 9750 8050 1385 | Wire Wire Line 1386 | 9750 7950 9350 7950 1387 | $Sheet 1388 | S 10250 7850 700 400 1389 | U 5E6F68FB 1390 | F0 "CHIP5" 50 1391 | F1 "25.sch" 50 1392 | F2 "~CS" I L 10250 7950 50 1393 | F3 "SCLK" I R 10950 8050 50 1394 | F4 "MOSI" I R 10950 7950 50 1395 | F5 "MISO" I R 10950 8150 50 1396 | F6 "GND" I L 10250 8150 50 1397 | F7 "VCC" I L 10250 8050 50 1398 | $EndSheet 1399 | Text Label 10000 7950 0 50 ~ 0 1400 | ~CS5 1401 | Text Label 10000 8050 0 50 ~ 0 1402 | CVCC 1403 | Text Label 10000 8150 0 50 ~ 0 1404 | CGND 1405 | Wire Wire Line 1406 | 10000 8050 10250 8050 1407 | Wire Wire Line 1408 | 10000 7950 10250 7950 1409 | Wire Wire Line 1410 | 10250 8150 10000 8150 1411 | Text Label 11350 7950 2 50 ~ 0 1412 | SPI_MOSI 1413 | Text Label 11350 8050 2 50 ~ 0 1414 | SPI_SCLK 1415 | Text Label 11350 8150 2 50 ~ 0 1416 | SPI_MISO 1417 | Wire Wire Line 1418 | 11350 8150 10950 8150 1419 | Wire Wire Line 1420 | 10950 8050 11350 8050 1421 | Wire Wire Line 1422 | 11350 7950 10950 7950 1423 | $Sheet 1424 | S 8650 8500 700 400 1425 | U 5E7061AD 1426 | F0 "CHIP6" 50 1427 | F1 "25.sch" 50 1428 | F2 "~CS" I L 8650 8600 50 1429 | F3 "SCLK" I R 9350 8700 50 1430 | F4 "MOSI" I R 9350 8600 50 1431 | F5 "MISO" I R 9350 8800 50 1432 | F6 "GND" I L 8650 8800 50 1433 | F7 "VCC" I L 8650 8700 50 1434 | $EndSheet 1435 | Text Label 8400 8600 0 50 ~ 0 1436 | ~CS6 1437 | Text Label 8400 8700 0 50 ~ 0 1438 | CVCC 1439 | Text Label 8400 8800 0 50 ~ 0 1440 | CGND 1441 | Wire Wire Line 1442 | 8400 8700 8650 8700 1443 | Wire Wire Line 1444 | 8400 8600 8650 8600 1445 | Wire Wire Line 1446 | 8650 8800 8400 8800 1447 | Text Label 9750 8600 2 50 ~ 0 1448 | SPI_MOSI 1449 | Text Label 9750 8700 2 50 ~ 0 1450 | SPI_SCLK 1451 | Text Label 9750 8800 2 50 ~ 0 1452 | SPI_MISO 1453 | Wire Wire Line 1454 | 9750 8800 9350 8800 1455 | Wire Wire Line 1456 | 9350 8700 9750 8700 1457 | Wire Wire Line 1458 | 9750 8600 9350 8600 1459 | $Sheet 1460 | S 10250 8500 700 400 1461 | U 5E71622F 1462 | F0 "CHIP7" 50 1463 | F1 "25.sch" 50 1464 | F2 "~CS" I L 10250 8600 50 1465 | F3 "SCLK" I R 10950 8700 50 1466 | F4 "MOSI" I R 10950 8600 50 1467 | F5 "MISO" I R 10950 8800 50 1468 | F6 "GND" I L 10250 8800 50 1469 | F7 "VCC" I L 10250 8700 50 1470 | $EndSheet 1471 | Text Label 10000 8600 0 50 ~ 0 1472 | ~CS7 1473 | Text Label 10000 8700 0 50 ~ 0 1474 | CVCC 1475 | Text Label 10000 8800 0 50 ~ 0 1476 | CGND 1477 | Wire Wire Line 1478 | 10000 8700 10250 8700 1479 | Wire Wire Line 1480 | 10000 8600 10250 8600 1481 | Wire Wire Line 1482 | 10250 8800 10000 8800 1483 | Text Label 11350 8600 2 50 ~ 0 1484 | SPI_MOSI 1485 | Text Label 11350 8700 2 50 ~ 0 1486 | SPI_SCLK 1487 | Text Label 11350 8800 2 50 ~ 0 1488 | SPI_MISO 1489 | Wire Wire Line 1490 | 11350 8800 10950 8800 1491 | Wire Wire Line 1492 | 10950 8700 11350 8700 1493 | Wire Wire Line 1494 | 11350 8600 10950 8600 1495 | $Comp 1496 | L Device:R R11 1497 | U 1 1 5E7DDB7C 1498 | P 9150 10500 1499 | F 0 "R11" H 9220 10546 50 0000 L CNN 1500 | F 1 "10k" H 9220 10455 50 0000 L CNN 1501 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 9080 10500 50 0001 C CNN 1502 | F 3 "~" H 9150 10500 50 0001 C CNN 1503 | 1 9150 10500 1504 | 1 0 0 -1 1505 | $EndComp 1506 | Wire Wire Line 1507 | 13250 2150 13250 2750 1508 | Text Label 8450 10300 0 50 ~ 0 1509 | CHIP_PWR 1510 | Wire Wire Line 1511 | 8450 10300 8950 10300 1512 | Text Label 10500 3450 2 50 ~ 0 1513 | CHIP_PWR 1514 | Wire Wire Line 1515 | 10500 3450 10100 3450 1516 | Text Label 3900 2700 2 50 ~ 0 1517 | CHIP_PWR 1518 | Wire Wire Line 1519 | 3900 2700 3400 2700 1520 | $Comp 1521 | L Connector:TestPoint TP8 1522 | U 1 1 5E9C36D8 1523 | P 8950 10400 1524 | F 0 "TP8" H 9008 10518 50 0000 L CNN 1525 | F 1 "CHIP_PWR" H 9008 10427 50 0000 L CNN 1526 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 9150 10400 50 0001 C CNN 1527 | F 3 "~" H 9150 10400 50 0001 C CNN 1528 | 1 8950 10400 1529 | -1 0 0 1 1530 | $EndComp 1531 | Wire Wire Line 1532 | 8950 10300 8950 10400 1533 | $Comp 1534 | L Transistor_FET:BSS84 Q2 1535 | U 1 1 5E9ED263 1536 | P 9450 10300 1537 | F 0 "Q2" H 9656 10346 50 0000 L CNN 1538 | F 1 "BSS84" H 9656 10255 50 0000 L CNN 1539 | F 2 "Package_TO_SOT_SMD:SOT-23" H 9650 10225 50 0001 L CIN 1540 | F 3 "http://assets.nexperia.com/documents/data-sheet/BSS84.pdf" H 9450 10300 50 0001 L CNN 1541 | 1 9450 10300 1542 | 1 0 0 -1 1543 | $EndComp 1544 | $Comp 1545 | L Transistor_FET:BSS84 Q1 1546 | U 1 1 5E9F28FA 1547 | P 2250 6050 1548 | F 0 "Q1" H 2456 6096 50 0000 L CNN 1549 | F 1 "BSS84" H 2456 6005 50 0000 L CNN 1550 | F 2 "Package_TO_SOT_SMD:SOT-23" H 2450 5975 50 0001 L CIN 1551 | F 3 "http://assets.nexperia.com/documents/data-sheet/BSS84.pdf" H 2250 6050 50 0001 L CNN 1552 | 1 2250 6050 1553 | 1 0 0 -1 1554 | $EndComp 1555 | Wire Wire Line 1556 | 10000 10550 10000 10800 1557 | Text Label 10000 10550 3 50 ~ 0 1558 | CGND 1559 | Wire Wire Line 1560 | 9150 10350 9150 10300 1561 | Wire Wire Line 1562 | 9150 10300 9250 10300 1563 | Wire Wire Line 1564 | 9150 10650 9150 10700 1565 | Wire Wire Line 1566 | 9150 10700 9550 10700 1567 | Wire Wire Line 1568 | 9550 10700 9550 10500 1569 | Wire Wire Line 1570 | 8950 10300 9150 10300 1571 | Connection ~ 8950 10300 1572 | Connection ~ 9150 10300 1573 | Text Notes 8350 9800 0 50 ~ 0 1574 | High-Side switch so we don't have to turn off the\nentire ground plane on the back. 1575 | $Comp 1576 | L Connector:TestPoint TP9 1577 | U 1 1 5EAEE5B5 1578 | P 10050 10000 1579 | F 0 "TP9" H 10108 10118 50 0000 L CNN 1580 | F 1 "CVCC" H 10108 10027 50 0000 L CNN 1581 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 10250 10000 50 0001 C CNN 1582 | F 3 "~" H 10250 10000 50 0001 C CNN 1583 | 1 10050 10000 1584 | 0 1 1 0 1585 | $EndComp 1586 | Wire Wire Line 1587 | 9550 10000 9550 10100 1588 | Wire Wire Line 1589 | 10000 10000 10000 10450 1590 | Wire Wire Line 1591 | 9550 10000 10000 10000 1592 | Wire Wire Line 1593 | 10050 10000 10000 10000 1594 | Connection ~ 10000 10000 1595 | Wire Wire Line 1596 | 9700 10700 9550 10700 1597 | Connection ~ 9550 10700 1598 | Wire Wire Line 1599 | 1900 7250 1900 7200 1600 | Wire Wire Line 1601 | 2850 7250 2850 7200 1602 | Wire Wire Line 1603 | 950 6050 1550 6050 1604 | Wire Wire Line 1605 | 1900 7550 1900 7650 1606 | Wire Wire Line 1607 | 2850 7650 2850 7550 1608 | $Comp 1609 | L power:GND #PWR020 1610 | U 1 1 5ED2AD16 1611 | P 2850 7750 1612 | F 0 "#PWR020" H 2850 7500 50 0001 C CNN 1613 | F 1 "GND" H 2855 7577 50 0000 C CNN 1614 | F 2 "" H 2850 7750 50 0001 C CNN 1615 | F 3 "" H 2850 7750 50 0001 C CNN 1616 | 1 2850 7750 1617 | 1 0 0 -1 1618 | $EndComp 1619 | Wire Wire Line 1620 | 1900 7650 2850 7650 1621 | Wire Wire Line 1622 | 2850 7750 2850 7650 1623 | Connection ~ 2850 7650 1624 | Wire Wire Line 1625 | 2200 6550 2850 6550 1626 | Connection ~ 2850 6550 1627 | Wire Wire Line 1628 | 2050 6050 1900 6050 1629 | Connection ~ 1550 6050 1630 | Connection ~ 1550 5650 1631 | Wire Wire Line 1632 | 2350 5850 2850 5850 1633 | Wire Wire Line 1634 | 2350 6250 2000 6250 1635 | Wire Wire Line 1636 | 2000 6250 2000 5650 1637 | Wire Wire Line 1638 | 1550 5650 2000 5650 1639 | Wire Wire Line 1640 | 2850 5850 2850 6550 1641 | Wire Wire Line 1642 | 1900 6050 1900 6650 1643 | Connection ~ 1900 6050 1644 | Wire Wire Line 1645 | 1900 6050 1550 6050 1646 | Wire Wire Line 1647 | 14800 8600 14400 8600 1648 | Wire Wire Line 1649 | 14400 8700 14800 8700 1650 | Wire Wire Line 1651 | 14800 8800 14400 8800 1652 | Text Label 14800 8800 2 50 ~ 0 1653 | SPI_MISO 1654 | Text Label 14800 8700 2 50 ~ 0 1655 | SPI_SCLK 1656 | Text Label 14800 8600 2 50 ~ 0 1657 | SPI_MOSI 1658 | Wire Wire Line 1659 | 13700 8800 13450 8800 1660 | Wire Wire Line 1661 | 13450 8600 13700 8600 1662 | Wire Wire Line 1663 | 13450 8700 13700 8700 1664 | Text Label 13450 8800 0 50 ~ 0 1665 | CGND 1666 | Text Label 13450 8700 0 50 ~ 0 1667 | CVCC 1668 | Text Label 13450 8600 0 50 ~ 0 1669 | ~CS15 1670 | $Sheet 1671 | S 13700 8500 700 400 1672 | U 5D73BD8B 1673 | F0 "CHIP15" 50 1674 | F1 "25.sch" 50 1675 | F2 "~CS" I L 13700 8600 50 1676 | F3 "SCLK" I R 14400 8700 50 1677 | F4 "MOSI" I R 14400 8600 50 1678 | F5 "MISO" I R 14400 8800 50 1679 | F6 "GND" I L 13700 8800 50 1680 | F7 "VCC" I L 13700 8700 50 1681 | $EndSheet 1682 | Wire Wire Line 1683 | 13200 8600 12800 8600 1684 | Wire Wire Line 1685 | 12800 8700 13200 8700 1686 | Wire Wire Line 1687 | 13200 8800 12800 8800 1688 | Text Label 13200 8800 2 50 ~ 0 1689 | SPI_MISO 1690 | Text Label 13200 8700 2 50 ~ 0 1691 | SPI_SCLK 1692 | Text Label 13200 8600 2 50 ~ 0 1693 | SPI_MOSI 1694 | Wire Wire Line 1695 | 12100 8800 11850 8800 1696 | Wire Wire Line 1697 | 11850 8600 12100 8600 1698 | Wire Wire Line 1699 | 11850 8700 12100 8700 1700 | Text Label 11850 8800 0 50 ~ 0 1701 | CGND 1702 | Text Label 11850 8700 0 50 ~ 0 1703 | CVCC 1704 | Text Label 11850 8600 0 50 ~ 0 1705 | ~CS14 1706 | $Sheet 1707 | S 12100 8500 700 400 1708 | U 5D73BD77 1709 | F0 "CHIP14" 50 1710 | F1 "25.sch" 50 1711 | F2 "~CS" I L 12100 8600 50 1712 | F3 "SCLK" I R 12800 8700 50 1713 | F4 "MOSI" I R 12800 8600 50 1714 | F5 "MISO" I R 12800 8800 50 1715 | F6 "GND" I L 12100 8800 50 1716 | F7 "VCC" I L 12100 8700 50 1717 | $EndSheet 1718 | Wire Wire Line 1719 | 14800 7950 14400 7950 1720 | Wire Wire Line 1721 | 14400 8050 14800 8050 1722 | Wire Wire Line 1723 | 14800 8150 14400 8150 1724 | Text Label 14800 8150 2 50 ~ 0 1725 | SPI_MISO 1726 | Text Label 14800 8050 2 50 ~ 0 1727 | SPI_SCLK 1728 | Text Label 14800 7950 2 50 ~ 0 1729 | SPI_MOSI 1730 | Wire Wire Line 1731 | 13700 8150 13450 8150 1732 | Wire Wire Line 1733 | 13450 7950 13700 7950 1734 | Wire Wire Line 1735 | 13450 8050 13700 8050 1736 | Text Label 13450 8150 0 50 ~ 0 1737 | CGND 1738 | Text Label 13450 8050 0 50 ~ 0 1739 | CVCC 1740 | Text Label 13450 7950 0 50 ~ 0 1741 | ~CS13 1742 | $Sheet 1743 | S 13700 7850 700 400 1744 | U 5D73BD63 1745 | F0 "CHIP13" 50 1746 | F1 "25.sch" 50 1747 | F2 "~CS" I L 13700 7950 50 1748 | F3 "SCLK" I R 14400 8050 50 1749 | F4 "MOSI" I R 14400 7950 50 1750 | F5 "MISO" I R 14400 8150 50 1751 | F6 "GND" I L 13700 8150 50 1752 | F7 "VCC" I L 13700 8050 50 1753 | $EndSheet 1754 | Wire Wire Line 1755 | 13200 7950 12800 7950 1756 | Wire Wire Line 1757 | 12800 8050 13200 8050 1758 | Wire Wire Line 1759 | 13200 8150 12800 8150 1760 | Text Label 13200 8150 2 50 ~ 0 1761 | SPI_MISO 1762 | Text Label 13200 8050 2 50 ~ 0 1763 | SPI_SCLK 1764 | Text Label 13200 7950 2 50 ~ 0 1765 | SPI_MOSI 1766 | Wire Wire Line 1767 | 12100 8150 11850 8150 1768 | Wire Wire Line 1769 | 11850 7950 12100 7950 1770 | Wire Wire Line 1771 | 11850 8050 12100 8050 1772 | Text Label 11850 8150 0 50 ~ 0 1773 | CGND 1774 | Text Label 11850 8050 0 50 ~ 0 1775 | CVCC 1776 | Text Label 11850 7950 0 50 ~ 0 1777 | ~CS12 1778 | $Sheet 1779 | S 12100 7850 700 400 1780 | U 5D73BD4F 1781 | F0 "CHIP12" 50 1782 | F1 "25.sch" 50 1783 | F2 "~CS" I L 12100 7950 50 1784 | F3 "SCLK" I R 12800 8050 50 1785 | F4 "MOSI" I R 12800 7950 50 1786 | F5 "MISO" I R 12800 8150 50 1787 | F6 "GND" I L 12100 8150 50 1788 | F7 "VCC" I L 12100 8050 50 1789 | $EndSheet 1790 | Wire Wire Line 1791 | 14800 7300 14400 7300 1792 | Wire Wire Line 1793 | 14400 7400 14800 7400 1794 | Wire Wire Line 1795 | 14800 7500 14400 7500 1796 | Text Label 14800 7500 2 50 ~ 0 1797 | SPI_MISO 1798 | Text Label 14800 7400 2 50 ~ 0 1799 | SPI_SCLK 1800 | Text Label 14800 7300 2 50 ~ 0 1801 | SPI_MOSI 1802 | Wire Wire Line 1803 | 13700 7500 13450 7500 1804 | Wire Wire Line 1805 | 13450 7300 13700 7300 1806 | Wire Wire Line 1807 | 13450 7400 13700 7400 1808 | Text Label 13450 7500 0 50 ~ 0 1809 | CGND 1810 | Text Label 13450 7400 0 50 ~ 0 1811 | CVCC 1812 | Text Label 13450 7300 0 50 ~ 0 1813 | ~CS11 1814 | $Sheet 1815 | S 13700 7200 700 400 1816 | U 5D73BD3B 1817 | F0 "CHIP11" 50 1818 | F1 "25.sch" 50 1819 | F2 "~CS" I L 13700 7300 50 1820 | F3 "SCLK" I R 14400 7400 50 1821 | F4 "MOSI" I R 14400 7300 50 1822 | F5 "MISO" I R 14400 7500 50 1823 | F6 "GND" I L 13700 7500 50 1824 | F7 "VCC" I L 13700 7400 50 1825 | $EndSheet 1826 | Wire Wire Line 1827 | 13200 7300 12800 7300 1828 | Wire Wire Line 1829 | 12800 7400 13200 7400 1830 | Wire Wire Line 1831 | 13200 7500 12800 7500 1832 | Text Label 13200 7500 2 50 ~ 0 1833 | SPI_MISO 1834 | Text Label 13200 7400 2 50 ~ 0 1835 | SPI_SCLK 1836 | Text Label 13200 7300 2 50 ~ 0 1837 | SPI_MOSI 1838 | Wire Wire Line 1839 | 12100 7500 11850 7500 1840 | Wire Wire Line 1841 | 11850 7300 12100 7300 1842 | Wire Wire Line 1843 | 11850 7400 12100 7400 1844 | Text Label 11850 7500 0 50 ~ 0 1845 | CGND 1846 | Text Label 11850 7400 0 50 ~ 0 1847 | CVCC 1848 | Text Label 11850 7300 0 50 ~ 0 1849 | ~CS10 1850 | $Sheet 1851 | S 12100 7200 700 400 1852 | U 5D73BD27 1853 | F0 "CHIP10" 50 1854 | F1 "25.sch" 50 1855 | F2 "~CS" I L 12100 7300 50 1856 | F3 "SCLK" I R 12800 7400 50 1857 | F4 "MOSI" I R 12800 7300 50 1858 | F5 "MISO" I R 12800 7500 50 1859 | F6 "GND" I L 12100 7500 50 1860 | F7 "VCC" I L 12100 7400 50 1861 | $EndSheet 1862 | Wire Wire Line 1863 | 14800 6600 14400 6600 1864 | Wire Wire Line 1865 | 14400 6700 14800 6700 1866 | Wire Wire Line 1867 | 14800 6800 14400 6800 1868 | Text Label 14800 6800 2 50 ~ 0 1869 | SPI_MISO 1870 | Text Label 14800 6700 2 50 ~ 0 1871 | SPI_SCLK 1872 | Text Label 14800 6600 2 50 ~ 0 1873 | SPI_MOSI 1874 | Wire Wire Line 1875 | 13700 6800 13450 6800 1876 | Wire Wire Line 1877 | 13450 6600 13700 6600 1878 | Wire Wire Line 1879 | 13450 6700 13700 6700 1880 | Text Label 13450 6800 0 50 ~ 0 1881 | CGND 1882 | Text Label 13450 6700 0 50 ~ 0 1883 | CVCC 1884 | Text Label 13450 6600 0 50 ~ 0 1885 | ~CS9 1886 | $Sheet 1887 | S 13700 6500 700 400 1888 | U 5D73BD13 1889 | F0 "CHIP9" 50 1890 | F1 "25.sch" 50 1891 | F2 "~CS" I L 13700 6600 50 1892 | F3 "SCLK" I R 14400 6700 50 1893 | F4 "MOSI" I R 14400 6600 50 1894 | F5 "MISO" I R 14400 6800 50 1895 | F6 "GND" I L 13700 6800 50 1896 | F7 "VCC" I L 13700 6700 50 1897 | $EndSheet 1898 | Wire Wire Line 1899 | 13200 6600 12800 6600 1900 | Wire Wire Line 1901 | 12800 6700 13200 6700 1902 | Wire Wire Line 1903 | 13200 6800 12800 6800 1904 | Text Label 13200 6800 2 50 ~ 0 1905 | SPI_MISO 1906 | Text Label 13200 6700 2 50 ~ 0 1907 | SPI_SCLK 1908 | Text Label 13200 6600 2 50 ~ 0 1909 | SPI_MOSI 1910 | Wire Wire Line 1911 | 12100 6800 11850 6800 1912 | Wire Wire Line 1913 | 11850 6600 12100 6600 1914 | Wire Wire Line 1915 | 11850 6700 12100 6700 1916 | Text Label 11850 6800 0 50 ~ 0 1917 | CGND 1918 | Text Label 11850 6700 0 50 ~ 0 1919 | CVCC 1920 | Text Label 11850 6600 0 50 ~ 0 1921 | ~CS8 1922 | $Sheet 1923 | S 12100 6500 700 400 1924 | U 5D73BCFF 1925 | F0 "CHIP8" 50 1926 | F1 "25.sch" 50 1927 | F2 "~CS" I L 12100 6600 50 1928 | F3 "SCLK" I R 12800 6700 50 1929 | F4 "MOSI" I R 12800 6600 50 1930 | F5 "MISO" I R 12800 6800 50 1931 | F6 "GND" I L 12100 6800 50 1932 | F7 "VCC" I L 12100 6700 50 1933 | $EndSheet 1934 | Wire Wire Line 1935 | 10900 4850 11400 4850 1936 | Text Label 11400 4850 2 50 ~ 0 1937 | SPI_MISO 1938 | Wire Wire Line 1939 | 10900 4550 11400 4550 1940 | Text Label 11400 4550 2 50 ~ 0 1941 | SPI_MOSI 1942 | Text Label 11400 4250 2 50 ~ 0 1943 | SPI_SCLK 1944 | Wire Wire Line 1945 | 11400 4250 10900 4250 1946 | $Comp 1947 | L Connector:TestPoint TP10 1948 | U 1 1 5D821ECE 1949 | P 10900 4250 1950 | F 0 "TP10" H 10958 4368 50 0000 L CNN 1951 | F 1 "SCLK" H 10958 4277 50 0000 L CNN 1952 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 11100 4250 50 0001 C CNN 1953 | F 3 "~" H 11100 4250 50 0001 C CNN 1954 | 1 10900 4250 1955 | 0 -1 -1 0 1956 | $EndComp 1957 | $Comp 1958 | L Connector:TestPoint TP11 1959 | U 1 1 5D862522 1960 | P 10900 4550 1961 | F 0 "TP11" H 10958 4668 50 0000 L CNN 1962 | F 1 "MOSI" H 10958 4577 50 0000 L CNN 1963 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 11100 4550 50 0001 C CNN 1964 | F 3 "~" H 11100 4550 50 0001 C CNN 1965 | 1 10900 4550 1966 | 0 -1 -1 0 1967 | $EndComp 1968 | $Comp 1969 | L Connector:TestPoint TP12 1970 | U 1 1 5D8BD5A1 1971 | P 10900 4850 1972 | F 0 "TP12" H 10958 4968 50 0000 L CNN 1973 | F 1 "MISO" H 10958 4877 50 0000 L CNN 1974 | F 2 "TestPoint:TestPoint_Pad_D1.5mm" H 11100 4850 50 0001 C CNN 1975 | F 3 "~" H 11100 4850 50 0001 C CNN 1976 | 1 10900 4850 1977 | 0 -1 -1 0 1978 | $EndComp 1979 | $Comp 1980 | L power:PWR_FLAG #FLG0102 1981 | U 1 1 5D87357A 1982 | P 10000 10000 1983 | F 0 "#FLG0102" H 10000 10075 50 0001 C CNN 1984 | F 1 "PWR_FLAG" H 10000 10173 50 0000 C CNN 1985 | F 2 "" H 10000 10000 50 0001 C CNN 1986 | F 3 "~" H 10000 10000 50 0001 C CNN 1987 | 1 10000 10000 1988 | 1 0 0 -1 1989 | $EndComp 1990 | $Comp 1991 | L power:PWR_FLAG #FLG0103 1992 | U 1 1 5D88DEE8 1993 | P 7100 7900 1994 | F 0 "#FLG0103" H 7100 7975 50 0001 C CNN 1995 | F 1 "PWR_FLAG" H 7100 8073 50 0000 C CNN 1996 | F 2 "" H 7100 7900 50 0001 C CNN 1997 | F 3 "~" H 7100 7900 50 0001 C CNN 1998 | 1 7100 7900 1999 | 1 0 0 -1 2000 | $EndComp 2001 | Wire Wire Line 2002 | 6550 7900 7100 7900 2003 | Text Notes 7150 7900 0 25 ~ 0 2004 | FIXME: CS13 is wrongly marked as\nan input to the decoder, so I placed\na power flag to keep DRC quiet. 2005 | Wire Wire Line 2006 | 4350 6600 5450 6600 2007 | $Comp 2008 | L Device:R R17 2009 | U 1 1 5DA89E23 2010 | P 5450 6300 2011 | F 0 "R17" H 5500 6350 50 0000 L CNN 2012 | F 1 "10k" H 5500 6250 50 0000 L CNN 2013 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 5380 6300 50 0001 C CNN 2014 | F 3 "~" H 5450 6300 50 0001 C CNN 2015 | 1 5450 6300 2016 | 1 0 0 -1 2017 | $EndComp 2018 | Wire Wire Line 2019 | 5450 6450 5450 6600 2020 | Connection ~ 5450 6600 2021 | Wire Wire Line 2022 | 5450 6150 5450 6000 2023 | Connection ~ 5450 6000 2024 | Wire Wire Line 2025 | 5450 6000 5700 6000 2026 | Wire Wire Line 2027 | 4350 6800 4950 6800 2028 | Wire Wire Line 2029 | 4350 6900 4700 6900 2030 | $Comp 2031 | L Device:R R16 2032 | U 1 1 5DADFCBE 2033 | P 5200 6300 2034 | F 0 "R16" H 5250 6350 50 0000 L CNN 2035 | F 1 "10k" H 5250 6250 50 0000 L CNN 2036 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 5130 6300 50 0001 C CNN 2037 | F 3 "~" H 5200 6300 50 0001 C CNN 2038 | 1 5200 6300 2039 | 1 0 0 -1 2040 | $EndComp 2041 | Wire Wire Line 2042 | 4350 6700 5200 6700 2043 | Wire Wire Line 2044 | 5200 6450 5200 6700 2045 | Connection ~ 5200 6700 2046 | Wire Wire Line 2047 | 5200 6700 5450 6700 2048 | Wire Wire Line 2049 | 5200 6150 5200 6000 2050 | Connection ~ 5200 6000 2051 | Wire Wire Line 2052 | 5200 6000 5450 6000 2053 | Text Label 4350 7450 0 50 ~ 0 2054 | ~CSEN 2055 | Wire Wire Line 2056 | 5175 7100 5450 7100 2057 | $Comp 2058 | L power:+3.3V #PWR025 2059 | U 1 1 5DBC7191 2060 | P 4875 7150 2061 | F 0 "#PWR025" H 4875 7000 50 0001 C CNN 2062 | F 1 "+3.3V" H 4875 7300 50 0000 C CNN 2063 | F 2 "" H 4875 7150 50 0001 C CNN 2064 | F 3 "" H 4875 7150 50 0001 C CNN 2065 | 1 4875 7150 2066 | 1 0 0 -1 2067 | $EndComp 2068 | $Comp 2069 | L Device:R R13 2070 | U 1 1 5DC03440 2071 | P 4950 6300 2072 | F 0 "R13" H 5000 6350 50 0000 L CNN 2073 | F 1 "10k" H 5000 6250 50 0000 L CNN 2074 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 4880 6300 50 0001 C CNN 2075 | F 3 "~" H 4950 6300 50 0001 C CNN 2076 | 1 4950 6300 2077 | 1 0 0 -1 2078 | $EndComp 2079 | $Comp 2080 | L Device:R R12 2081 | U 1 1 5DC204B4 2082 | P 4700 6300 2083 | F 0 "R12" H 4750 6350 50 0000 L CNN 2084 | F 1 "10k" H 4750 6250 50 0000 L CNN 2085 | F 2 "Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolder" V 4630 6300 50 0001 C CNN 2086 | F 3 "~" H 4700 6300 50 0001 C CNN 2087 | 1 4700 6300 2088 | 1 0 0 -1 2089 | $EndComp 2090 | Wire Wire Line 2091 | 4950 6450 4950 6800 2092 | Connection ~ 4950 6800 2093 | Wire Wire Line 2094 | 4950 6800 5450 6800 2095 | Wire Wire Line 2096 | 4950 6000 4950 6150 2097 | Wire Wire Line 2098 | 4950 6000 5200 6000 2099 | Wire Wire Line 2100 | 4950 6000 4700 6000 2101 | Wire Wire Line 2102 | 4700 6000 4700 6150 2103 | Connection ~ 4950 6000 2104 | Wire Wire Line 2105 | 4700 6450 4700 6900 2106 | Connection ~ 4700 6900 2107 | Wire Wire Line 2108 | 4700 6900 5450 6900 2109 | Wire Wire Line 2110 | 5175 7100 5175 7450 2111 | Wire Wire Line 2112 | 4875 7450 5175 7450 2113 | Wire Wire Line 2114 | 4350 7450 4875 7450 2115 | Connection ~ 4875 7450 2116 | $EndSCHEMATC 2117 | --------------------------------------------------------------------------------