Skip to main content

SmartBond DA14530 and DA14531

The world’s smallest and lowest power Bluetooth 5.1 System-on-Chip

DA14530和DA15531图

The SmartBond TINY™ DA14530 and DA14531 are the Bluetooth® low energy solution to power the next 1 billion IoT devices

SmartBond TINY™, the world’s smallest and lowest power Bluetooth 5.1 System-on-Chip, brings down the cost of adding Bluetooth low energy in any system to $0.50 in high volumes.

This awesome combination takes mobile connectivity to places previously out of reach, triggering a wave of a billion IoT devices, all with SmartBond TINY at the heart.

通过Smartbond的高水平集成实现了低系统成本:通过添加6个小外部循环,晶体和电源,可以实现完整的蓝牙低能量系统。为了降低进入屏障,SmartBond微小也将在易于使用的微型模块中提供所有所需的组件,使蓝牙低能量添加到任何应用中的任何应用程序。

Record low hibernation and active power consumption ensure long operating and shelf life with even the tiniest, disposable batteries. Based on a powerful 32-bit arm Cortex M0+ with integrated memories and a complete set of analog and digital peripherals, SmartBond TINY is extremely power efficient, delivering a record score of 18300 on the latest EEMBC benchmark for IoT connectivity, IoTMark™. Available in a tiny 2.0 x 1.7 mm package, the DA14531 is half the size of its predecessor, or any offering from other leading manufacturers. And it is complemented by a flexible SDK supporting major compilers such as Keil and GCC out of the box. The DA14530 is pin for pin compatible with DA14531 in a 2.2x3.0mm FCGQFN24 package and provides cost savings by operating from an internal LDO, eliminating the cost of a DC-DC inductor.

Benefits

Future proof, compliant with Bluetooth 5.1 (core)

Optimized for disposable products in connected medical, connected consumer

  • Designed to work with disposable, even printed batteries
  • 适用于最小容量电池,<< 30MAH
  • Supports multiple years of shelf life
  • Inrush current can be limited for disposable batteries with high internal resistance
  • Package design allows for low cost manufacturing with smallest possible footprint

Only requiring a single 32MHz crystal

In bypass mode no DC-DC inductor required

No boost converter required when working with 1.5V batteries

产品ion Line Tool for accelerated production ramp up, resulting in faster time to market and shortest production test time per device

雷竞技安卓下载

连接的消费者:
Beacons, Smart labels, Remote controls, Proximity tags, Connected watches, Stylus pens, Mouse, Toys, Low power sensors, Bluetooth LE add on “BLE pipe” to existing applications

Connected medical:
Connected injectors, Inhalers, Glucose monitors, Smart patches, Blood pressure meters, Thermometers

汽车:
轮胎压力,监测系统和低功耗无线传感器

Package

FCGQFN24, 2.2x3x0.4

WLCSP17,1.7x2.05x0.5

Every quarter, we bundle up the best technical info on our products, software development topics, trainings, events and deliver it to your inbox.

Sign me up

Stay connected

通过我们的全球销售办事处直接与我们联系,或联系我们的全球经销商和代表之一。

