RSL10系统级封装(RSL10 SIP)是一个完整的解决方案提供整合行业最低功耗的最简便方法低功耗蓝牙技术已成为无线应用。RSL10 SIP具有板载天线,RSL10无线电SoC,以及所有必要的无源组件集成在一个封装中,有助于最大程度地减少系统整体尺寸。已经完全符合FCC,CE和其他标准监管标准; RSL10 SIP无需额外的天线设计注意事项或RF认证。
1)主要特点
•业界最低功耗:
♦峰值Rx电流= 5.6 mA(1.25 V VBAT)
♦Rx峰值电流= 3.0 mA(3 V VBAT)
♦峰值Tx电流(0 dBm)= 8.9 mA(1.25 V VBAT)
♦峰值发射电流(0 dBm)= 4.6 mA(3 V VBAT)
•深度睡眠电流消耗(1.25 V VBAT):
♦深度睡眠,IO唤醒:50 nA
♦深度睡眠,8 kB RAM保留:300 nA
•电流消耗(3 V VBAT):
♦深度睡眠,IO唤醒:25 nA
♦深度睡眠,8 kB RAM保留:100 nA
•EEMBC ULPMark核心配置文件(3 V):1090
•EEMBC ULPMark核心配置文件(2.1 V):1360
2)高级无线:
♦
支持蓝牙5功能:LE 2兆位PHY(高速),以及向后兼容性和对早期版本的支持蓝牙低功耗规格支持FOTA(固件空中)更新
♦Rx灵敏度(蓝牙低功耗模式,1 Mbps):−93 dB
♦发射功率:−17至0 dBm
♦范围可达100米
3)其他主要特点
•
ARM®Cortex®-M3处理器,时钟频率高达48 MHz
•
电源电压范围:1.1 − 3.3 V
•384 kB闪存
•76 kB的程序存储器
•88 kB的数据存储器
下面进入正题,如何搭建开发环境。
首先打开安梅森的官方网站下载RSL10,相关资料,下见图
https://www.onsemi.cn/products/connec
tivity/wireless-rf-transceivers/rsl10
这是官网的网站,下载非常缓慢,容易出错,需要耐心。建议使用谷歌浏览器。附件有上传限制,没有办法上传。
首先下载 Bluetooth IoT Development Kit CMSIS Pack ONSemiconductor.BDK.1.15.2.pack (31699kB)
CMSIS是 ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) , Cortex-M 处理器系列的与供应商无关的硬件抽象层(英文原文为:a vendor-independent hardware abstraction layer for the Cortex-M processor series and defines generic tool interfaces--来自ARM官方定义)
下载下载直接点击,可以导入keil中。
背面的是J-link下载器,这室keil 识别KEIL信息。
这是软件实例,例程很丰富。
这是点灯
- 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 DISABLEDn");
- }
- else
- {
- led_toggle_status = 1;
- PRINTF("LED BLINK ENABLEDn");
- }
- }
- }
- /* ----------------------------------------------------------------------------
- * 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, 49);
- 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 INITIALIZEDn");
- /* 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 %sn", (DIO->CFG[LED_DIO] & 0x1 ? "ON" : "OFF"));
- }
- else
- {
- Sys_GPIO_Set_Low(LED_DIO);
- }
- Sys_Delay_ProgramROM((uint32_t)(0.5 * SystemCoreClock));
- }
- }
复制代码
然后进行Rebuild进行编译,编译OK。
keil环境下,缺少Flash FLM下载算法,导致芯片导入不成功!
下载有问题,下一遍介绍官网的下载IDE开发环境
0