Espruino/boards/OLIMEXINO_STM32_RE.py
2017-03-07 15:25:24 +00:00

182 lines
4.2 KiB
Python

#!/bin/false
# This file is part of Espruino, a JavaScript interpreter for Microcontrollers
#
# Copyright (C) 2013 Gordon Williams <gw@pur3.co.uk>
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# ----------------------------------------------------------------------------------------
# This file contains information for a specific board - the available pins, and where LEDs,
# Buttons, and other in-built peripherals are. It is used to build documentation as well
# as various source and header files for Espruino.
# ----------------------------------------------------------------------------------------
import pinutils
import json
info = {
'name': 'Olimexino STM32 / Leaflabs Maple with STM32F103RET',
'link': ['https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/', 'http://leaflabs.com/devices/maple/'],
'variables': 3250,
'binary_name': 'espruino_%v_olimexino_stm32_re.bin',
'build' : {
'optimizeflags' : '-Os',
'libraries' : [
'NET',
'GRAPHICS',
'FILESYSTEM',
'TV',
'HASHLIB'
],
'makefile' : [
'STLIB=STM32F10X_HD',
'PRECOMPILED_OBJS+=$(ROOT)/targetlibs/stm32f1/lib/startup_stm32f10x_hd.o'
]
}
}
chip = {
'part': 'STM32F103RET6',
'family': 'STM32F1',
'package': 'LQFP64',
'ram': 64,
'flash': 512,
'speed': 72,
'usart': 5,
'spi': 3,
'i2c': 2,
'adc': 3,
'dac': 2
}
devices = {
'OSC_RTC': {'pin_1': 'D22',
'pin_2': 'D23'},
'LED1': {'pin': 'D13'},
'LED2': {'pin': 'D3'},
'BTN1': {'pin': 'D38'},
'USB': {'pin_disc': 'D39',
'pin_dm': 'D40',
'pin_dp': 'D41'},
'SD': {'pin_cs': 'D25',
'pin_di': 'D34',
'pin_do': 'D33',
'pin_clk': 'D32'}}
# left-right, or top-bottom order
board = {
'top': ['D14', 'GND', 'D13', 'D12', 'D11', 'D10', 'D9', 'D8', '', 'D7', 'D6', 'D5', 'D4', 'D3', 'D2', 'D1', 'D0'],
'bottom': ['RST', '3.3', '3.3A', 'GNDA', 'GND', 'VIN', '', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5'],
'right': ['D23', 'D25', 'D27', 'D29', 'D31', 'D33', 'D35', 'D37'],
'right2': ['D24', 'D26', 'D28', 'D30', 'D32', 'D34', 'D36', 'GND'],
'left': ['3V3', 'D7', 'D29', 'D12', 'D13'],
'left2': ['GND', 'D8', 'D20', 'D11', 'D4'],
'_pinmap': {'A0': 'D15', 'A1': 'D16', 'A2': 'D17', 'A3': 'D18', 'A4': 'D19', 'A5': 'D20'}
}
board['left'].reverse()
board['left2'].reverse()
board['right'].reverse()
board['right2'].reverse()
board["_css"] = """
#board {
width: 540px;
height: 418px;
top: 300px;
left: 200px;
background-image: url(img/OLIMEXINO_STM32.jpg);
}
#boardcontainer {
height: 850px;
}
#top {
top: -20px;
left: 140px;
}
#bottom {
top: 431px;
left: 220px;
}
#left {
top: 155px;
right: 520px;
}
#left2 {
top:155px;
left: 20px;
}
#right {
top: 155px;
left: 520px;
}
#right2 {
top: 155px;
right: 20px;
}
""";
def get_pins():
pins = pinutils.scan_pin_file([], 'stm32f103xe.csv', 6, 10, 11)
# Olimexino/Maple pins have stupid names
pinmapping = {'D0': 'PA3',
'D1': 'PA2',
'D2': 'PA0',
'D3': 'PA1',
'D4': 'PB5',
'D5': 'PB6',
'D6': 'PA8',
'D7': 'PA9',
'D8': 'PA10',
'D9': 'PB7',
'D10': 'PA4',
'D11': 'PA7',
'D12': 'PA6',
'D13': 'PA5',
'D14': 'PB8',
'D15':'PC0', # shared with A0-A15
'D16': 'PC1',
'D17': 'PC2',
'D18': 'PC3',
'D19': 'PC4',
'D20': 'PC5',
'D21': 'PC13',
'D22': 'PC14',
'D23': 'PC15',
'D24': 'PB9',
'D25': 'PD2',
'D26': 'PC10',
'D27': 'PB0',
'D28': 'PB1',
'D29': 'PB10',
'D30': 'PB11',
'D31': 'PB12',
'D32': 'PB13',
'D33': 'PB14',
'D34': 'PB15',
'D35': 'PC6',
'D36': 'PC7',
'D37': 'PC8',
'D38':'PC9', # for button
'D39':'PC12', # for USB disc
'D40':'PA11', # for USB dm
'D41':'PA12', # for USB dp
}
newpins = []
for newname in pinmapping:
pin = pinutils.findpin(pins, pinmapping[newname], True)
pin['name'] = 'P' + newname
pin['sortingname'] = newname[0] + newname[1:].rjust(2, '0')
newpins.append(pin)
# Because 'pinmapping' is NOT stored in order!!!
newpins = sorted(newpins, key=lambda pin: pin['sortingname'])
return newpins