sforkowany z mirror/meshtastic-firmware
fix pins per email eink
rodzic
78fe41710b
commit
e5d4fbb164
|
@ -0,0 +1,29 @@
|
||||||
|
# You probably don't want to use this script, it programs a custom bootloader build onto a nrf52 board
|
||||||
|
|
||||||
|
BOOTDIR=/home/kevinh/development/meshtastic/Adafruit_nRF52_Bootloader
|
||||||
|
|
||||||
|
nrfjprog --eraseall -f nrf52
|
||||||
|
|
||||||
|
#echo Programming soft device
|
||||||
|
#nrfjprog --program $BOOTDIR/lib/softdevice/s140_nrf52_6.1.1/s140_nrf52_6.1.1_softdevice.hex -f nrf52
|
||||||
|
|
||||||
|
echo Programming bootloader and soft device
|
||||||
|
# the following ling incorrectly enables reset pin, because the running code rewrites it
|
||||||
|
nrfjprog --program $BOOTDIR/_build/build-ttgo_eink/ttgo_eink_bootloader-0.3.2-122-gf6bfaac-dirty_s140_6.1.1.hex -f nrf52
|
||||||
|
|
||||||
|
# this generates an intel hex file that can be programmed into a NRF52 to tell the adafruit bootloader that the current app image is valid
|
||||||
|
# Bootloader settings are at BOOTLOADER_SETTINGS (rw) : ORIGIN = 0xFF000, LENGTH = 0x1000
|
||||||
|
# first 4 bytes should be 0x01 to indicate valid app image
|
||||||
|
# second 4 bytes should be 0x00 to indicate no CRC required for image
|
||||||
|
echo "01 00 00 00 00 00 00 00" | xxd -r -p - >/tmp/bootconf.bin
|
||||||
|
srec_cat /tmp/bootconf.bin -binary -offset 0xff000 -output /tmp/bootconf.hex -intel
|
||||||
|
|
||||||
|
echo Programming meshtastic app load
|
||||||
|
nrfjprog --program .pio/build/eink/firmware.hex -f nrf52
|
||||||
|
|
||||||
|
echo Telling bootloader app region is valid and telling CPU to run
|
||||||
|
nrfjprog --program /tmp/bootconf.hex -f nrf52 --reset
|
||||||
|
|
||||||
|
# nrfjprog --readuicr /tmp/uicr.hex; objdump -s /tmp/uicr.hex | less
|
||||||
|
|
||||||
|
echo FIXME use hexmerge
|
|
@ -95,6 +95,11 @@ bool EInkDisplay::connect()
|
||||||
{
|
{
|
||||||
DEBUG_MSG("Doing EInk init\n");
|
DEBUG_MSG("Doing EInk init\n");
|
||||||
|
|
||||||
|
#ifdef EINK_PIN_PWR_ON
|
||||||
|
digitalWrite(EINK_PIN_PWR_ON, HIGH); // If we need to assert a pin to power external peripherals
|
||||||
|
pinMode(EINK_PIN_PWR_ON, OUTPUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef PIN_EINK_EN
|
#ifdef PIN_EINK_EN
|
||||||
digitalWrite(PIN_EINK_EN, HIGH);
|
digitalWrite(PIN_EINK_EN, HIGH);
|
||||||
pinMode(PIN_EINK_EN, OUTPUT);
|
pinMode(PIN_EINK_EN, OUTPUT);
|
||||||
|
|
|
@ -93,11 +93,6 @@ void nrf52Setup()
|
||||||
// This is the recommended setting for Monitor Mode Debugging
|
// This is the recommended setting for Monitor Mode Debugging
|
||||||
NVIC_SetPriority(DebugMonitor_IRQn, 6UL);
|
NVIC_SetPriority(DebugMonitor_IRQn, 6UL);
|
||||||
|
|
||||||
#ifdef PIN_PWR_ON
|
|
||||||
digitalWrite(PIN_PWR_ON, HIGH); // If we need to assert a pin to power external peripherals
|
|
||||||
pinMode(PIN_PWR_ON, OUTPUT);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Not yet on board
|
// Not yet on board
|
||||||
// pmu.init();
|
// pmu.init();
|
||||||
|
|
||||||
|
|
|
@ -27,25 +27,29 @@
|
||||||
/*
|
/*
|
||||||
@geeksville eink TODO:
|
@geeksville eink TODO:
|
||||||
|
|
||||||
confirm that watchdog reset (i.e. all pins now become inputs) won't cause the board to power down when we are not connected to USB
|
soonish:
|
||||||
(I bet it will). If this happens recommended fix is to add an external pullup on PWR_ON GPIO.
|
hook cdc acm device to debug output
|
||||||
|
|
||||||
fix bootloader to use two buttons - remove bootloader hacks
|
fix bootloader to use two buttons - remove bootloader hacks
|
||||||
fix battery voltage sensing
|
|
||||||
fix floating point SEGGER printf on nrf52 - see "new NMEA GPS pos"
|
|
||||||
get second button working in app load
|
get second button working in app load
|
||||||
if battery falls too low deassert PWR_ON (to force board to shutdown)
|
|
||||||
fix display width and height
|
fix display width and height
|
||||||
clean up eink drawing to not have the nasty timeout hack
|
clean up eink drawing to not have the nasty timeout hack
|
||||||
|
measure current draws
|
||||||
put eink to sleep when we think the screen is off
|
put eink to sleep when we think the screen is off
|
||||||
enable flash on spi0, share chip selects on spi1.
|
|
||||||
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fspi.html enable reset as a button in
|
|
||||||
bootloader fix battery pin usage drive TCXO DIO3 enable high whenever we want the clock use PIN_GPS_WAKE to sleep the GPS use
|
|
||||||
tp_ser_io as a button, it goes high when pressed unify eink display classes
|
|
||||||
make screen.adjustBrightness() a nop on eink screens
|
|
||||||
enable gps sleep mode
|
enable gps sleep mode
|
||||||
use new flash chip
|
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fspi.html enable reset as a button
|
||||||
|
make screen.adjustBrightness() a nop on eink screens
|
||||||
|
|
||||||
|
later:
|
||||||
|
confirm that watchdog reset (i.e. all pins now become inputs) won't cause the board to power down when we are not connected to USB
|
||||||
|
(I bet it will). If this happens recommended fix is to add an external pullup on PWR_ON GPIO.
|
||||||
|
enable flash on spi0, share chip selects on spi1.
|
||||||
|
fix floating point SEGGER printf on nrf52 - see "new NMEA GPS pos"
|
||||||
add factory/power on self test
|
add factory/power on self test
|
||||||
|
use tp_ser_io as a button, it goes high when pressed unify eink display classes
|
||||||
|
|
||||||
|
feedback to give:
|
||||||
|
remove ipx connector for nfc, instead use two caps and loop traces on the back of the board as an antenna?
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
/*----------------------------------------------------------------------------
|
||||||
|
@ -122,9 +126,6 @@ work.
|
||||||
|
|
||||||
#define TP_SER_IO (0 + 11)
|
#define TP_SER_IO (0 + 11)
|
||||||
|
|
||||||
// Board power is enabled either by VBUS from USB or the CPU asserting PWR_ON
|
|
||||||
#define PIN_PWR_ON (0 + 12)
|
|
||||||
|
|
||||||
#define PIN_RTC_INT (0 + 16) // Interrupt from the PCF8563 RTC
|
#define PIN_RTC_INT (0 + 16) // Interrupt from the PCF8563 RTC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -175,6 +176,9 @@ FIXME define/FIX flash access
|
||||||
#define PIN_EINK_SCLK (0 + 31)
|
#define PIN_EINK_SCLK (0 + 31)
|
||||||
#define PIN_EINK_MOSI (0 + 29) // also called SDI
|
#define PIN_EINK_MOSI (0 + 29) // also called SDI
|
||||||
|
|
||||||
|
// Controls power for the eink display - Board power is enabled either by VBUS from USB or the CPU asserting PWR_ON
|
||||||
|
#define PIN_EINK_PWR_ON (0 + 12)
|
||||||
|
|
||||||
#define HAS_EINK
|
#define HAS_EINK
|
||||||
|
|
||||||
#define PIN_SPI1_MISO \
|
#define PIN_SPI1_MISO \
|
||||||
|
@ -186,10 +190,10 @@ FIXME define/FIX flash access
|
||||||
* Air530 GPS pins
|
* Air530 GPS pins
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PIN_GPS_WAKE (32 + 2)
|
#define PIN_GPS_WAKE (32 + 2) // An output to wake GPS, low means allow sleep, high means force wake
|
||||||
#define PIN_GPS_PPS (32 + 4)
|
#define PIN_GPS_PPS (32 + 4) // Pulse per second input from the GPS
|
||||||
#define PIN_GPS_TX (32 + 9) // This is for bits going TOWARDS the CPU
|
#define PIN_GPS_TX (32 + 9) // This is for bits going TOWARDS the CPU
|
||||||
#define PIN_GPS_RX (32 + 8) // This is for bits going TOWARDS the GPS
|
#define PIN_GPS_RX (32 + 8) // This is for bits going TOWARDS the GPS
|
||||||
|
|
||||||
#define PIN_SERIAL1_RX PIN_GPS_TX
|
#define PIN_SERIAL1_RX PIN_GPS_TX
|
||||||
#define PIN_SERIAL1_TX PIN_GPS_RX
|
#define PIN_SERIAL1_TX PIN_GPS_RX
|
||||||
|
|
Ładowanie…
Reference in New Issue