Skip to content

ports/renesas-ra/boards/VK-RA6M3: Another New Board. #10752

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 69 additions & 3 deletions ports/renesas-ra/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ include $(BOARD_DIR)/mpconfigboard.mk

USE_FSP_LPM ?= 1
USE_FSP_QSPI ?= 0
USE_FSP_SDHI ?= 0
USE_FSP_ETH ?= 0
USE_FSP_LCD ?= 0
USE_FSP_CAM ?= 0
FSP_BOARD_NAME ?= $(shell echo $(BOARD) | tr '[:upper:]' '[:lower:]')

# Files that are generated and needed before the QSTR build.
Expand Down Expand Up @@ -73,7 +77,7 @@ INC += -I$(TOP)/lib/tinyusb/hw
INC += -I$(TOP)/lib/tinyusb/src
INC += -I$(TOP)/shared/tinyusb
INC += -Ilwip_inc
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA4M1 RA4W1 RA6M1 RA6M2 RA6M5))
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA4M1 RA4W1 RA6M1 RA6M2 RA6M3 RA6M5))
INC += -Ira
endif
INC += -I$(BOARD_DIR)/ra_gen
Expand Down Expand Up @@ -108,6 +112,7 @@ CFLAGS_MCU_RA4M1 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
CFLAGS_MCU_RA4W1 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
CFLAGS_MCU_RA6M1 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
CFLAGS_MCU_RA6M2 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
CFLAGS_MCU_RA6M3 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
CFLAGS_MCU_RA6M5 = $(CFLAGS_CORTEX_M) -mtune=cortex-m33 -mcpu=cortex-m33

ASFLAGS += $(CFLAGS_CORTEX_M) -mcpu=cortex-$(MCU_SERIES)
Expand Down Expand Up @@ -327,7 +332,11 @@ SRC_C += \
machine_pin.c \
machine_rtc.c \
machine_sdcard.c \
machine_lcd.c \
machine_cam.c \
modmachine.c \
network_lan.c \
eth.c \
extint.c \
usrsw.c \
flash.c \
Expand Down Expand Up @@ -396,6 +405,26 @@ HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_sdhi/r_sdhi.c \
$(HAL_DIR)/ra/fsp/src/r_dtc/r_dtc.c
endif

ifeq ($(USE_FSP_ETH), 1)
CFLAGS += -DUSE_FSP_ETH
HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_ether_phy/targets/ICS1894/r_ether_phy_target_ics1894.c \
$(HAL_DIR)/ra/fsp/src/r_ether_phy/r_ether_phy.c \
$(HAL_DIR)/ra/fsp/src/r_ether/r_ether.c
endif

ifeq ($(USE_FSP_LCD), 1)
CFLAGS += -DUSE_FSP_LCD
HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_glcdc/r_glcdc.c \
$(HAL_DIR)/ra/fsp/src/r_sci_i2c/r_sci_i2c.c \
$(HAL_DIR)/ra/fsp/src/r_icu/r_icu.c
endif

ifeq ($(USE_FSP_CAM), 1)
CFLAGS += -DUSE_FSP_CAM
HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_pdc/r_pdc.c \
$(HAL_DIR)/ra/fsp/src/r_jpeg/r_jpeg.c
endif

