Difference between revisions of "Orchard EVT1 to DVT1"
(→ECO4: Add isolation resistors on SPI to OLED=) |
(→ECO13: Adjust CL to production crystal) |
||
(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | =ECO1: Fix Microphone mirroring= | + | =ECOs done up to EVT1b= |
+ | ==ECO1: Fix Microphone mirroring== | ||
Microphone schematic symbol was mirrored. No BOM change, board layout change only. | Microphone schematic symbol was mirrored. No BOM change, board layout change only. | ||
− | =ECO2: Make battery easier and safer to solder= | + | ==ECO2: Make battery easier and safer to solder== |
Space battery terminals wider, increase pad size, and add solder mask openings around the battery tabs. This makes it less likely to short wires together during a botched soldering operation. | Space battery terminals wider, increase pad size, and add solder mask openings around the battery tabs. This makes it less likely to short wires together during a botched soldering operation. | ||
− | =ECO3: Fix gas gauge topology= | + | ==ECO3: Fix gas gauge topology== |
Gas gauge goes between the charger and battery, not between the charger and the system. Oops! | Gas gauge goes between the charger and battery, not between the charger and the system. Oops! | ||
− | =ECO4: Add isolation resistors on SPI to OLED= | + | ==ECO4: Add isolation resistors on SPI to OLED== |
For independent I2C operation of the OLED and complete dedication of the SPI bus to BLE, isolation resistors are needed on SPI1_SCK and SPI1_MOSI to the OLED display. | For independent I2C operation of the OLED and complete dedication of the SPI bus to BLE, isolation resistors are needed on SPI1_SCK and SPI1_MOSI to the OLED display. | ||
Line 26: | Line 27: | ||
|} | |} | ||
− | =ECO5: Add USB adapter presence logic= | + | ==ECO5: Add USB adapter presence logic== |
There is no reliable way to detect the presence of a USB power source due to the VUSB boost mode supply of the BQ24260 (observing VUSB isn't helpful because BQ24260 supplies it when the USB power is disconnected). | There is no reliable way to detect the presence of a USB power source due to the VUSB boost mode supply of the BQ24260 (observing VUSB isn't helpful because BQ24260 supplies it when the USB power is disconnected). | ||
− | Add a 10k ohm pull-up resistor to USB_P and a 100k pull-down resistor to USB_N. Wire USBD_P via | + | Add provisions for a 10k ohm pull-up resistor to USB_P and a 100k pull-down resistor to USB_N. Wire USBD_P and USBD_N via 0-ohm jumpers to spare ADC inputs on the Kinetis-W. |
− | Expected behavior: | + | Expected behavior when using pull-ups and pull-downs: |
*When no USB host is attached, USB_P goes to 3.0V | *When no USB host is attached, USB_P goes to 3.0V | ||
*When a USB host is attached, USB_P is pulled down to somewhere around 2.2V | *When a USB host is attached, USB_P is pulled down to somewhere around 2.2V | ||
*When a USB dedicated charger is atached, USB_P is pulled down to around 2.8V | *When a USB dedicated charger is atached, USB_P is pulled down to around 2.8V | ||
− | *The only failure case is if the charging source | + | *The only failure case is if the charging source does nothing with the D+/D- lines, but that is out of spec. |
− | A software loop will need to sample | + | A software loop will need to sample USB_P and USB_N pins and toggle between boost and charge mode. |
+ | |||
+ | Initially, however, the pull-ups and pull-downs are not installed. The preferred embodiment is to use the internal pullup/pulldown networks on the GPIOs on the Kinetis-W to apply test currents to the D+/D- pins when detection needs to be run. This allows the native D+/D- detection from the charger IC to run without interference of static pullup/downs. The hard-wired resistors are kept in place just in case the tolerance of the internal Kinetis-W resistors are too large and/or the algorithm to do port detection turns out to be too difficult to implement. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | added || R29B 10k, 1% (DNP) || pull-up on USB_P | ||
+ | |- | ||
+ | | added || R31B 100k, 1% (DNP) || pull-down on USB_N | ||
+ | |- | ||
+ | | added || R17M 0 ohm || allow spare ADC input (ADC0_SE12) on Kinetis-W to sample USB_P | ||
+ | |- | ||
+ | | added || R16M 0 ohm || allow spare ADC input (ADC0_SE9) on Kinetis-W to sample USB_N | ||
+ | |} | ||
+ | |||
+ | ==ECO6: Improve boost ripple performance== | ||
+ | Add another 10uF cap on VUSB to improve ripple performance during boost mode. | ||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | added || C28B 10uF, 10V X5R || | ||
+ | |} | ||
+ | |||
+ | ==ECO7: Fix DAC0 availability== | ||
+ | For unspecified reasons, the documentation claims in 4.3.2.3 that PTE30 is the preferred pin for controlling RF reset. However, this is also the ''only'' pin to which DAC0 is available. Seems like a waste to not make DAC0 available. | ||
+ | |||
+ | We're assuming this is just a brainfart on the reference firmware developer, and if we make our own stack we should be able to pick any pin we want. So, move RF_RESET to a more generic pin, but allow DAC0 to be wired over via 0-ohm jumper option in case there is an actual reason this pin is needed to be RF_RESET. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | added || R14M 0 ohm || | ||
+ | |- | ||
+ | | added || R15M 0 ohm (DNP) || unpopulated option to bring PTE30 to RESET | ||
+ | |} | ||
+ | |||
+ | ==ECO8: Add low-speed USB option== | ||
+ | Since we've wired USB D+/D- pins to the microcontroller, might as well add the pull-up resistor that allows detection of the microcontroller as a low speed device, in case someone wants to use the port to write a bit-bang USB implementation. "It's just one resistor, anyways." | ||
+ | |||
+ | ...and while we're at it, adding a possible pull-down slot on D+. Mostly for symmetry purposes, but also I suppose it could allow the microcontroller to act as a host in a pinch. | ||
+ | |||
+ | Note: The Voh(min) spec for USB low speed is 2.8V with a 15k pull-down load. VDD for the MCU is 3.0V +/-2%, so we're pretty marginal on meeting that spec. It'll probably work, but this should be considered a hack and not something you want to use in mission-critical situations. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | added || R30B 1.5k 1% (DNP) || | ||
+ | |- | ||
+ | | added || R32B DNP || just in case | ||
+ | |} | ||
+ | |||
+ | ==ECO9: Swap GPIO_INT to an interrupt-capable bank== | ||
+ | Oh hey! GPIOB isn't capable of servicing interrupts. The only one that can't do that. | ||
+ | |||
+ | Remap pins so we can actually trigger an interrupt from the GPIO expander :-/ | ||
+ | |||
+ | Swap GPIO_INT and OLED_DC. | ||
+ | |||
+ | <hr> | ||
+ | =Pending ECOs= | ||
+ | These have yet to be implemented on all the new versions of the system. | ||
+ | |||
+ | These ECOs are pending into the DVT1 generation (previous 9 made it into bootcamp EVT1b) | ||
+ | |||
+ | ==ECO10: Allow fast TX filling of radio packets== | ||
+ | Connect DIO1 to Touch3 via 0-ohm resistor to allow for interrupt-driven refilling of TX fifos on the radios. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | added || R18M 0 ohm || | ||
+ | |} | ||
+ | |||
+ | ==ECO11: Increase ground plane clearance around captouch wires== | ||
+ | On bootcmap EVT1b, the ground plane crowds the captouch wires going to the FPC connector. Strip the ground plane out from that region to prevent interference and improve sensitivity. | ||
+ | |||
+ | ==ECO12: Identify as LS USB device== | ||
+ | Identify the device as LS USB via resistor. This is necessary to make USB/CDP detection work. | ||
+ | |||
+ | Note: this change did not make it into EVT1b for bootcamp boards. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
+ | |- | ||
+ | | R30B 1.5k, 1% (DNP) || P30B 1.5k, 1% || | ||
+ | |} | ||
+ | |||
+ | ==ECO13: Adjust CL to production crystal== | ||
+ | |||
+ | Production crystal CL is 12pF, much larger than the EVT1 crystal. Adjust CL accordingly. | ||
+ | |||
+ | Note: this change did not make it into EVT1b for bootcamp boards. | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 45: | Line 156: | ||
! scope="col" | Notes | ! scope="col" | Notes | ||
|- | |- | ||
− | | | + | | C14M 7.2pF || C14M 18pF, 50V NP0, 5% || |
+ | |- | ||
+ | | C15M 7.2pF || C15M 18pF, 50V NP0, 5% || | ||
+ | |} | ||
+ | |||
+ | ==ECO14: Adjust CL to production crystal (for BLE)== | ||
+ | Same mistake here. Production crystal CL is 9pF. | ||
+ | |||
+ | {| class="wikitable sortable" | ||
+ | |- | ||
+ | ! scope="col" | EVT | ||
+ | ! scope="col" | DVT | ||
+ | ! scope="col" | Notes | ||
|- | |- | ||
− | | | + | | C10R 7.2pF || C10R 12pF, 50V NP0, 5% || |
|- | |- | ||
− | | | + | | C11R 7.2pF || C11R 12pF, 50V NP0, 5% || |
|} | |} |
Latest revision as of 07:52, 6 June 2015
Contents
- 1 ECOs done up to EVT1b
- 1.1 ECO1: Fix Microphone mirroring
- 1.2 ECO2: Make battery easier and safer to solder
- 1.3 ECO3: Fix gas gauge topology
- 1.4 ECO4: Add isolation resistors on SPI to OLED
- 1.5 ECO5: Add USB adapter presence logic
- 1.6 ECO6: Improve boost ripple performance
- 1.7 ECO7: Fix DAC0 availability
- 1.8 ECO8: Add low-speed USB option
- 1.9 ECO9: Swap GPIO_INT to an interrupt-capable bank
- 2 Pending ECOs
ECOs done up to EVT1b
ECO1: Fix Microphone mirroring
Microphone schematic symbol was mirrored. No BOM change, board layout change only.
ECO2: Make battery easier and safer to solder
Space battery terminals wider, increase pad size, and add solder mask openings around the battery tabs. This makes it less likely to short wires together during a botched soldering operation.
ECO3: Fix gas gauge topology
Gas gauge goes between the charger and battery, not between the charger and the system. Oops!
ECO4: Add isolation resistors on SPI to OLED
For independent I2C operation of the OLED and complete dedication of the SPI bus to BLE, isolation resistors are needed on SPI1_SCK and SPI1_MOSI to the OLED display.
EVT | DVT | Notes |
---|---|---|
added | R19D 0 ohm | |
added | R20D 0 ohm |
ECO5: Add USB adapter presence logic
There is no reliable way to detect the presence of a USB power source due to the VUSB boost mode supply of the BQ24260 (observing VUSB isn't helpful because BQ24260 supplies it when the USB power is disconnected).
Add provisions for a 10k ohm pull-up resistor to USB_P and a 100k pull-down resistor to USB_N. Wire USBD_P and USBD_N via 0-ohm jumpers to spare ADC inputs on the Kinetis-W.
Expected behavior when using pull-ups and pull-downs:
- When no USB host is attached, USB_P goes to 3.0V
- When a USB host is attached, USB_P is pulled down to somewhere around 2.2V
- When a USB dedicated charger is atached, USB_P is pulled down to around 2.8V
- The only failure case is if the charging source does nothing with the D+/D- lines, but that is out of spec.
A software loop will need to sample USB_P and USB_N pins and toggle between boost and charge mode.
Initially, however, the pull-ups and pull-downs are not installed. The preferred embodiment is to use the internal pullup/pulldown networks on the GPIOs on the Kinetis-W to apply test currents to the D+/D- pins when detection needs to be run. This allows the native D+/D- detection from the charger IC to run without interference of static pullup/downs. The hard-wired resistors are kept in place just in case the tolerance of the internal Kinetis-W resistors are too large and/or the algorithm to do port detection turns out to be too difficult to implement.
EVT | DVT | Notes |
---|---|---|
added | R29B 10k, 1% (DNP) | pull-up on USB_P |
added | R31B 100k, 1% (DNP) | pull-down on USB_N |
added | R17M 0 ohm | allow spare ADC input (ADC0_SE12) on Kinetis-W to sample USB_P |
added | R16M 0 ohm | allow spare ADC input (ADC0_SE9) on Kinetis-W to sample USB_N |
ECO6: Improve boost ripple performance
Add another 10uF cap on VUSB to improve ripple performance during boost mode.
EVT | DVT | Notes |
---|---|---|
added | C28B 10uF, 10V X5R |
ECO7: Fix DAC0 availability
For unspecified reasons, the documentation claims in 4.3.2.3 that PTE30 is the preferred pin for controlling RF reset. However, this is also the only pin to which DAC0 is available. Seems like a waste to not make DAC0 available.
We're assuming this is just a brainfart on the reference firmware developer, and if we make our own stack we should be able to pick any pin we want. So, move RF_RESET to a more generic pin, but allow DAC0 to be wired over via 0-ohm jumper option in case there is an actual reason this pin is needed to be RF_RESET.
EVT | DVT | Notes |
---|---|---|
added | R14M 0 ohm | |
added | R15M 0 ohm (DNP) | unpopulated option to bring PTE30 to RESET |
ECO8: Add low-speed USB option
Since we've wired USB D+/D- pins to the microcontroller, might as well add the pull-up resistor that allows detection of the microcontroller as a low speed device, in case someone wants to use the port to write a bit-bang USB implementation. "It's just one resistor, anyways."
...and while we're at it, adding a possible pull-down slot on D+. Mostly for symmetry purposes, but also I suppose it could allow the microcontroller to act as a host in a pinch.
Note: The Voh(min) spec for USB low speed is 2.8V with a 15k pull-down load. VDD for the MCU is 3.0V +/-2%, so we're pretty marginal on meeting that spec. It'll probably work, but this should be considered a hack and not something you want to use in mission-critical situations.
EVT | DVT | Notes |
---|---|---|
added | R30B 1.5k 1% (DNP) | |
added | R32B DNP | just in case |
ECO9: Swap GPIO_INT to an interrupt-capable bank
Oh hey! GPIOB isn't capable of servicing interrupts. The only one that can't do that.
Remap pins so we can actually trigger an interrupt from the GPIO expander :-/
Swap GPIO_INT and OLED_DC.
Pending ECOs
These have yet to be implemented on all the new versions of the system.
These ECOs are pending into the DVT1 generation (previous 9 made it into bootcamp EVT1b)
ECO10: Allow fast TX filling of radio packets
Connect DIO1 to Touch3 via 0-ohm resistor to allow for interrupt-driven refilling of TX fifos on the radios.
EVT | DVT | Notes |
---|---|---|
added | R18M 0 ohm |
ECO11: Increase ground plane clearance around captouch wires
On bootcmap EVT1b, the ground plane crowds the captouch wires going to the FPC connector. Strip the ground plane out from that region to prevent interference and improve sensitivity.
ECO12: Identify as LS USB device
Identify the device as LS USB via resistor. This is necessary to make USB/CDP detection work.
Note: this change did not make it into EVT1b for bootcamp boards.
EVT | DVT | Notes |
---|---|---|
R30B 1.5k, 1% (DNP) | P30B 1.5k, 1% |
ECO13: Adjust CL to production crystal
Production crystal CL is 12pF, much larger than the EVT1 crystal. Adjust CL accordingly.
Note: this change did not make it into EVT1b for bootcamp boards.
EVT | DVT | Notes |
---|---|---|
C14M 7.2pF | C14M 18pF, 50V NP0, 5% | |
C15M 7.2pF | C15M 18pF, 50V NP0, 5% |
ECO14: Adjust CL to production crystal (for BLE)
Same mistake here. Production crystal CL is 9pF.
EVT | DVT | Notes |
---|---|---|
C10R 7.2pF | C10R 12pF, 50V NP0, 5% | |
C11R 7.2pF | C11R 12pF, 50V NP0, 5% |