Pete Johanson
5 years ago
14 changed files with 527 additions and 28 deletions
@ -0,0 +1,126 @@
@@ -0,0 +1,126 @@
|
||||
# This file is automatically @generated by Cargo. |
||||
# It is not intended for manual editing. |
||||
[[package]] |
||||
name = "aligned" |
||||
version = "0.3.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "eb1ce8b3382016136ab1d31a1b5ce807144f8b7eb2d5f16b2108f0f07edceb94" |
||||
dependencies = [ |
||||
"as-slice", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "as-slice" |
||||
version = "0.1.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "37dfb65bc03b2bc85ee827004f14a6817e04160e3b1a28931986a666a9290e70" |
||||
dependencies = [ |
||||
"generic-array 0.12.3", |
||||
"generic-array 0.13.2", |
||||
"stable_deref_trait", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "bare-metal" |
||||
version = "0.2.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" |
||||
dependencies = [ |
||||
"rustc_version", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "cortex-m" |
||||
version = "0.6.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "2954942fbbdd49996704e6f048ce57567c3e1a4e2dc59b41ae9fde06a01fc763" |
||||
dependencies = [ |
||||
"aligned", |
||||
"bare-metal", |
||||
"volatile-register", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "generic-array" |
||||
version = "0.12.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" |
||||
dependencies = [ |
||||
"typenum", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "generic-array" |
||||
version = "0.13.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd" |
||||
dependencies = [ |
||||
"typenum", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "panic-itm" |
||||
version = "0.4.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "98830d17a95587207e41edaa3009b143d326ce134b0e3538ac98246a67d66cc3" |
||||
dependencies = [ |
||||
"cortex-m", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rustc_version" |
||||
version = "0.2.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" |
||||
dependencies = [ |
||||
"semver", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "semver" |
||||
version = "0.9.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" |
||||
dependencies = [ |
||||
"semver-parser", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "semver-parser" |
||||
version = "0.7.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" |
||||
|
||||
[[package]] |
||||
name = "stable_deref_trait" |
||||
version = "1.1.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" |
||||
|
||||
[[package]] |
||||
name = "typenum" |
||||
version = "1.12.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" |
||||
|
||||
[[package]] |
||||
name = "vcell" |
||||
version = "0.1.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "876e32dcadfe563a4289e994f7cb391197f362b6315dc45e8ba4aa6f564a4b3c" |
||||
|
||||
[[package]] |
||||
name = "volatile-register" |
||||
version = "0.2.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286" |
||||
dependencies = [ |
||||
"vcell", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "zmk" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"panic-itm", |
||||
] |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
[package] |
||||
name = "app" |
||||
version = "0.1.0" |
||||
authors = ["Pete Johanson <peter@peterjohanson.com>"] |
||||
edition = "2018" |
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
list(APPEND EXTRA_DTC_FLAGS "-qq") |
||||
|
||||
if(CONFIG_PINMUX) |
||||
zephyr_library() |
||||
zephyr_library_sources(pinmux.c) |
||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) |
||||
endif() |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
# STM32F3DISCOVERY board configuration |
||||
|
||||
# Copyright (c) 2017 I-SENSE group of ICCS |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
config BOARD_STM32F3_DISCO |
||||
bool "STM32F3DISCOVERY Development Board" |
||||
depends on SOC_STM32F303XC |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
# Planck keyboard configuration |
||||
|
||||
# Copyright (c) 2017 I-SENSE group of ICCS |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if BOARD_PLANCK_REV6 |
||||
|
||||
config BOARD |
||||
default "planck_rev6" |
||||
|
||||
config UART_1 |
||||
default y |
||||
depends on UART_CONSOLE |
||||
|
||||
if I2C |
||||
|
||||
config I2C_1 |
||||
default y |
||||
|
||||
config I2C_2 |
||||
default y |
||||
|
||||
endif # I2C |
||||
|
||||
if SPI |
||||
|
||||
config SPI_1 |
||||
default y |
||||
|
||||
config SPI_2 |
||||
default y |
||||
|
||||
endif # SPI |
||||
|
||||
config CAN_1 |
||||
default y |
||||
depends on CAN |
||||
|
||||
endif # BOARD_PLANCK_REV6 |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") |
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) |
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Copyright (c) 2017 I-SENSE group of ICCS |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
#include <kernel.h> |
||||
#include <device.h> |
||||
#include <init.h> |
||||
#include <drivers/pinmux.h> |
||||
#include <sys/sys_io.h> |
||||
|
||||
#include <pinmux/stm32/pinmux_stm32.h> |
||||
|
||||
/* pin assignments for STM32F3DISCOVERY board */ |
||||
static const struct pin_config pinconf[] = { |
||||
#ifdef CONFIG_UART_1 |
||||
{STM32_PIN_PC4, STM32F3_PINMUX_FUNC_PC4_USART1_TX}, |
||||
{STM32_PIN_PC5, STM32F3_PINMUX_FUNC_PC5_USART1_RX}, |
||||
#endif /* CONFIG_UART_1 */ |
||||
#ifdef CONFIG_UART_2 |
||||
{STM32_PIN_PA2, STM32F3_PINMUX_FUNC_PA2_USART2_TX}, |
||||
{STM32_PIN_PA3, STM32F3_PINMUX_FUNC_PA3_USART2_RX}, |
||||
#endif /* CONFIG_UART_2 */ |
||||
#ifdef CONFIG_I2C_1 |
||||
{STM32_PIN_PB6, STM32F3_PINMUX_FUNC_PB6_I2C1_SCL}, |
||||
{STM32_PIN_PB7, STM32F3_PINMUX_FUNC_PB7_I2C1_SDA}, |
||||
#endif /* CONFIG_I2C_1 */ |
||||
#ifdef CONFIG_I2C_2 |
||||
{STM32_PIN_PA9, STM32F3_PINMUX_FUNC_PA9_I2C2_SCL}, |
||||
{STM32_PIN_PA10, STM32F3_PINMUX_FUNC_PA10_I2C2_SDA}, |
||||
#endif /* CONFIG_I2C_2 */ |
||||
#ifdef CONFIG_SPI_1 |
||||
#ifdef CONFIG_SPI_STM32_USE_HW_SS |
||||
{STM32_PIN_PA4, STM32F3_PINMUX_FUNC_PA4_SPI1_NSS}, |
||||
#endif /* CONFIG_SPI_STM32_USE_HW_SS */ |
||||
{STM32_PIN_PA5, STM32F3_PINMUX_FUNC_PA5_SPI1_SCK}, |
||||
{STM32_PIN_PA6, STM32F3_PINMUX_FUNC_PA6_SPI1_MISO}, |
||||
{STM32_PIN_PA7, STM32F3_PINMUX_FUNC_PA7_SPI1_MOSI}, |
||||
#endif /* CONFIG_SPI_1 */ |
||||
#ifdef CONFIG_SPI_2 |
||||
#ifdef CONFIG_SPI_STM32_USE_HW_SS |
||||
{STM32_PIN_PB12, STM32F3_PINMUX_FUNC_PB12_SPI2_NSS}, |
||||
#endif /* CONFIG_SPI_STM32_USE_HW_SS */ |
||||
{STM32_PIN_PB13, STM32F3_PINMUX_FUNC_PB13_SPI2_SCK}, |
||||
{STM32_PIN_PB14, STM32F3_PINMUX_FUNC_PB14_SPI2_MISO}, |
||||
{STM32_PIN_PB15, STM32F3_PINMUX_FUNC_PB15_SPI2_MOSI}, |
||||
#endif /* CONFIG_SPI_2 */ |
||||
#ifdef CONFIG_USB_DC_STM32 |
||||
{STM32_PIN_PA11, STM32F3_PINMUX_FUNC_PA11_USB_DM}, |
||||
{STM32_PIN_PA12, STM32F3_PINMUX_FUNC_PA12_USB_DP}, |
||||
#endif /* CONFIG_USB_DC_STM32 */ |
||||
#ifdef CONFIG_CAN_1 |
||||
{STM32_PIN_PD0, STM32F3_PINMUX_FUNC_PD0_CAN1_RX}, |
||||
{STM32_PIN_PD1, STM32F3_PINMUX_FUNC_PD1_CAN1_TX}, |
||||
#endif /* CONFIG_CAN_1 */ |
||||
}; |
||||
|
||||
static int pinmux_stm32_init(struct device *port) |
||||
{ |
||||
ARG_UNUSED(port); |
||||
|
||||
stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, |
||||
CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); |
@ -0,0 +1,165 @@
@@ -0,0 +1,165 @@
|
||||
/* |
||||
* Copyright (c) 2017 I-SENSE group of ICCS |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
/dts-v1/; |
||||
#include <st/f3/stm32f303.dtsi> |
||||
|
||||
/ { |
||||
model = "Plack PCD, rev6"; |
||||
compatible = "planck,rev6", "st,stm32f303"; |
||||
|
||||
chosen { |
||||
zephyr,console = &usart1; |
||||
zephyr,shell-uart = &usart1; |
||||
zephyr,sram = &sram0; |
||||
zephyr,flash = &flash0; |
||||
zmk,matrix = &matrix0; |
||||
}; |
||||
|
||||
leds { |
||||
compatible = "gpio-leds"; |
||||
red_led_3: led_3 { |
||||
gpios = <&gpioe 9 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD3"; |
||||
}; |
||||
blue_led_4: led_4 { |
||||
gpios = <&gpioe 8 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD4"; |
||||
}; |
||||
orange_led_5: led_5 { |
||||
gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD5"; |
||||
}; |
||||
green_led_6: led_6 { |
||||
gpios = <&gpioe 15 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD6"; |
||||
}; |
||||
green_led_7: led_7 { |
||||
gpios = <&gpioe 11 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD7"; |
||||
}; |
||||
orange_led_8: led_8 { |
||||
gpios = <&gpioe 14 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD8"; |
||||
}; |
||||
blue_led_9: led_9 { |
||||
gpios = <&gpioe 12 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD9"; |
||||
}; |
||||
red_led_10: led_10 { |
||||
gpios = <&gpioe 13 GPIO_ACTIVE_HIGH>; |
||||
label = "User LD10"; |
||||
}; |
||||
}; |
||||
|
||||
matrix0: kscan_matrix { |
||||
rows { |
||||
gpio-map = <0 0 &gpioa 10 0>, |
||||
<1 0 &gpioa 9 0>, |
||||
<2 0 &gpioa 8 0>, |
||||
<3 0 &gpiob 15 0>, |
||||
<4 0 &gpioc 13 0>, |
||||
<5 0 &gpioc 14 0>, |
||||
<6 0 &gpioc 15 0>, |
||||
<7 0 &gpioa 2 0>; |
||||
}; |
||||
columns { |
||||
gpio-map = <0 0 &gpiob 11 0>, |
||||
<1 0 &gpiob 10 0>, |
||||
<2 0 &gpiob 2 0>, |
||||
<3 0 &gpiob 1 0>, |
||||
<4 0 &gpioa 7 0>, |
||||
<5 0 &gpiob 0 0>; |
||||
}; |
||||
}; |
||||
|
||||
gpio_keys { |
||||
compatible = "gpio-keys"; |
||||
user_button: button { |
||||
label = "User"; |
||||
gpios = <&gpioa 0 GPIO_ACTIVE_LOW>; |
||||
}; |
||||
}; |
||||
|
||||
aliases { |
||||
led0 = &green_led_6; |
||||
led1 = &green_led_7; |
||||
sw0 = &user_button; |
||||
can-primary = &can1; |
||||
}; |
||||
}; |
||||
|
||||
&usart1 { |
||||
current-speed = <115200>; |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&usart2 { |
||||
current-speed = <115200>; |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&i2c1 { |
||||
status = "okay"; |
||||
clock-frequency = <I2C_BITRATE_FAST>; |
||||
|
||||
lsm303dlhc-magn@1e { |
||||
compatible = "st,lsm303dlhc-magn"; |
||||
reg = <0x1e>; |
||||
label = "LSM303DLHC-MAGN"; |
||||
}; |
||||
|
||||
lsm303dlhc-accel@19 { |
||||
compatible = "st,lis2dh", "st,lsm303dlhc-accel"; |
||||
reg = <0x19>; |
||||
irq-gpios = <&gpioe 4 GPIO_ACTIVE_HIGH>, |
||||
<&gpioe 5 GPIO_ACTIVE_HIGH>; |
||||
label = "LSM303DLHC-ACCEL"; |
||||
}; |
||||
}; |
||||
|
||||
&i2c2 { |
||||
status = "okay"; |
||||
clock-frequency = <I2C_BITRATE_FAST>; |
||||
}; |
||||
|
||||
&spi1 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&spi2 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&usb { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&rtc { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&can1 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&flash0 { |
||||
/* |
||||
* For more information, see: |
||||
* http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions |
||||
*/ |
||||
partitions { |
||||
compatible = "fixed-partitions"; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
|
||||
/* Set 6Kb of storage at the end of the 256Kb of flash */ |
||||
storage_partition: partition@3e800 { |
||||
label = "storage"; |
||||
reg = <0x0003e800 0x00001800>; |
||||
}; |
||||
}; |
||||
}; |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
identifier: planck_rev6 |
||||
name: PLANKREV6 |
||||
type: keyboard |
||||
arch: arm |
||||
toolchain: |
||||
- zephyr |
||||
- gnuarmemb |
||||
- xtools |
||||
ram: 40 |
||||
supported: |
||||
- gpio |
||||
- i2c |
||||
- counter |
||||
- spi |
||||
- usb_device |
||||
- lsm303dlhc |
||||
- nvs |
||||
- can |
||||
- kscan |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
CONFIG_SOC_SERIES_STM32F3X=y |
||||
CONFIG_SOC_STM32F303XC=y |
||||
# 72MHz system clock |
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000 |
||||
|
||||
# Floating Point Options |
||||
CONFIG_FLOAT=y |
||||
|
||||
# enable uart driver |
||||
CONFIG_SERIAL=y |
||||
|
||||
# enable console |
||||
CONFIG_CONSOLE=y |
||||
CONFIG_UART_CONSOLE=y |
||||
|
||||
#enable I2C |
||||
CONFIG_I2C=y |
||||
|
||||
#enable SPI |
||||
CONFIG_SPI=y |
||||
|
||||
# enable pinmux |
||||
CONFIG_PINMUX=y |
||||
|
||||
# enable GPIO |
||||
CONFIG_GPIO=y |
||||
|
||||
# clock configuration |
||||
CONFIG_CLOCK_CONTROL=y |
||||
|
||||
# kscan matrix |
||||
CONFIG_KSCAN=y |
||||
CONFIG_KSCAN_GPIO=y |
||||
|
||||
# Clock configuration for Cube Clock control driver |
||||
CONFIG_CLOCK_STM32_HSE_CLOCK=8000000 |
||||
CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y |
||||
# use HSE as PLL input |
||||
CONFIG_CLOCK_STM32_PLL_SRC_HSE=y |
||||
# however, the board does not have an external oscillator, so just use |
||||
# the 8MHz clock signal coming from integrated STLink |
||||
CONFIG_CLOCK_STM32_HSE_BYPASS=y |
||||
# produce 72MHz clock at PLL output |
||||
CONFIG_CLOCK_STM32_PLL_PREDIV=1 |
||||
CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9 |
||||
CONFIG_CLOCK_STM32_AHB_PRESCALER=1 |
||||
CONFIG_CLOCK_STM32_APB1_PRESCALER=2 |
||||
CONFIG_CLOCK_STM32_APB2_PRESCALER=1 |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
CONFIG_RUST=y |
||||
CONFIG_RUST_ALLOC_POOL=y |
||||
CONFIG_KSCAN=y |
||||
CONFIG_KSCAN_GPIO=y |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
#[no_mangle] |
||||
pub extern "C" fn zmk_run() { |
||||
} |
||||
|
||||
#[cfg(test)] |
||||
mod tests { |
||||
#[test] |
||||
fn it_works() { |
||||
assert_eq!(2 + 2, 4); |
||||
} |
||||
} |
Loading…
Reference in new issue