ifeq ($(USE_FSP_LPM), 1)
CFLAGS += -DUSE_FSP_LPM
HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_lpm/r_lpm.c
Expand All @@ -408,14 +437,14 @@ HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_flash_lp/r_flash_lp.c
endif
endif

ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA6M1 RA6M2 RA6M5))
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA6M1 RA6M2 RA6M3 RA6M5))
ifeq ($(USE_FSP_FLASH), 1)
CFLAGS += -DUSE_FSP_FLASH
HAL_SRC_C += $(HAL_DIR)/ra/fsp/src/r_flash_hp/r_flash_hp.c
endif
endif

ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA4M1 RA4W1 RA6M1 RA6M2 RA6M5))
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA4M1 RA4W1 RA6M1 RA6M2 RA6M3 RA6M5))
HAL_SRC_C += $(addprefix ra/,\
ra_adc.c \
ra_dac.c \
Expand All @@ -432,10 +461,43 @@ HAL_SRC_C += $(addprefix ra/,\
ra_gpt.c \
ra_utils.c \
)
endif

ifeq ($(MICROPY_SSL_MBEDTLS),1)
LIB_SRC_C += mbedtls/mbedtls_port.c
endif

ifeq ($(MICROPY_HW_ENABLE_RNG),1)
ifeq ($(CMSIS_MCU),RA6M3)
CRYPTO_DIR = ra/fsp/src/r_sce/crypto_procedures/src/sce7/plainkey/

INC += -I$(TOP)/$(HAL_DIR)/$(CRYPTO_DIR)/private/inc
INC += -I$(TOP)/$(HAL_DIR)/$(CRYPTO_DIR)/public/inc
INC += -I$(TOP)/$(HAL_DIR)/$(CRYPTO_DIR)/primitive
INC += -I$(TOP)/$(HAL_DIR)/ra/fsp/src/r_sce/common
INC += -I$(TOP)/$(HAL_DIR)/ra/fsp/src/r_sce

# The following FSP files are required for the random number generator.
HAL_SRC_C += $(addprefix $(HAL_DIR)/$(CRYPTO_DIR)/,\
adaptors/r_sce_adapt.c \
primitive/hw_sce_p_p00.c \
primitive/hw_sce_p_p01.c \
primitive/hw_sce_p_p02.c \
primitive/hw_sce_p_p20.c \
primitive/hw_sce_p_func050.c \
primitive/hw_sce_p_func051.c \
primitive/hw_sce_p_func052.c \
primitive/hw_sce_p_func053.c \
primitive/hw_sce_p_func054.c \
primitive/hw_sce_p_func100.c \
primitive/hw_sce_p_func101.c \
primitive/hw_sce_p_func102.c \
primitive/hw_sce_p_func103.c \
primitive/hw_sce_p_subprc01.c \
primitive/hw_sce_p_subprc02.c \
)
endif
ifeq ($(CMSIS_MCU),RA6M5)
CRYPTO_DIR = ra/fsp/src/r_sce_protected/crypto_procedures_protected/src/sce9/

INC += -I$(TOP)/$(HAL_DIR)/$(CRYPTO_DIR)/inc
Expand Down Expand Up @@ -471,6 +533,7 @@ HAL_SRC_C += $(addprefix $(HAL_DIR)/$(CRYPTO_DIR)/,\
primitive/r_sce_subprc01.c\
)
endif
endif

OBJ += $(PY_O)
OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
Expand Down Expand Up @@ -554,6 +617,9 @@ endif
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA6M2))
AF_FILE = boards/ra6m2_af.csv
endif
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA6M3))
AF_FILE = boards/ra6m3_af.csv
endif
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),RA6M5))
AF_FILE = boards/ra6m5_af.csv
endif
Expand Down
109 changes: 109 additions & 0 deletions ports/renesas-ra/RA6M3_hal.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2021 Renesas Electronics Corporation
* Copyright (c) 2023 Vekatech Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

#ifndef PORTS_RA_RA6M3_HAL_H_
#define PORTS_RA_RA6M3_HAL_H_

#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
// #include "hal_data.h"
#include "bsp_api.h"
#include "common_data.h"
#if defined(USE_DBG_PRINT)
#include RA_CFG_H
#endif

#define SCI_CH DEFAULT_DBG_CH
#define SCI_BAUD 115200
#define UART_CH SCI_CH
#define UART_TxStr sci_tx_str
#define PCLK 120000000

#define RA_PRI_SYSTICK (0)
#define RA_PRI_UART (1)
#define RA_PRI_SDIO (4)
#define RA_PRI_DMA (5)
#define RA_PRI_FLASH (6)
#define RA_PRI_OTG_FS (6)
#define RA_PRI_OTG_HS (6)
#define RA_PRI_TIM5 (6)
#define RA_PRI_CAN (7)
#define RA_PRI_SPI (8)
#define RA_PRI_I2C (8)
#define RA_PRI_TIMX (13)
#define RA_PRI_EXTINT (14)
#define RA_PRI_PENDSV (15)
#define RA_PRI_RTC_WKUP (15)

