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 源码;
  1. /* ----------------------------------------------------------------------------
  2. * Copyright (c) 2017 Semiconductor Components Industries, LLC (d/b/a
  3. * ON Semiconductor), All Rights Reserved
  4. *
  5. * This code is the property of ON Semiconductor and may not be redistributed
  6. * in any form without prior written permission from ON Semiconductor.
  7. * The terms of use and warranty for this code are covered by contractual
  8. * agreements between ON Semiconductor and the licensee.
  9. *
  10. * This is Reusable Code.
  11. *
  12. * ----------------------------------------------------------------------------
  13. * app.c
  14. * - Simple application using a DIO5 input to control a DIO6 output
  15. * ----------------------------------------------------------------------------
  16. * $Revision: 1.11 $
  17. * $Date: 2019/11/11 17:45:11 $
  18. * ------------------------------------------------------------------------- */
  19. #include "app.h"
  20. #include <printf.h>
  21. /* ----------------------------------------------------------------------------
  22. * Function      : void DIO0_IRQHandler(void)
  23. * ----------------------------------------------------------------------------
  24. * Description   : Toggle the toggle status global flag.
  25. * Inputs        : None
  26. * Outputs       : None
  27. * Assumptions   : None
  28. * ------------------------------------------------------------------------- */
  29. void DIO0_IRQHandler(void)
  30. {
  31.     static uint8_t ignore_next_dio_int = 0;
  32.     if (ignore_next_dio_int == 1)
  33.     {
  34.         ignore_next_dio_int = 0;
  35.     }
  36.     else if (DIO_DATA->ALIAS[BUTTON_DIO] == 0)
  37.     {
  38.         /* Button is pressed: Ignore next interrupt.
  39.          * This is required to deal with the debounce circuit limitations. */
  40.         ignore_next_dio_int = 1;
  41.         /* Invert toggle status */
  42.         if (led_toggle_status == 1)
  43.         {
  44.             led_toggle_status = 0;
  45.             PRINTF("LED BLINK DISABLED\n");
  46.         }
  47.         else
  48.         {
  49.             led_toggle_status = 1;
  50.             PRINTF("LED BLINK ENABLED\n");
  51.         }
  52.     }
  53. }
  54. /* ----------------------------------------------------------------------------
  55. * Function      : void Initialize(void)
  56. * ----------------------------------------------------------------------------
  57. * Description   : Initialize the system by disabling interrupts, configuring
  58. *                 the required DIOs and DIO interrupt,
  59. *                 updating SystemCoreClockUpdate and enabling interrupts.
  60. * Inputs        : None
  61. * Outputs       : None
  62. * Assumptions   : None
  63. * ------------------------------------------------------------------------- */
  64. void Initialize(void)
  65. {
  66.     /* Mask all interrupts */
  67.     __set_PRIMASK(PRIMASK_DISABLE_INTERRUPTS);
  68.     /* Disable all existing interrupts, clearing all pending source */
  69.     Sys_NVIC_DisableAllInt();
  70.     Sys_NVIC_ClearAllPendingInt();
  71.     /* Test DIO12 to pause the program to make it easy to re-flash */
  72.     DIO->CFG[RECOVERY_DIO] = DIO_MODE_INPUT | DIO_WEAK_PULL_UP |
  73.                              DIO_LPF_DISABLE | DIO_6X_DRIVE;
  74.     while (DIO_DATA->ALIAS[RECOVERY_DIO] == 0);
  75.     /* Setup DIO5 as a GPIO input with interrupts on transitions, DIO6 as a
  76.      * GPIO output. Use the integrated debounce circuit to ensure that only a
  77.      * single interrupt event occurs for each push of the pushbutton.
  78.      * The debounce circuit always has to be used in combination with the
  79.      * transition mode to deal with the debounce circuit limitations.
  80.      * A debounce filter time of 50 ms is used. */
  81.     Sys_DIO_Config(LED_DIO, DIO_MODE_GPIO_OUT_0);
  82.     Sys_DIO_Config(BUTTON_DIO, DIO_MODE_GPIO_IN_0 | DIO_WEAK_PULL_UP |
  83.                    DIO_LPF_DISABLE);
  84.     Sys_DIO_IntConfig(0,
  85.                       DIO_EVENT_TRANSITION | DIO_SRC(BUTTON_DIO) |
  86.                       DIO_DEBOUNCE_ENABLE,
  87.                       DIO_DEBOUNCE_SLOWCLK_DIV1024, 149);
  88.     NVIC_EnableIRQ(DIO0_IRQn);
  89.     printf_init();
  90.     /* Unmask all interrupts */
  91.     __set_PRIMASK(PRIMASK_ENABLE_INTERRUPTS);
  92. }
  93. /* ----------------------------------------------------------------------------
  94. * Function      : int main(void)
  95. * ----------------------------------------------------------------------------
  96. * Description   : Initialize the system, then toggle DIO6 as controlled by
  97. *                 DIO5 (press to toggle input/output).
  98. * Inputs        : None
  99. * Outputs       : None
  100. * Assumptions   : None
  101. * ------------------------------------------------------------------------- */
  102. int main(void)
  103. {
  104.     /*Initialize global variables */
  105.     led_toggle_status = 1;
  106.     /* Initialize the system */
  107.     Initialize();
  108.     PRINTF("DEVICE INITIALIZED\n");
  109.     /* Spin loop */
  110.     while (1)
  111.     {
  112.         /* Refresh the watchdog timer */
  113.         Sys_Watchdog_Refresh();
  114.         /* Toggle GPIO 6 (if toggling is enabled) then wait 0.5 seconds */
  115.         if (led_toggle_status == 1)
  116.         {
  117.             Sys_GPIO_Toggle(LED_DIO);
  118.             PRINTF("LED %s\n", (DIO->CFG[LED_DIO] & 0x1 ? "ON" : "OFF"));
  119.         }
  120.         else
  121.         {
  122.             Sys_GPIO_Set_Low(LED_DIO);
  123.         }
  124.         Sys_Delay_ProgramROM((uint32_t)(0.5 * SystemCoreClock));
  125.     }
  126. }