Inquiries Distributors and Representatives Register for newsletters
Datasheet
Name Date 版本
AN-B-088: DA145xx Flash Selector Guide(163.48 KB) 15/02/2021 1.2
DA14530 datasheet(4.64 MB) 09/03/2021 3..2
DA14531 Datasheet(4.39 MB) 09/03/2021 3..3
产品Brief
Name Date 版本
DA14531 SmartBond TINY Product Brief(1.66 MB) 04/11/2019 1.0
DA14531 Smartbond Tiny Product Brief (Chinese)(1.76 MB) 04/11/2019 1.0
SDK.
Name Date 版本
DA14531和DA14585 / 6的SDK6.0.14.11(9.39 MB) (Registered users only) 29/04/2020 SDK.6.0.14.1114
SDK._6.0.14.1114_hotfix_001(6.31 MB) (Registered users only) 15/07/2020 SDK._6.0.14.1114_hotfix_001
SW-B-002 DA14531 SDK Release Notes v.6.0.14.1114(315.84 KB) (Registered users only) 29/04/2020 SDK.6.0.14.1114
SDK.User Manual
Name Date 版本
UM-B-117: DA14531 Getting Started with the Pro Development Kit (HTML)(25.09 KB) 3.0/03/2020 1.2
UM-B-117:[中文] DA14531使用Pro开发套件(HTML)入门(25.09 KB) 3.0/03/2020 1.2
UM-B-118: DA14585-DA14531 SDK Porting Guide(25.09 KB) 29/04/2020 1.2
UM-B-119: DA14585-DA14531 SW Platform Reference(25.09 KB) 10/04/2020 2.0
UM-B-143 Dialog External Processor Interface(6.15 MB) 11/12/2020 0.2
UM-B-146-DA14585-DA14531-HCI Commands(778.48 KB) 10/11/2020 1.0
Development Tools
Name Date 版本
对话Smartbond Flash Programmer for Windows OS(4.57 MB) 12/04/2021 1.0.6
对话Smartbond Flash Programmer for Linux OS(8.15 KB) 12/04/2021 1.0.6
对话Smartbond Flash Programmer for mac OS(622.12 KB) 12/04/2021 1.0.6
SmartSnippets Studio Release Notes(304.81 KB) 04/02/2021 2.0.16
SmartSnippets Studio V2.0.16 for Linux OS(872.03 MB) 04/02/2021 2.0.16
SmartSnippets Studio V2.0.16 for macOS(497.78 MB) 04/02/2021 2.0.16
SmartSnippets Studio V2.0.16 for Windows OS(707.61 MB) 04/02/2021 2.0.16
SmartSnippets Toolbox Release Notes(461.34 KB) 04/02/2021 5.0.16
SmartSnippets Toolbox V5.0.16 for for Linux OS(163.27 MB) 04/02/2021 5.0.16
SmartSnippets Toolbox V5.0.16 for Windows OS(123.77 MB) 04/02/2021 5.0.16
UM-B-057 SmartSnippets Studio User Manual(3.07 MB) 04/02/2021 2.0.16
UM-B-083 SmartSnippets Toolbox User Manual (HTML)(25.09 KB) 04/02/2021 5.0.16
UM-B-138: Programming flash User Manual (HTML)(25.09 KB) 24/03/2020 1.0
Software Applications & Examples
Name Date 版本
对话Serial Port Service (DSPS)(7.58 KB)
SmartBond™ - 在命令中无附带(7.58 KB)
社会的Distancing Tags(25.09 KB)
Software Application & Examples: Setup using Python Script
Name Date 版本
Software Example Setup Using Python Link Script(25.09 KB) 04/11/2019 1.0
Software Applications & Examples: Peripheral Drivers/Adapters
Name Date 版本
DA14531 Timer1 Software Example(1.69 MB) 04/11/2019 1.0
DA14531-DA14585-586 Simple Button(25.09 KB) 22/01/2021 1.2
DA14531-DA14585-586 SPI DMA Example(3.74 MB) 04/11/2019 1.0
DA14585/-DA14586/-DA14531_Segger_RTT_Example(25.09 KB) 22/01/2021 1.1
Software Applications & Examples: Bluetooth
Name Date 版本
Clone Github example Repository(25.09 KB)
DA14531 BLE Eddystone beacon with Hibernation Or Deep Sleep Mode(25.09 KB) 15/02/2021 1.2
DA14531通过STM32引导无附带(25.09 KB) 11/01/2021 1.0
DA14531配置休眠和状态感知休眠模式(25.09 KB) 02/02/2021 1.2
DA14531 DA14585和DA14586 IBEACON(25.09 KB) 05/02/2021 1.1
DA14531 DA14585-586 BLE Button Wakeup(25.09 KB) 11/02/2021 1.1
DA14531 Power optimized Dynamic advertising(25.09 KB) 23./10/2020 1.0
DA14531-DA14585-586 BLE Multirole Example(25.09 KB) 12/04/2021 1.2
DA14531-DA14585-586 BLE通知按钮唤醒(25.09 KB) 12/02/2021 1.1
DA14531-DA14585-586 Changing advertising parameters using GPIO interrupts and/or timers(25.09 KB) 12/02/2021 1.1
DA14531-DA14585-586 Measuring Temperature(25.09 KB) 17/02/2021 1.2
DA14531-DA14585-586 Reading I2C Accelerometer BLE(25.09 KB) 15/02/2021 1.5
DA14531-DA14585-586 Simple beacon Example(2.26 MB) 04/11/2019 1.0
DA14531-DA14585-586:: Different ways of handling RESET mechanism(25.09 KB) 15/02/2021 1.2
da14531-da14585-586_hid gamepad demo(25.09 KB) 11/02/2021 1.1
DA14531-DA14585/586 Peripheral BLE- iOS MIDI over GATT profile(25.09 KB) 23./11/2020 1.0
DA14531-DA14585/586服务数据标(651.33 KB) 15/05/2020 1.0
DA14585 DA14586 DA14531 Scan Request Track(25.09 KB) 15/02/2021 1.1
DA14585-DA14531 Dynamic DLE and L2CAP Packet size Optimization(25.09 KB) 15/02/2021 1.2
DA14585 / DA14586 - DA14531多级示例(2.16 MB) 15/05/2020 1.0
DA14585/DA14586/DA14531 Central Implementation(25.09 KB) 05/02/2021 1.1
接口Mikroelektronika压力5点击Board™,使用DA145xx(25.09 KB) 17/03/2021 1.1
Quuppa Tag Emu example on DA14531(25.09 KB) 18/12/2020 1.0
STM32 SUOTA via DA14531(25.09 KB) 11/01/2021 1.1
硬件Design Examples
Name Date 版本
DA14531 QFN/Boost Hardware Design Example(505.61 KB) 29/07/2020 1.0
DA14531 QFN/Buck Hardware Design Example(487.49 KB) 29/07/2020 1.0
DA14531 QFN/BypassHardware Design Example(484.73 KB) 29/07/2020 1.0
DA14531 WLCSP /Boost Hardware Design Example(527.56 KB) 15/09/2020 1.0
DA14531 WLCSP/ Buck Hardware Design Example(511.04 KB) 15/09/2020 1.0
DA14531 WLCSP/Bypass Hardware Design Example(505.63 KB) 15/09/2020 1.0
硬件design example guide(25.09 KB) 15/09/2020 1.1
Mobile Apps
Name Date 版本
对话SUOTA - Source Code - Android(3.03 MB) (Registered users only) 04/05/2020 3..190.18
对话SUOTA - Source Code - iOS(4.11 MB) (Registered users only) 04/05/2020 3..200.14
产品ion Line Tool Kit
Name Date 版本
生产线工具文件(7.58 KB)
Application Notes
Name Date 版本
AN-B-027: Designing Printed Antennas for Bluetooth Smart(1.64 MB) 25/06/2020 2.3
AN-B-027:设计印刷天线:DXF文件(12.38 kB) 04/04/2017 1.0
AN-B-072: DA14531 Booting from OTP and Serial Interfaces(1.94 MB) 04/01/2021 1.5
AN-B-073: DA14531 Filter for Spurious Emissions Reduction(660.23 KB) 04/11/2019 1.2
AN-B-075: DA14531 Hardware Guidelines(2.4 MB) 23./10/2020 1.4
AN-B-077: DA14531 Bluetooth Direct Test Mode(1.88 MB) 17/03/2020 1.2
White Papers
Name Date 版本
Implementing Bluetooth LE Data Pumps(514.18 KB) 04/11/2019 Rev A
Implementing Bluetooth LE Data Pumps (Chinese)(613.3 KB) 04/11/2019 1.0
教程
Name Date 版本
BLE Advertising Tutorial (HTML)(25.09 KB) 25/10/2019 1.0
BLE Security on DA145x devices(25.09 KB) 28/04/2020 2.0
BLE SUOTA Update on DA14585/DA14586 and DA14531 Devices(25.09 KB) 03/09/2020 2.1
在DA14531和DA14585 / DA14586设备上创建自定义GATT配置文件特性(25.09 KB) 01/04/2020 2.0
DA14531 Sleep Mode Tutorial (HTML)(25.09 KB) 08/04/2021 1.3
DA14531_FAQs (HTML)(25.09 KB) 18/01/2020 1.0
Getting Started with SDK6 (HTML)(25.09 KB) 12/03/2021 2.0
使用SDK6外设驱动程序(HTML)(25.09 KB) 05/03/2021 1.6
硬件Design Collateral
Name Date 版本
DA14531 17-XFBGA, WLCSP Symbols & footprints(25.09 KB) 13/03/2020 1.0
DA14531 FCGQFN24符号和脚印(25.09 KB) 13/03/2020 1.0
已知的限制列表
Name Date 版本
da14531勘误表数据表(182.04 KB) 01/11/2019 1.0
FCC,ETSI认证
Name Date 版本
DA14531 EN 300 328认证测试报告(WLCSP)(1.2 MB) 04/11/2019 1.0
DA14531 EN 300 328 certification test report (QFN)(1.21 MB) 04/11/2019 1.0
BT SIG certifications
Name Date 版本
DA14530: Profile Subsystem(7.58 KB) 25/08/2020 D051783
DA14531: QDID Controller Subsystem(7.58 KB) 08/08/2019 D047135
DA14531:QDID主机子系统(7.58 KB) 27/08/2019 D047136
DA14531: QDID Profile Subsystem(7.58 KB) 3.1/10/2019 D048316
RoHS和Reach.
Name Date 版本
DA14531达到宣言(163.83 KB) 04/11/2019 1.0
DA14531 RoHS declaration(163.83 KB) 04/11/2019 1.0
Previous Software Releases
Name Date 版本
SmartSnippets Toolbox V5.0.12 for Windows OS(1 byte) 14/03/2020 5.0.12
Archive
Name Date 版本
对话SUOTA - Source Code - Android(2.86 MB) (Registered users only) 24/10/2019 3..190.16
对话SUOTA - Source Code - iOS(4.09 MB) (Registered users only) 29/10/2019 3..200.12
SDK._6.0.12.1020.2 for DA14531 and DA14585/6 [Including SDK APIs Documentation](9.18 MB) (Registered users only) 12/12/2019 6.0.12.1020.2
SDK._6.0.12.1020.2_hotfix_001(90.61 KB) (Registered users only) 06/03/2020 6.0.12.1020.2
Linux操作系统的SmartSnippets Studio V2.0.10(810.84 MB) 02/10/2019 2.0.10
Windows操作系统的SmartSnippets Studio V2.0.10(575.68 MB) 02/10/2019 2.0.10
SmartSnippets Studio V2.0.12 for Linux OS(1 byte) 14/03/2020 2.0.12
SmartSnippets Studio V2.0.12 for Windows OS(1 byte) 14/03/2020 2.0.12
SmartSnippets Studio V2.0.14 for Linux OS(870.09 MB) 28/05/2020 2.0.14
SmartSnippets Studio V2.0.14 for macOS(496.8 MB) 28/05/2020 2.0.14
SmartSnippets Studio V2.0.14 for Windows OS(705.78 MB) 28/05/2020 2.0.14
SmartSnippets Toolbox V5.0.10 for for Linux OS(205.02 MB) 02/10/2019 5.0.10
SmartSnippets Toolbox V5.0.10 for Windows OS(137.45 MB) 02/10/2019 5.0.10
SmartSnippets Toolbox V5.0.12 for for Linux OS(1 byte) 14/03/2020 5.0.12
SmartSnippets Toolbox V5.0.14 for for Linux OS(162.73 MB) 28/05/2020 5.0.14
SmartSnippets Toolbox V5.0.14 for Windows OS(123.2 MB) 28/05/2020 5.0.14
SW-B-002 DA14531 SDK Release Notes v.6.0.12.1020.2(179.09 KB) 12/12/2019 6.0.12.1020.2

