mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
182 lines
4.2 KiB
Python
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
|