RSL10利用安森美半导体针医疗级超低功耗技术。超低功耗之王,提供行业最低的动态和深度睡眠模式功耗,支持1.1 V至3.3 V的电压范围,固件可在线更新。支持多协议蓝牙5无线认证的系统单芯片(SoC),支持更快的无线连接,
   1、功耗,超低功耗之王蓝牙BLE SOC
RSL10在深度睡眠模式下、电压1.25 V时消耗的电流为50 nA,在0 dBm时的传输(Tx)和接收(Rx)峰值分别为8.9 mA和5.6 mA。
    2、性能
RSL10的Rx灵敏度达到-94 dBm,采用384 kB闪存,双核处理器(ARM® Cortex®-M3处理器、32位Dual-Harvard数字信号处理DSP系统),适用于各种不同传感器的GPIO、LSAD、I2C、SPI、PCM等模拟和数字接口,用户可根据需要进行编程。
   3、超微型
    RSL10采用55 nm技术,其WLCSP封装版本仅5.5平方毫米。SOC内置天线,模块封装体积最小。

A.jpg

开发板搭载JLINK
B.jpg

支持keil, ON Semiconductor IDE

4.jpg

2.jpg

ON Semiconductor IDE下载还有些问题,需要继续研究。
5.jpg

先放个APP 源码;
/* ----------------------------------------------------------------------------
  • * Copyright (c) 2017 Semiconductor Components Industries, LLC (d/b/a
  • * ON Semiconductor), All Rights Reserved
  • *
  • * This code is the property of ON Semiconductor and may not be redistributed
  • * in any form without prior written permission from ON Semiconductor.
  • * The terms of use and warranty for this code are covered by contractual
  • * agreements between ON Semiconductor and the licensee.
  • *
  • * This is Reusable Code.
  • *
  • * ----------------------------------------------------------------------------
  • * app.c
  • * - Simple application using a DIO5 input to control a DIO6 output
  • * ----------------------------------------------------------------------------
  • * $Revision: 1.11 $
  • * $Date: 2019/11/11 17:45:11 $
  • * ------------------------------------------------------------------------- */
  • #include "app.h"
  • #include <printf.h>
  • /* ----------------------------------------------------------------------------
  • * Function      : void DIO0_IRQHandler(void)
  • * ----------------------------------------------------------------------------
  • * Description   : Toggle the toggle status global flag.
  • * Inputs        : None
  • * Outputs       : None
  • * Assumptions   : None
  • * ------------------------------------------------------------------------- */
  • void DIO0_IRQHandler(void)
  • {
  •     static uint8_t ignore_next_dio_int = 0;
  •     if (ignore_next_dio_int == 1)
  •     {
  •         ignore_next_dio_int = 0;
  •     }
  •     else if (DIO_DATA->ALIAS[BUTTON_DIO] == 0)
  •     {
  •         /* Button is pressed: Ignore next interrupt.
  •          * This is required to deal with the debounce circuit limitations. */
  •         ignore_next_dio_int = 1;
  •         /* Invert toggle status */
  •         if (led_toggle_status == 1)
  •         {
  •             led_toggle_status = 0;
  •             PRINTF("LED BLINK DISABLED\n");
  •         }
  •         else
  •         {
  •             led_toggle_status = 1;
  •             PRINTF("LED BLINK ENABLED\n");
  •         }
  •     }
  • }
  • /* ----------------------------------------------------------------------------
  • * Function      : void Initialize(void)
  • * ----------------------------------------------------------------------------
  • * Description   : Initialize the system by disabling interrupts, configuring
  • *                 the required DIOs and DIO interrupt,
  • *                 updating SystemCoreClockUpdate and enabling interrupts.
  • * Inputs        : None
  • * Outputs       : None
  • * Assumptions   : None
  • * ------------------------------------------------------------------------- */
  • void Initialize(void)
  • {
  •     /* Mask all interrupts */
  •     __set_PRIMASK(PRIMASK_DISABLE_INTERRUPTS);
  •     /* Disable all existing interrupts, clearing all pending source */
  •     Sys_NVIC_DisableAllInt();
  •     Sys_NVIC_ClearAllPendingInt();
  •     /* Test DIO12 to pause the program to make it easy to re-flash */
  •     DIO->CFG[RECOVERY_DIO] = DIO_MODE_INPUT | DIO_WEAK_PULL_UP |
  •                              DIO_LPF_DISABLE | DIO_6X_DRIVE;
  •     while (DIO_DATA->ALIAS[RECOVERY_DIO] == 0);
  •     /* Setup DIO5 as a GPIO input with interrupts on transitions, DIO6 as a
  •      * GPIO output. Use the integrated debounce circuit to ensure that only a
  •      * single interrupt event occurs for each push of the pushbutton.
  •      * The debounce circuit always has to be used in combination with the
  •      * transition mode to deal with the debounce circuit limitations.
  •      * A debounce filter time of 50 ms is used. */
  •     Sys_DIO_Config(LED_DIO, DIO_MODE_GPIO_OUT_0);
  •     Sys_DIO_Config(BUTTON_DIO, DIO_MODE_GPIO_IN_0 | DIO_WEAK_PULL_UP |
  •                    DIO_LPF_DISABLE);
  •     Sys_DIO_IntConfig(0,
  •                       DIO_EVENT_TRANSITION | DIO_SRC(BUTTON_DIO) |
  •                       DIO_DEBOUNCE_ENABLE,
  •                       DIO_DEBOUNCE_SLOWCLK_DIV1024, 149);
  •     NVIC_EnableIRQ(DIO0_IRQn);
  •     printf_init();
  •     /* Unmask all interrupts */
  •     __set_PRIMASK(PRIMASK_ENABLE_INTERRUPTS);
  • }
  • /* ----------------------------------------------------------------------------
  • * Function      : int main(void)
  • * ----------------------------------------------------------------------------
  • * Description   : Initialize the system, then toggle DIO6 as controlled by
  • *                 DIO5 (press to toggle input/output).
  • * Inputs        : None
  • * Outputs       : None
  • * Assumptions   : None
  • * ------------------------------------------------------------------------- */
  • int main(void)
  • {
  •     /*Initialize global variables */
  •     led_toggle_status = 1;
  •     /* Initialize the system */
  •     Initialize();
  •     PRINTF("DEVICE INITIALIZED\n");
  •     /* Spin loop */
  •     while (1)
  •     {
  •         /* Refresh the watchdog timer */
  •         Sys_Watchdog_Refresh();
  •         /* Toggle GPIO 6 (if toggling is enabled) then wait 0.5 seconds */
  •         if (led_toggle_status == 1)
  •         {
  •             Sys_GPIO_Toggle(LED_DIO);
  •             PRINTF("LED %s\n", (DIO->CFG[LED_DIO] & 0x1 ? "ON" : "OFF"));
  •         }
  •         else
  •         {
  •             Sys_GPIO_Set_Low(LED_DIO);
  •         }
  •         Sys_Delay_ProgramROM((uint32_t)(0.5 * SystemCoreClock));
  •     }
  • }
  • 复制代码