Development Kits and Reference Designs

基于DA14531的硬件开发套件
Development Kit – USB
开发套件 - 亲
SmartBond Wireless Ranging SDK
Video thumbnail, click to open and play

DA14531 product overview video

Module Key features
DA14531 / SmartBond TINY Module
  • Bluetooth 5.1 core qualified
  • Integrated antenna
  • 全球认证
  • Cortex-M0 + @ 16MHz
  • IoTMark™-BLE score of 18300
  • 23..75uA/MHz MCU current
  • 记忆: 48kB RAM, 32kB OTP &1Mb FLASH
  • 1.8-3.3V供电范围
  • +2.2dBM max output power
  • -93dBm sensitivity
  • Rx current 2mA at 3V
  • Tx current 4mA at 3V at 0dBm
  • Interfaces: 2xUART, SPI, I2C
  • 4-channel 10-bit ADC
  • 8 GPIO
  • Built-in temperature sensor
  • Operating temperature: -40°C to +85°C
  • 尺寸:12.5x14.5x2.8 mm
现在购买的Digikey
现在购买的Avnet
DA16600模块
  • Low Power Wi-Fi
  • Low Power BLE
  • Ultra Low Power
  • Superior Range
Contact us
DA14531 BDE-BLEM301
  • 蓝牙5.1合格(蓝牙:D050903)
  • FCC / CE / RoHS认证
  • Integrated high efficiency Antenna
  • Supports up to 3 BLE connections
  • 16 MHz 32-bit Arm® Cortex® M0+
  • 回忆:1Mbit Flash,48KB RAM,144KB ROM,32KB OTP
  • Rx current 2mA at 3V
  • Tx current 4mA at 3V at 0dBm
  • 1.8睡眠睡眠,所有RAM保留
  • Programmable Tx power from -19dBm to +2.2 dBm
  • -93 DBM接收器灵敏度
  • 具有3个通道的正交解码器
  • 4 channel 11-bit ENOB ADC
  • 2timers with PWM capabilities
  • 实时时钟
  • 内置温度传感器
  • 接口:9 GPIOS,SPI,2xuart,I2C
  • Operation: 1.8V - 3.3V, -40°C to +85°C
  • Dimensions: 12.5x14.5x2.1 mm
  • Compatible with Dialog DA14531MOD
