This repository was archived by the owner on Oct 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 27
This repository was archived by the owner on Oct 18, 2022. It is now read-only.
Design and build a testing/development PCB #7
Copy link
Copy link
Open
Description
(this is currently being worked on on the (merged into master)dev-board
branch)
I no longer have a way to test this crate, so I want to build a development PCB with a bunch of SPI Flash and EEPROM chips on it that can also be used for hardware-in-the-loop testing. The PCB should have the following features:
- USB interface via a USB-to-SPI chip, to make development easy (no
#![no_std]
requirement since everything runs on a normal PC). - A Raspberry Pi header as an alternative interface, bypassing the USB chip (this makes it easy to set up a very compact CI bot that runs against real hardware).
- Contain Flash and EEPROM chips (if applicable) of all chip families we want to support, that is, 24, 25, and 45 (are there others we want to support?). If possible, from different vendors.
This sort of setup is perhaps a bit overkill for a crate like this, but it seems like a very good starting point regarding HIL-testing that I can hopefully later transfer to Rubble, which is way more complex to test.
Current progress and notes:
- Plugging in USB while the PCB is mounted on a Pi is potentially dangerous, it would be nice to make this safe. This means we need power supply switchover, and some sort of mux for switching the SPI mastering between Pi and the USB chip. The circuit should switch everything over to USB once it's connected. Connecting the grounds together should be safe, as long as an isolated power supply is used (isolation is required by regulations; and even the cheapest USB wall warts are isolated).
- USB interface chips:
- MCP2210
- not FTDI
- built-in bus release function for multi-master (meaning we might not need an analog mux)
- FT4222H
- supports dual/quad SPI (not really needed for now, but might be useful in the future)
- MCP2210
- Power selection circuit
Work left to do:
- Find a set of Flash and EEPROM chips to test
- 25-series Flash:
- Winbond W25X10CL / W25Q16JV / W25M121AV
- Adesto AT25PE20
- Pm25WD020 / 040 (can not be easily bought)
- 25-series EEPROM:
- 45-series (25-series compatible) Flash:
- Adesto AT45DB021E
- Numonix (ST->Micron) M45PE16 [obsolete]
- 95-series EEPROM:
- ST's M95040
- 25-series Flash:
- Finish the schematic
Reset lines should be software-controllableThe chips can't be reset (some only have a\HOLD
pin that just pauses transfers), need to switch off their power supply I guess.
- Decide on specific parts (mostly passives, etc.)
- Need to be obtainable from a supplier that sells to private persons
- Actually design the board
- Order
- Assemble
- Electric Bringup
- Test power switch
- Test chip selects
- Test bus release/ack mechanism
- Test/Fix polarity of Master LEDs
- Test chip power control
- Write a library for talking to the USB chip (should be straightforward; the docs are pretty good, and libusb-rs should work fine; needs to impl
embedded-hal
s SPI traits of course) - Configure the MCP so that using the Pi header is safe (by default, it is not)
- NVRAM GPn modes set to GPIO, default direction input
- Write a tool that uses either the USB chip library, or the Raspberry Pi's interface using
linux-embedded-hal
orrppal
Metadata
Metadata
Assignees
Labels
No labels