#include "ra_config.h"
#include "ra_adc.h"
#include "ra_dac.h"
#include "ra_flash.h"
#include "ra_gpio.h"
#include "ra_gpt.h"
#include "ra_i2c.h"
#include "ra_icu.h"
#include "ra_init.h"
#include "ra_int.h"
#include "ra_rtc.h"
#include "ra_sci.h"
#include "ra_spi.h"
#include "ra_timer.h"
#include "ra_utils.h"

typedef enum {
HAL_OK = 0x00,
HAL_ERROR = 0x01,
HAL_BUSY = 0x02,
HAL_TIMEOUT = 0x03
} HAL_StatusTypeDef;

#define __IO volatile

#if defined(USE_DBG_PRINT)
#if !defined(DEBUG_CH)
#define DEBUG_CH SCI_CH
#endif
#if (DEBUG_CH == 7)
#define DEBUG_TX_PIN P613
#define DEBUG_RX_PIN P614
#endif
#if (DEBUG_CH == 8)
#define DEBUG_TX_PIN P105
#define DEBUG_RX_PIN P104
#endif
#if (DEBUG_CH == 9)
#define DEBUG_TX_PIN P109
#define DEBUG_RX_PIN P110
#endif
#define DEBUG_TXSTR(s) ra_sci_tx_str(DEBUG_CH, (unsigned char *)s)
#define DEBUG_TXCH(c) ra_sci_tx_ch(DEBUG_CH, c)
#else
#define DEBUG_TXSTR(s)
#define DEBUG_TXCH(c)
#endif

#endif /* PORTS_RA_RA6M3_HAL_H_ */
2 changes: 2 additions & 0 deletions ports/renesas-ra/boards/VK_RA6M3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
In case you need to debug something in `VK_RA6M3` board, make sure the contents of
[project repo](https://github.com/Vekatech/VK_RA6M3) is cloned in to **this** directory.
23 changes: 23 additions & 0 deletions ports/renesas-ra/boards/VK_RA6M3/board.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"deploy": [
"../deploy.md"
],
"docs": "https://vekatech.com/VK-RA6M3_docs/brochures/VK-RA6M3%20Flyer%20R2.pdf",
"features": [
"DAC",
"USB",
"microSD",
"Ethernet",
"Camera",
"Display",
"External Flash"
],
"images": [
"VK-RA6M3.jpg"
],
"mcu": "ra6m3",
"product": "VK-RA6M3",
"thumbnail": "",
"url": "https://vekatech.com",
"vendor": "Vekatech"
}
3 changes: 3 additions & 0 deletions ports/renesas-ra/boards/VK_RA6M3/manifest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include("$(PORT_DIR)/boards/manifest.py")
# Networking
require("bundle-networking")
95 changes: 95 additions & 0 deletions ports/renesas-ra/boards/VK_RA6M3/mpconfigboard.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// MCU config
#define MICROPY_HW_BOARD_NAME "VK-RA6M3"
#define MICROPY_HW_MCU_NAME "RA6M3"
#define MICROPY_HW_MCU_SYSCLK 120000000
#define MICROPY_HW_MCU_PCLK 120000000

// module config
#define MICROPY_EMIT_THUMB (1)
#define MICROPY_EMIT_INLINE_THUMB (1)
#define MICROPY_PY_BUILTINS_COMPLEX (1)
#define MICROPY_PY_GENERATOR_PEND_THROW (1)
#define MICROPY_PY_MATH (1)
#define MICROPY_PY_HEAPQ (1)
#define MICROPY_PY_THREAD (0) // disable ARM_THUMB_FP using vldr due to RA has single float only
#define MICROPY_HW_ETH_MDC (1)
#define MICROPY_PY_NETWORK (1)
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT MICROPY_HW_BOARD_NAME

#define MODULE_LCD_ENABLED (1)
#define MODULE_CAM_ENABLED (1)

