prakashlab / octopi-driver-board

Driver electronics for the Octopi and Squid microscope families.
https://squid-imaging.org/
Other
6 stars 5 forks source link

Fix implementation of SPI CS multiplexing system #22

Closed ethanjli closed 3 years ago

ethanjli commented 3 years ago

This PR modifies the PP-T41 and BP-Jmp boards, and the BT board template, for the Octopi Driver Stack. More information about these boards are available in the README.md files for these boards.

Modifications

Major breaking changes:

Additions:

Changes:

Fixes:

Release

PRs for Release

Previous PRs since the last release of each board:

Merging & Tagging

After this PR is merged, the PP-T41 board will be released with the ODSv1.0.0-PP-T41v0.1.1 tag; the BT board template will be released with the ODSv1.0.0-BTv0.1.1 tag; and the BP-Jmp board will be released with the ODSv1.0.0-BP-Jmpv0.2.0. All of these tags will be made on the develop branch. This PR will be used to keep track of previews and manufacturing files prior to a freeze on the tag. The PR will be merged once the prototype-stage manufacturing order (red PCBs) is placed. Afterwards, additional comments should be added to document any errata or testing results from assembled prototypes, or required changes for the next version can be recorded directly in Github Issues.

Archives

Attachments:

After final changes are made on this PR and it is approved for merging, I will add a comment attaching a zip archive of the build output from Github Actions for each variant of each of PP-T41, BT, and BP-Jmp.

Open-Source Records-Keeping

After final changes are made on this PR and it is approved for merging, I will answer the following questions as a new comment on this PR, for records-keeping:

  1. This project is licensed under Apache License v2.0 for any software, and Solderpad Hardware License v2.1 for any hardware - do you agree that your contributions to this project will be under these licenses, too? {CHOOSE YES OR NO}
  2. Were any of these contributions also part of work you did for an employer or a client? If so, do you have their permission to release it? {CHOOSE YES OR NO FOR THE FIRST QUESTION, AND CHOOSE YES, N/A, OR PROVIDE AN EXPLANATION TO THE SECOND QUESTION}
  3. Does this work include, or is it based on, any third-party work which you did not create? If so, what is it licensed under, and what modifications, if any, did you make to it? {CHOOSE YES OR NO, AND EXPLAIN. FOR EXAMPLE, A GOOD EXPLANATION FOR INCLUSION OF THIRD-PARTY PARTS WOULD BE: third-party documentation, CAD models, PCB footprints of parts have been included in the Parts directory. I have added appropriate notices for these files in the README.md files in the corresponding directories.}
ethanjli commented 3 years ago

I will merge this PR after reviewing proofreading its build exports and updating the Kicad preview renders and the stack ray tracing renders.

ethanjli commented 3 years ago

For records-keeping:

  1. This project is licensed under Apache License v2.0 for any software, and Solderpad Hardware License v2.1 for any hardware - do you agree that your contributions to this project will be under these licenses, too? Yes
  2. Were any of these contributions also part of work you did for an employer or a client? If so, do you have their permission to release it? No, N/A
  3. Does this work include, or is it based on, any third-party work which you did not create? If so, what is it licensed under, and what modifications, if any, did you make to it? Yes: third-party documentation and schematic symbols of parts have been included in the Parts directory. I have added appropriate notices for these files in the README.md files in the corresponding directories.
ethanjli commented 3 years ago

Here are the build outputs for the three variants of PP-T41:

Here are the build outputs for BT:

Here are the build outputs for the three variants of BP-Jmp:

ethanjli commented 3 years ago

I've submitted an order on PCBWay for turnkey assembly of BP-Jmpv0.2.0 and PP-T41v0.1.1-NoPufferfish, 5 boards each. I will update with the pricing for this order, but in the meantime I will merge this PR.

ethanjli commented 3 years ago

As reported in #24, PCBWay is going to use green soldermask rather than red soldermask for this order, due to insufficient distance between the pads of the Hirose FunctionMAX FX20 connectors.

ethanjli commented 3 years ago

PCBWay reports the following costs at a production size of 5 units:

ethanjli commented 3 years ago

I've received the boards. Here are test results:

Indicator LEDs

Teensy_Pins Test

T41_DSCS_Demux Test

In order to have a robust solution to this issue with the 74HC4067 16:1 analog switch which is directly related to this issue with the pull-up resistors and HIGH/LOW levels, we have a few options:

  1. We might be able to find pull-up resistors which just barely work with the HIGH & LOW threshold voltages. This doesn't feel robust. We'd probably want to find a different 4067 chip which gives lower leakage currents, or has whatever different specifications to be better for our purpose (see this discussion, which may or may not be directly relevant).
  2. We could find some way to use the 74HC4067 without using pull-up/pull-down resistors directly connected to its outputs. This would require some other component which can map pin inputs to outputs as H -> H, L -> L, and high-Z -> H while not drawing currents into the input pin. I'm not sure if such a component exists, as usually this would be done just by a pull-up resistor.
  3. We could find a different chip which isn't an analog switch. For example, for 4:16 decoders, the 74HC4514 basically does what we need except we'd need to invert all its outputs in order to have active-low outputs for CS pins, while the 74HC4515 provides the inverted outputs but end-of-life; and both IC types are only produced as DIP and SOIC packages. We may instead be able to use two 3:8 decoders (e.g. the 74HC138), possibly without even requiring more pins from the MAX7317. This may be the most promising approach.