.. _ronoth_lodev:

Ronoth LoDev
############

========
Overview
========

The Ronoth_ LoDev_ is a small open source board containing a `AcSIP S76S`_  SiP from AcSIP_.
The `full LoDev design details`_ are available on on GitHub.  The LoDev_ board can be purchased
from Ronoth_ or from CrowdSupply_.

The S76S contains an `STMicro STM32L073RZ`_ MCU, a `Semtech SX1276`_ LoRaWAN transceiver,
and a +20 dBm power amplifier.  Refer to `AcSIP S76S Product Information Brief`_ for details.

Zephyr applications may use the **ronoth_lodev** configuration to run on this board.

.. figure:: img/lodev.jpg
     :align: center
     :alt: Image of Ronoth LoDev open source development board containing S76S system on a chip

     Ronoth LoDev

`Board design files`_ are available on GitHub.

================
Device Resources
================

The embedded `STMicro STM32L073RZ`_ has some GPIOs and SPI2 internally committed to the LoRaWAN
transceiver operation.  See `internally dedicated ports`_ for a list of resources committed to this function.

=========
Debugging
=========

Programming and debugging uses the SWD port, as on any STM32 processor.  An ST-LINK/V2 adapter
may be used with the appropriate software (*st-utils* package on Linux).

=================
Connector Pin-Out
=================

The LoDev has two rows of headers.  Pin 1 on both connectors is closest to the micro-USB connector on the board,
furthest from the RF (antenna) connector.

When viewed from the top (component) side of the board, with the micro-USB connector closest and RF (antenna)
connector furthest away, the CN6_ connector is on the left, the CN7_ connector is on the right.

UART1 on the S76S SiP is connected to a USB-to-UART device connected to the micro USB connector, so generally
PA9 and PA10 are unavailable for I/Os.

A helpful silkscreen legend is provided on the board.

.. figure:: img/pinout.jpg
     :align: center
     :alt: Ronoth LoDev sketch with pinout

     Ronth LoDev Pinout

.. _CN6:

-----------
CN6 Pin-Out
-----------

=== ======== ======================================================
Pin Function Note
=== ======== ======================================================
1   3.3V     Output 500 mA max
2   GND
3   PC1
4   PC0
5   PB8
6   BOOT0
7   PB7
8   PB6
9   PB5
10  PD2
11  PC12
12  PC11
13  PC10
14  PA14     SWCLK
15  PA13     SWDIO
16  PA12
17  PA11
18  PA9      USB serial Tx drives this pin (input) for UART1
19  PA10     USB serial Rx is driven by this pin (output) for UART1
20  PA8
=== ======== ======================================================

.. _CN7:

-----------
CN7 Pin-Out
-----------

=== ======== ============================
Pin Function Note
=== ======== ============================
1   PC2
2   PC3
3   nRESET
4   PA0
5   PA2
6   PA3
7   PA4
8   PA5
9   PA6
10  PA7
11  PC4
12  PC5
13  PB0
14  PB1
15  PC6
16  PC7
17  PC8
18  PC9
19  GND
20  PA1      Used in S76S as “RF FEM CPS”
=== ======== ============================

.. _internally dedicated ports:

--------------------------
Internally Dedicated Ports
--------------------------

======== ======== ============= ==== =========================
Pin name Pin Type I/O Structure Note Function
======== ======== ============= ==== =========================
PA15     I/O      FT            -    INTERNAL SX1276 D5
PB3      I/O      FTf           -    INTERNAL SX1276 D4
PB4      I/O      FTf           -    INTERNAL SX1276 D3
PB9      I/O      FTf           -    INTERNAL SX1276 D2
PB10     I/O      FT            -    INTERNAL SX1276 Reset
PB11     I/O      FT            -    INTERNAL SX1276 D0
PB12     I/O      FT            -    INTERNAL SX1276 SPI nCS
PB13     I/O      FTf           -    INTERNAL SX1276 SPI2_SCK
PB14     I/O      FTf           -    INTERNAL SX1276 SPI2_MISO
PB15     I/O      FT            -    INTERNAL SX1276 SPI2_MOSI
PC13     I/O      FT            -    INTERNAL SX1276 D1
======== ======== ============= ==== =========================

==========
References
==========

.. _Ronoth: https://ronoth.com/

.. _LoDev: https://ronoth.com/products/lodev-s76s-lora-soc-development-board?variant=31608819417220

.. _AcSIP: http://www.acsip.com.tw

.. _AcSIP S76S: http://www.acsip.com.tw/index.php?action=products-detail&fid1=11&fid2=29&fid3=27&id=79&lang=3

.. _AcSIP S76S Product Information Brief: http://www.acsip.com.tw/upload/product_attach/S76S_Brief_ver02.pdf

.. _CrowdSupply: https://www.crowdsupply.com/ronoth/lodev

.. _full LoDev design details: https://github.com/ronoth/LoDev

.. _Board design files: https://github.com/ronoth/LoDev

.. _posted on MBed by Steve Osborn: https://os.mbed.com/users/steve918/

.. _STMicro STM32L073RZ: STMicro STM32L073RZ

.. _Semtech SX1276: https://www.semtech.com/products/wireless-rf/lora-transceivers/sx1276

=======
License
=======

This document Copyright (c) 2021 Dean Weiten <dmw@weiten.com>

SPDX-License-Identifier: Apache-2.0
