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 Boron
|
||||||
- Particle Xenon
|
- Particle Xenon
|
||||||
- MakerDiary MDK nRF52840 USB Dongle
|
- 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
|
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.
|
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
|
// 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
|
// Serial is 64-bit DeviceID -> 16 chars len
|
||||||
uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) };
|
uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) };
|
||||||
|
|
||||||
// array of pointer to string descriptors
|
// array of pointer to string descriptors
|
||||||
uint16_t const * const string_desc_arr [] =
|
uint16_t const * const string_desc_arr [] = 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'),
|
|
||||||
};
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Device Descriptor
|
// Device Descriptor
|
||||||
|
@ -40,15 +40,23 @@
|
|||||||
#define USB_DESC_H_
|
#define USB_DESC_H_
|
||||||
|
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
#include "boards.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef USB_DESC_VID
|
||||||
#define USB_DESC_VID 0x239A
|
#define USB_DESC_VID 0x239A
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USB_DESC_UF2_PID
|
||||||
#define USB_DESC_UF2_PID 0x0029
|
#define USB_DESC_UF2_PID 0x0029
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef USB_DESC_SERIAL_ONLY_PID
|
||||||
#define USB_DESC_SERIAL_ONLY_PID 0x002A
|
#define USB_DESC_SERIAL_ONLY_PID 0x002A
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*------------- Configuration Descriptor -------------*/
|
/*------------- Configuration Descriptor -------------*/
|
||||||
|
Loading…
Reference in New Issue
Block a user