Contact your local对话sales representativeor email BDE:info@bdecomm.com
DA14531 Hongjia HJ-531IMF
  • 尺寸:5 x 4.75 x 1.3mm
  • 包装:LGA25
  • GPIOS:12
  • Supply voltage: 1.1V-3.6V
  • tx <3.5ma;rx <2.2 ma
  • Built-in high-performance antenna (External antenna can also be used)
  • On-board antenna range: 10-20m; External antenna range: 30-80m
  • Support BLE 5.1, support WeChat, MiSDK and user develop
  • Built-in 1Mb FLASH, support OTA, Store user data
  • Operating temperature: - -40℃ to +85℃
立即购买
DA14531 Honjia HJ-131imh
  • 尺寸:4 x 4 x 1.3mm
  • Built-in high-performance antenna (External antenna can also be used)
  • 包装:LGA17
  • GPIOS:6
  • Supply voltage: 1.1V-3.6V
  • tx <3.5ma;rx <2.2 ma
  • On-board antenna range: 10-20m; External antenna range: 30-80m
  • Support BLE 5.1, support WeChat, MiSDK and user develop
  • Built-in 1Mb FLASH, support OTA, Store user data
立即购买

Buy now

产品 Shop
DA14531-00000OG2 WLCSP17 package Mouser Digikey
DA14531-00000FX2 FCGQFN24 package Avnet US Mouser Digikey
DA14531-00FXDEVKT-P Mouser Digikey
DA14531-00OGDB-P. Mouser Digikey
DA14531-00FXDB-P Mouser Digikey
DA14531-00FXDEVKT-U Mouser Digikey
回到结果

