Documentation for “Zerocat Chipflasher” as of Sun, 02 Nov 2025 23:36:06 +0100
Repository: git://zerocat.org/zerocat/projects/chipflasher.git
Version: v2.3.0-301-0a261ee71
Branch: master
Propeller Spin/PASM Compiler 'OpenSpin' (c)2012-2016 Parallax Inc. DBA Parallax Semiconductor.
Version 1.00.78
Compiling...
../../firmware2/src/PCB.spin
|-time.spin
Done.
Program size is 540 bytes
______________________________________________________________________________
********************************************************* File starts here ***
Zerocat Chipflasher --- Flash free firmware, kick the Management Engine.
Copyright (C) 2020, 2021, 2022, 2024, 2025 Kai Mertens
File PCB.spin --- Check PCB features.
This file is part of the Zerocat Chipflasher.
See end of file for terms of use.
******************************************************************************
# Object Configuration (set via Makefile)
* Tell us which RS232 baudrate to use at start:
115200, 57600, 38400 or according to DIP Switch:
Switch #1: open = 57600, closed = 115200
* Tell us which SPI power-up type to use:
One Shot, Pulses, or according to DIP Switch:
Switch #2: open = One Shot, closed = Pulses
* Tell us which SPI power-off type to use:
Auto, Static, or according to DIP Switch:
Switch #3: open = auto, closed = static
* Tell us which SPI mode to use:
Mode 0, Mode 3, or according to DIP Switch:
Switch #4: open = Mode 0, closed = Mode 3
* Tell us which SPI clock driver strength to use:
100%, 75%, 50%, 25% or according to DIP Switch:
Switch #5..#6: oo = 25%, xo = 50%, ox = 75%, xx = 100%
# Interface Description
Object "../../firmware2/src/PCB" Interface:
PUB check_cable_SPI(vboard) :
PUB is_monitor_VSPI(vboard)
PUB is_monitor_RPULL(vboard)
PUB is_monitor_RST(vboard)
PUB is_RS232_CTS(vboard)
PUB get_RST_INHIBIT(vboard)
PUB get_MASK_CEn_AVAIL(vboard)
PUB get_RPULL(vboard) :
PUB get_board_config(vboard) :
PUB get_SPI_power_on_type(cfg)
PUB get_SPI_power_off_type(cfg)
PUB get_SPI_power_config(cfg)
PUB get_SPI_mode(cfg)
PUB get_clk_driver(cfg)
PUB get_baudrate(cfg)
Program: 131 Longs
Variable: 0 Longs
# Loaded Objects
Load time object.
# Constants
## Sections in respect to PCB version
* PCBv2.1
* PCBv2.0
* PCBv2
* PCBv1.1
* PCBv1.0
* PCBv1
* Common
The PCB version is detected during runtime, that is why this object should
set RAM locations to appropriate values:
* RAM_PCB_VERSION
* RAM_RST_INIHIBIT
* RAM_ISMON_VSPI
* RAM_ISMON_RPULL
* RAM_ISMON_RST
* RAM_MASK_CEn_AVAIL
## PCBv2.1
* SPI_CEn1_PCBv2_1 -- Second Enable Pin, active low
* SPI_RPULL -- Used to load C_pull and to read R_pull value
* Hardcoded RC decay values for C_pull = 22nF, R_pull = 83..570 Ohm
## PCBv2.0
* SPI_CEn1_PCBv2_0 -- Second Enable Pin, active low
## PCBv2
* RS232_RST -- Sense RST input from host
* RST_INHIBIT -- Inhibit signal pin on board v2 for net RS232_RST
* ADC_OUT -- Sigma-delta ADC circuit, counter output
* ADC_CALIBRATION -- Sigma-delta ADC circuit, calibration pin, providing 0V/3.3V, tri-state when idle
* ADC_IN -- Sigma-delta ADC circuit, counter input
* DIP Switch 1: RS232 Baudrate
open = H, closed = L
RS232 Baudrate | SWDIP_1
----------------|-----------
57600 | H
115200 | L
* DIP Switch 2: SPI Power-up Type
open = H, closed = L
Power-up Type | SWDIP_2
----------------|-----------
one shot | H
pulses | L
* DIP Switch 3: SPI Power-off Type
open = H, closed = L
Power-off Type | SWDIP_3
----------------|-----------
auto | H
static | L
* DIP Switch 4: SPI Mode
open = H, closed = L
SPI Mode | SWDIP_4
----------|-----------
0 | H
3 | L
* DIP Switches 5..6: SPI Clock Driver
open = H, closed = L
SPI Clock Driver | SWDIP_5 | SWDIP_6
------------------|-----------|-----------
25% | H | H
50% | L | H
75% | H | L
100% | L | L
## PCBv1.1
## PCBv1.0
## PCBv1
* SPI_CEn1_PCBv1 -- Second Chip Enable Pin, active low
* RST_DISABLE -- Inhibit signal pin on board v1 for net RS232_RST
* Hardcoded DIP switch configuration for PCBv1 aka board-v1
This configuration can also be set per menu.
- RS232 baudrate: 115200
- SPI power-on: one shot
- SPI power-off: automatic
- SPI clock: mode 3
- clock driver strength: 50%
## Common
* DIP Switches A and B: Board Version
Devkit: open = H, closed straight = L, closed angular = H
open = H, closed = L
Board Version | SWDIP_B | SWDIP_A
---------------|-----------|-----------
V1 | L | L
V2 | L | H
V2.1 | L | H_delayed
V3 | H | L
V4 | H | H
On PCBv1, SWDIP_A is connected to GND via resistor.
On PCBv1, SWDIP_B is not connected but will hopefully read low at start.
On PCBv2.1, SWDIP_A is connected to an RC network.
It can be detected by driving SWDIP_A low and then waiting for a low-to-high transition.
* SPI Pins
* RS232 Pins
* SPI Modes
# Globals
# Functions
_______________________________
PUB check_cable_SPI(vboard) :
Check SPI Cable:
FALSE = a) Cable not present or b) twisted plug
TRUE = Cable present
____________________________
PUB is_monitor_VSPI(vboard)
Is SPI voltage monitor hardware available?
_____________________________
PUB is_monitor_RPULL(vboard)
Is SPI R_pull monitor hardware available?
___________________________
PUB is_monitor_RST(vboard)
Is pin RS232_RST monitored?
_________________________
PUB is_RS232_CTS(vboard)
Is pin RS232_CTS available?
____________________________
PUB get_RST_INHIBIT(vboard)
Which pin is used to inhibit net RS232_RST?
_______________________________
PUB get_MASK_CEn_AVAIL(vboard)
Which pins are used to enable SPI CE#?
_________________________
PUB get_RPULL(vboard) :
Check value of R_pull,
which must not be smaller than 83 Ohm if driven by one pin.
________________________________
PUB get_board_config(vboard) :
Return six configuration bits in respect to parameter `vboard':
If `vboard' is 1, return the value of `PCBv1_CONFIG',
otherwise read DIP switches on PCB.
_______________________________
PUB get_SPI_power_on_type(cfg)
Return TRUE or FALSE according to bit position 2 of parameter `cfg',
corresponding to this translation:
bp2
---
0 = one shot SPI power-up (FALSE)
1 = pulsed SPI power-up (TRUE)
________________________________
PUB get_SPI_power_off_type(cfg)
Return TRUE or FALSE according to bit postion 3 of parameter `cfg',
corresponding to this translation:
bp3
---
0 = automatic suspend, if required (FALSE)
1 = static power, suspend inhibited (TRUE)
______________________________
PUB get_SPI_power_config(cfg)
Return value 0..3 according to bit positions 2 and 3 of parameter `cfg',
corresponding to this translation table:
bp2 | bp3
----|----
0 | 0 = one shot, auto
1 | 0 = pulses, auto
0 | 1 = one shot, static
1 | 1 = pulses, static
______________________
PUB get_SPI_mode(cfg)
Return SPI Mode according to bit position 4 of parameter `cfg':
0 -> Mode 0, 1 -> Mode 3
Alternatively, return modes according to preprocessor directive.
________________________
PUB get_clk_driver(cfg)
Return 0..3 according to bit positions 5 and 6 of parameter `cfg'.
Return values correspond to 25%(0)..100%(3) SPI clock driver strength.
Alternatively, return values according to preprocessor directive.
______________________
PUB get_baudrate(cfg)
Return baudrate according to bit position 1 of parameter `cfg':
0 -> 57600, 1 -> 115200
Alternatively, return baudrate according to preprocessor directive:
38400
******************************************************************************
Terms of Use:
Zerocat Chipflasher is free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Zerocat Chipflasher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License along
with Zerocat Chipflasher. If not, see <http://www.gnu.org/licenses/>.
************************************************************** End of File ***