Merge pull request #64 from electronut/papyr_support
Add support for Electronut Labs Papyr
This commit is contained in:
commit
2f314e1486
@ -10,6 +10,7 @@ This is a CDC/DFU/UF2 bootloader for nRF52 boards.
|
||||
- Particle Boron
|
||||
- Particle Xenon
|
||||
- MakerDiary MDK nRF52840 USB Dongle
|
||||
- [Electronut Labs Papyr](https://docs.electronut.in/papyr/)
|
||||
|
||||
UF2 is an easy-to-use bootloader that appears as a flash drive. You can just copy `.uf2`-format
|
||||
application images to the flash drive to load new firmware.
|
||||
|
99
src/boards/electronut_labs_papyr.h
Normal file
99
src/boards/electronut_labs_papyr.h
Normal file
@ -0,0 +1,99 @@
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@file elelctronutlabs_papyr.h
|
||||
@author Tavish Naruka <tavish@electronut.in>
|
||||
|
||||
@section LICENSE
|
||||
|
||||
Software License Agreement (BSD License)
|
||||
|
||||
Copyright (c) 2017, Adafruit Industries (adafruit.com)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the copyright holders nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef PAPYR_H
|
||||
#define PAPYR_H
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/* LED
|
||||
*------------------------------------------------------------------*/
|
||||
#define LEDS_NUMBER 2
|
||||
#define LED_PRIMARY_PIN 13
|
||||
#define LED_SECONDARY_PIN 14
|
||||
#define LED_STATE_ON 0
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/* BUTTON
|
||||
*------------------------------------------------------------------*/
|
||||
// NOTE: USB UF2 bootloader can be triggered by double pressing RESET
|
||||
// App can trigger OTA bootloader by writing DFU_MAGIC_OTA_APPJUM to
|
||||
// GPREGRET register if softdevice is not initialized; or by
|
||||
// writing DFU_MAGIC_OTA_RESET in case softdevice is initialized.
|
||||
#define BUTTONS_NUMBER 2
|
||||
#define BUTTON_1 18 // RESET also by default
|
||||
#define BUTTON_2 1 // P0.1 not exposed anywhere, FRST n/a
|
||||
#define BUTTON_PULL NRF_GPIO_PIN_PULLUP
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
/* UART
|
||||
*------------------------------------------------------------------*/
|
||||
#define RX_PIN_NUMBER 7
|
||||
#define TX_PIN_NUMBER 8
|
||||
#define CTS_PIN_NUMBER 0
|
||||
#define RTS_PIN_NUMBER 0
|
||||
#define HWFC false
|
||||
|
||||
// Used as model string in OTA mode
|
||||
#define DIS_MANUFACTURER "Electronut Labs"
|
||||
#define DIS_MODEL "Papyr"
|
||||
|
||||
#define BOARD_ID "Electronut Labs Papyr"
|
||||
#define INDEX_URL "https://docs.electronut.in/papyr"
|
||||
|
||||
#define USB_DESC_VID 0x239A
|
||||
#define USB_DESC_UF2_PID 0x003B
|
||||
|
||||
#define USB_STRING_DESCRIPTORS { \
|
||||
/* 0: is supported language = English */ \
|
||||
TUD_DESC_STRCONV(0x0409), \
|
||||
\
|
||||
/* 1: Manufacturer */ \
|
||||
TUD_DESC_STRCONV('E','l','e','c','t','r','o','n','u','t',' ','L','a','b','s'), \
|
||||
\
|
||||
/* 2: Product */ \
|
||||
TUD_DESC_STRCONV('P','a','p','y','r', ' ', 'D','F','U'), \
|
||||
\
|
||||
/* 3: Serials TODO use chip ID */ \
|
||||
usb_desc_str_serial, \
|
||||
\
|
||||
/* 4: CDC Interface */ \
|
||||
TUD_DESC_STRCONV('P','a','p','y','r',' ','S','e','r','i','a','l'), \
|
||||
\
|
||||
/* 5: MSC Interface */ \
|
||||
TUD_DESC_STRCONV('P','a','p','y','r',' ','U','F','2'), \
|
||||
}
|
||||
|
||||
#endif // PPAPYR_H
|
@ -79,30 +79,33 @@ enum {
|
||||
// STRING DESCRIPTORS
|
||||
//--------------------------------------------------------------------+
|
||||
|
||||
#ifndef USB_STRING_DESCRIPTORS
|
||||
#define USB_STRING_DESCRIPTORS { \
|
||||
/* 0: is supported language = English */ \
|
||||
TUD_DESC_STRCONV(0x0409), \
|
||||
\
|
||||
/* 1: Manufacturer */ \
|
||||
TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'), \
|
||||
\
|
||||
/* 2: Product */ \
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'), \
|
||||
\
|
||||
/* 3: Serials TODO use chip ID */ \
|
||||
usb_desc_str_serial, \
|
||||
\
|
||||
/* 4: CDC Interface */ \
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'), \
|
||||
\
|
||||
/* 5: MSC Interface */ \
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'), \
|
||||
}
|
||||
#endif
|
||||
|
||||
// Serial is 64-bit DeviceID -> 16 chars len
|
||||
uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) };
|
||||
|
||||
// array of pointer to string descriptors
|
||||
uint16_t const * const string_desc_arr [] =
|
||||
{
|
||||
// 0: is supported language = English
|
||||
TUD_DESC_STRCONV(0x0409),
|
||||
|
||||
// 1: Manufacturer
|
||||
TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'),
|
||||
|
||||
// 2: Product
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'),
|
||||
|
||||
// 3: Serials TODO use chip ID
|
||||
usb_desc_str_serial,
|
||||
|
||||
// 4: CDC Interface
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'),
|
||||
|
||||
// 5: MSC Interface
|
||||
TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'),
|
||||
};
|
||||
uint16_t const * const string_desc_arr [] = USB_STRING_DESCRIPTORS;
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
// Device Descriptor
|
||||
|
@ -40,15 +40,23 @@
|
||||
#define USB_DESC_H_
|
||||
|
||||
#include "tusb.h"
|
||||
#include "boards.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef USB_DESC_VID
|
||||
#define USB_DESC_VID 0x239A
|
||||
#endif
|
||||
|
||||
#ifndef USB_DESC_UF2_PID
|
||||
#define USB_DESC_UF2_PID 0x0029
|
||||
#endif
|
||||
|
||||
#ifndef USB_DESC_SERIAL_ONLY_PID
|
||||
#define USB_DESC_SERIAL_ONLY_PID 0x002A
|
||||
#endif
|
||||
|
||||
|
||||
/*------------- Configuration Descriptor -------------*/
|
||||
|
Loading…
Reference in New Issue
Block a user