1 month ago

multirole example send data

Posted by本杰明Du135分 12 replies
0 upvotes

Hi Dialog,

In short, my question is how to send data to slaves inMultiroleexample.

让我解释一下我的问题:

I useDA14531-DA14585 586_Multirole_Example to connect with multi slaves (I useble_app_profile示例),我可以连接多个从站和主设备(Multirole) can receive data from slaves,but I don't know how to send data to slave, I use iPad to connect the slave(ble_app_profile示例),从而可以接收数据。

I tested the following inuser_catch_rest_hndlCallback, I hope if there is data received, then I will send data to slave, but I can received data from slave, while slave can not receive data.

struct gattc_write_cmd *wr_char = KE_MSG_ALLOC_DYN(GATTC_WRITE_CMD,
dest_id, src_id,
gattc_write_cmd, sizeof(struct gattc_write_cmd));

// Offset
wr_char->offset = 0x0000;
// cursor always 0
wr_char->cursor = 0x0000;
// Write Type
wr_char->operation = GATTC_WRITE;
//特征值属性句柄
WR_CHAR->手柄= 1;
// Value Length
wr_char->length = 3;
// Auto Execute
wr_char->auto_execute = true;
// Value


int8_t AA[2];
AA[0]=9;
AA[1]=5;

memcpy(&wr_char->value[0],AA, 2);

// Send the message
ke_msg_send(wr_char);