// peripheral config
#define MICROPY_HW_ENABLE_RNG (1)
#define MICROPY_HW_ENABLE_RTC (1)
#define MICROPY_HW_RTC_SOURCE (1) // 0: subclock
#define MICROPY_HW_ENABLE_ADC (1)
#define MICROPY_HW_HAS_FLASH (1)
#define MICROPY_HW_ENABLE_USBDEV (1)
#define MICROPY_HW_ENABLE_UART_REPL (1)
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (1)
#define MICROPY_HW_HAS_QSPI_FLASH (1)
#define MICROPY_HW_HAS_SDHI_CARD (1)

// board config

// UART
#define MICROPY_HW_UART7_TX (pin_P613) // D1
#define MICROPY_HW_UART7_RX (pin_P614) // D0
#define MICROPY_HW_UART8_TX (pin_P105) // Modbus (RS485)
#define MICROPY_HW_UART8_RX (pin_P104) // Modbus (RS485)
#define MICROPY_HW_UART9_TX (pin_P109) // REPL
#define MICROPY_HW_UART9_RX (pin_P110) // REPL
#define MICROPY_HW_UART_REPL HW_UART_9
#define MICROPY_HW_UART_REPL_BAUD 115200

// I2C
#define MICROPY_HW_I2C1_SCL (pin_P205)
#define MICROPY_HW_I2C1_SDA (pin_P206)

// SPI
#define MICROPY_HW_SPI1_SSL (pin_P301) // D10
#define MICROPY_HW_SPI1_RSPCK (pin_P204) // D13
#define MICROPY_HW_SPI1_MISO (pin_P202) // D12
#define MICROPY_HW_SPI1_MOSI (pin_P203) // D11

// PWM
// #define MICROPY_HW_PWM_8A (pin_P107) // D7
#define MICROPY_HW_PWM_8A (pin_P605) // LED_B
#define MICROPY_HW_PWM_2A (pin_P113) // D4
#define MICROPY_HW_PWM_2B (pin_P114) // D5
#define MICROPY_HW_PWM_4A (pin_P115) // D6
// #define MICROPY_HW_PWM_4A (pin_P302) // D9
#define MICROPY_HW_PWM_5B (pin_P202) // D12
#define MICROPY_HW_PWM_5A (pin_P203) // D11
// #define MICROPY_HW_PWM_4B (pin_P204) // D13
// #define MICROPY_HW_PWM_4B (pin_P301) // D10
#define MICROPY_HW_PWM_4B (pin_P608) // LED_Y
#define MICROPY_HW_PWM_7B (pin_P303) // D8
// #define MICROPY_HW_PWM_7B (pin_P602) // PN4_3
// #define MICROPY_HW_PWM_7A (pin_P304) // PN4_8
#define MICROPY_HW_PWM_7A (pin_P603) // LED_R
#define MICROPY_HW_PWM_6B (pin_P600) // PN4_4
#define MICROPY_HW_PWM_6A (pin_P601) // LED_G
#define MICROPY_HW_PWM_8B (pin_P604) // PN4_2

// DAC
#define MICROPY_HW_DAC0 (pin_P014) // A4
#define MICROPY_HW_DAC1 (pin_P015) // A5

// Switch
#define MICROPY_HW_HAS_SWITCH (1)
#define MICROPY_HW_USRSW_PIN (pin_P008)
// #define MICROPY_HW_USRSW_PIN (pin_P009)
#define MICROPY_HW_USRSW_PULL (MP_HAL_PIN_PULL_NONE)
#define MICROPY_HW_USRSW_EXTI_MODE (MP_HAL_PIN_TRIGGER_FALLING)
#define MICROPY_HW_USRSW_PRESSED (0)

// LEDs
#define MICROPY_HW_LED1 (pin_P603)
#define MICROPY_HW_LED2 (pin_P601)
#define MICROPY_HW_LED3 (pin_P605)
#define MICROPY_HW_LED4 (pin_P608)
#define MICROPY_HW_LED_ON(pin) mp_hal_pin_high(pin)
#define MICROPY_HW_LED_OFF(pin) mp_hal_pin_low(pin)
#define MICROPY_HW_LED_TOGGLE(pin) mp_hal_pin_toggle(pin)
Loading