boards: Add support for the Ambiq Apollo3P EVB board

This commit adds support for the Ambiq Apollo3P EVB board (AMA3B2EVB).

Signed-off-by: Hao Luo <hluo@ambiq.com>
This commit is contained in:
Hao Luo 2023-12-15 16:18:45 +08:00 committed by Carles Cufí
commit 362bed8902
9 changed files with 367 additions and 0 deletions

View file

@ -0,0 +1,6 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2023 Ambiq Micro Inc. <www.ambiq.com>
config BOARD_APOLLO3P_EVB
select SOC_APOLLO3P_BLUE

View file

@ -0,0 +1,196 @@
/*
* Copyright (c) 2023 Ambiq Micro Inc. <www.ambiq.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <dt-bindings/pinctrl/ambiq-apollo3-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <UART0TX_P22>;
};
group2 {
pinmux = <UART0RX_P23>;
input-enable;
};
};
i2c0_default: i2c0_default {
group1 {
pinmux = <M0SCL_P5>, <M0SDAWIR3_P6>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
i2c1_default: i2c1_default {
group1 {
pinmux = <M1SCL_P8>, <M1SDAWIR3_P9>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
i2c2_default: i2c2_default {
group1 {
pinmux = <M2SCL_P27>, <M2SDAWIR3_P25>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
i2c3_default: i2c3_default {
group1 {
pinmux = <M3SCL_P42>, <M3SDAWIR3_P43>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
i2c4_default: i2c4_default {
group1 {
pinmux = <M4SCL_P39>, <M4SDAWIR3_P40>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
i2c5_default: i2c5_default {
group1 {
pinmux = <M5SCL_P48>, <M5SDAWIR3_P49>;
drive-open-drain;
drive-strength = "0.5";
bias-pull-up;
};
};
spi0_default: spi0_default {
group1 {
pinmux = <M0SCK_P5>, <M0MISO_P6>, <M0MOSI_P7>;
};
group2 {
pinmux = <NCE11_P11>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <0>;
};
};
spi1_default: spi1_default {
group1 {
pinmux = <M1SCK_P8>, <M1MISO_P9>, <M1MOSI_P10>;
};
group2 {
pinmux = <NCE34_P34>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <1>;
ambiq,iom-num = <1>;
};
};
spi2_default: spi2_default {
group1 {
pinmux = <M2SCK_P27>, <M2MISO_P25>, <M2MOSI_P28>;
};
group2 {
pinmux = <NCE15_P15>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <3>;
ambiq,iom-num = <2>;
};
};
spi3_default: spi3_default {
group1 {
pinmux = <M3SCK_P42>, <M3MISO_P43>, <M3MOSI_P38>;
};
group2 {
pinmux = <NCE29_P29>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <3>;
};
};
spi4_default: spi4_default {
group1 {
pinmux = <M4SCK_P39>, <M4MISO_P40>, <M4MOSI_P44>;
};
group2 {
pinmux = <NCE13_P13>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <1>;
ambiq,iom-num = <4>;
};
};
spi5_default: spi5_default {
group1 {
pinmux = <M5SCK_P48>, <M5MISO_P49>, <M5MOSI_P47>;
};
group2 {
pinmux = <NCE16_P16>;
drive-push-pull;
ambiq,iom-mspi = <1>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <5>;
};
};
mspi0_default: mspi0_default{
group1 {
pinmux = <MSPI0_0_P22>,
<MSPI0_1_P26>,
<MSPI0_2_P4>,
<MSPI0_3_P23>,
<MSPI0_8_P24>;
};
group2 {
pinmux = <NCE37_P37>;
drive-push-pull;
drive-strength = "0.5";
ambiq,iom-mspi = <0>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <0>;
};
};
mspi1_default: mspi1_default{
group1 {
pinmux = <MSPI1_0_P51>,
<MSPI1_1_P52>,
<MSPI1_2_P53>,
<MSPI1_3_P54>,
<MSPI1_4_P55>,
<MSPI1_5_P56>,
<MSPI1_6_P57>,
<MSPI1_7_P58>,
<MSPI1_8_P59>;
};
group2 {
pinmux = <NCE50_P50>;
drive-push-pull;
drive-strength = "0.5";
ambiq,iom-mspi = <0>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <1>;
};
};
mspi2_default: mspi2_default{
group1 {
pinmux = <MSPI2_0_P64>,
<MSPI2_1_P65>,
<MSPI2_2_P66>,
<MSPI2_3_P67>,
<MSPI2_4_P68>;
};
group2 {
pinmux = <NCE63_P63>;
drive-push-pull;
drive-strength = "0.5";
ambiq,iom-mspi = <0>;
ambiq,iom-nce-module = <0>;
ambiq,iom-num = <2>;
};
};
};

View file

@ -0,0 +1,29 @@
/dts-v1/;
#include <ambiq/ambiq_apollo3p_blue.dtsi>
#include "apollo3p_evb-pinctrl.dtsi"
/ {
model = "Ambiq Apollo3 Blue Plus evaluation board";
compatible = "ambiq,apollo3p_evb";
chosen {
zephyr,itcm = &tcm;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,uart-pipe = &uart0;
};
aliases {
watchdog0 = &wdt0;
};
};
&uart0 {
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
status = "okay";
};

View file

@ -0,0 +1,15 @@
identifier: apollo3p_evb
name: Apollo3 Blue Plus EVB
type: mcu
arch: arm
ram: 768
flash: 2000
toolchain:
- zephyr
- gnuarmemb
supported:
- uart
testing:
ignore_tags:
- net
vendor: ambiq

View file

@ -0,0 +1,8 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2023 Ambiq Micro Inc. <www.ambiq.com>
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y

View file

@ -0,0 +1,6 @@
# Copyright (c) 2023 Ambiq Micro Inc. <www.ambiq.com>
# SPDX-License-Identifier: Apache-2.0
board_runner_args(jlink "--device=AMA3B2KK-KBR" "--iface=swd" "--speed=1000")
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

View file

@ -0,0 +1,5 @@
board:
name: apollo3p_evb
vendor: ambiq
socs:
- name: apollo3p_blue

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View file

@ -0,0 +1,102 @@
.. _apollo3p_evb:
Ambiq Apollo3 Blue Plus EVB
###########################
Apollo3 Blue Plus EVB is a board by Ambiq featuring their ultra-low power Apollo3 Blue Plus SoC.
.. image:: ./apollo3-blue-plus-soc-eval-board.jpg
:align: center
:alt: Apollo3 Blue Plus EVB
Hardware
********
- Apollo3 Blue Plus SoC with up to 96 MHz operating frequency
- ARM® Cortex® M4F core
- 16 kB 2-way Associative/Direct-Mapped Cache per core
- Up to 2 MB of flash memory for code/data
- Up to 768 KB of low leakage / low power RAM for code/data
- Integrated Bluetooth 5 Low-energy controller
For more information about the Apollo3 Blue Plus SoC and Apollo3 Blue Plus EVB board:
- `Apollo3 Blue Plus Website`_
- `Apollo3 Blue Plus Datasheet`_
- `Apollo3 Blue Plus EVB Website`_
Supported Features
==================
The Apollo3 Blue Plus EVB board configuration supports the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| MPU | on-chip | memory protection unit |
+-----------+------------+-------------------------------------+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| STIMER | on-chip | stimer |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial |
+-----------+------------+-------------------------------------+
| WDT | on-chip | watchdog |
+-----------+------------+-------------------------------------+
| RADIO | on-chip | bluetooth |
+-----------+------------+-------------------------------------+
The default configuration can be found in the defconfig file:
``boards/arm/apollo3p_evb/apollo3p_evb_defconfig``.
Programming and Debugging
=========================
Flashing an application
-----------------------
Connect your device to your host computer using the JLINK USB port.
The sample application :ref:`hello_world` is used for this example.
Build the Zephyr kernel and application, then flash it to the device:
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: apollo3p_evb
:goals: flash
.. note::
`west flash` requires `SEGGER J-Link software`_ and `pylink`_ Python module
to be installed on you host computer.
Open a serial terminal (minicom, putty, etc.) with the following settings:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
Reset the board and you should be able to see on the corresponding Serial Port
the following message:
.. code-block:: console
Hello World! apollo3p_evb
.. _Apollo3 Blue Plus Website:
https://ambiq.com/apollo3-blue-plus/
.. _Apollo3 Blue Plus Datasheet:
https://contentportal.ambiq.com/documents/20123/388390/Apollo3-Blue-Plus-SoC-Datasheet.pdf
.. _Apollo3 Blue Plus EVB Website:
https://www.ambiq.top/en/apollo3-blue-plus-soc-eval-board
.. _SEGGER J-Link software:
https://www.segger.com/downloads/jlink
.. _pylink:
https://github.com/Square/pylink