Thanks

本杰明

1 month ago

PM_Dialog

Hi BenjaminDu,

Thanks for your question. You can use the BLE notifications. Please check theDA14585/DA14586/DA14531 Central Implementationthat demonstrates how to perform GATT reads/writes as a Central.

In the user_ble_gatt.c source file, you will find the user_ble_gatt_write(). That function performs a gatt write. You should send a GATTC_WRITE_CMD command to the stack.

Thanks, PM_Dialog

1 month ago

本杰明Du 135分

嗨对话框,

Thanks so much for your quick answer.

I finduser_ble_gatt_write()与上面使用的功能类似,无论如何,我测试了不同参数的函数,但仍然无法在从站中接收数据。

您是否可以帮助举例说明如何使用此功能的参数?从图片显示,如果函数可以发送相同的数据,则从闪烁从闪烁的数据显示,我认为它可以是一个非常好的起点,我将能够使用这个功能。

再次感谢.

本杰明

附件 尺寸
1.jpg 157.96 KB
2.jpg 159.6 KB.
3..jpg 168.29 KB.

1 month ago

本杰明Du 135分

Hi Dialog,

Can you give me a reply?

Thanks a lot

本杰明

1 month ago

PM_Dialog

Hi Benjamin,

Let me check this and I'll get back to you.

Thanks, PM_Dialog

1 month ago

本杰明Du 135分

Hi Dialog,

非常感谢您的回复,我还尝试了这些天的许多参数,但仍然无法获得好的结果,

so I hope there could be an answer from you.

再次感谢

本杰明

1 month ago

本杰明Du 135分

Hi Dialog,

Even an example will be very help, hope you can help.

Thanks a lot

本杰明

4周前

PM_Dialog

Hi Benjamin,

为延迟道歉。快速问题:您希望从间隙中央设备写入哪种服务?是定制服务吗?

Can you please share how the user_ble_gatt_write() is called?

Thanks, PM_Dialog

4周前

本杰明Du 135分

嗨对话框,

非常感谢您的回复。

I calleduser_ble_gatt_write()在功能中user_catch_rest_hndl().

following is part of the code I used to do the calling.

570
571案例gattc_event_ind:
572 {
573
574 //following add by Benjamin
575 INT8_T AA [2];
576 AA[0]=9;
577 AA[1]=5;
578
579 user_ble_gatt_write(gattc_write_cmd,conn_idx,svc1_idx_led_state_val,aa,sizeof(aa));
580
581
582 //following two lines output received data.
583结构gattc_event_ind const * msg_param =(struct gattc_event_ind const *)(param);
584 arch_printf("<%d>\t",msg_param->value[0]);
585 //above added by Benjamin
586
587 }break;
588
589 case GAPM_CMP_EVT:
590 {

Thanks

本杰明

4周前

本杰明Du 135分

Hi Dialog,

What's the difference between different services? do you mean in custom service I can not do the calling?

My question is if I can do the right calling and the slave can receive, anywhere is OK.

Thanks

本杰明

3.weeks ago

本杰明Du 135分

Hi Dialog,

Any more information need me to add?

Thanks

本杰明.

accepted answer!

3.weeks ago

PM_Dialog

Hi BenjaminDu,

请从中央实施SW示例检查Handle_svc_ind()。当收到GattC_SDP_SVC_ind时,Handle_svc_ind(con_idx,disc_svc);在user_catch_rest_hndl()中调用。gattc_sdp_svc_ind意味着服务发现表示已找到服务,因此在找到新服务后,触发句柄_svc_ind()。如果在HANDER_SVC_IND()中检查代码,则会看到它发现BAS(ENABLE_BAS)和IAS服务(ENABLE_IAS)发现。服务发现后,您可以按中心设备上的按钮。这将写入警报服务,并开始在邻近记者上闪烁LED。如果正确发送,您还应该看到终端的写入。

So, when the button is pressed, then the user_ble_gatt_write() is called in order to write to the IAS.

In the case of the custom service (SVC1_IDX_LED_STATE_VAL), you should follow the same procedure. Discover the custom service in the handle_svc_ind() and then perform a GATT write to the correct attribute handle.

Thanks, PM_Dialog

2个星期前

本杰明Du 135分

Hi Dialog,

Thanks a lot for your answer and this is very helpful.

本杰明