软件名称 | 软件描述 |
SmartSnippets_Studio_v1.6.3_windows.zip | Dialog开的的集成开发环境 |
DA1468x_DA15xxx_SDK_1.0.12.1078.zip | Dialog的SDK |
gcc-arm-none-eabi-7-2018-q2-update-win32.exe | GCC编译器,用来编译代码的 |
JLink_Windows_V632g.exe | JLink驱动,用于下载程序 |
Ozone_Setup_Windows_V256r_x86.exe | 用于仿真的 |
Setup_SystemView_V252a.exe | 用于仿真分析及监视数据的 |
文件夹名称 | 例程 | 例程描述 |
ble_profiles 关于Profile相关的例程 | ancs | Apple Notification Center Service (ANCS) client Demo application |
blp_sensor | Blood Pressure Profile (BLP) Demo application | |
bms | Bond Management Service Demo application | |
cscp_collector | Cycling Speed And Cadence collector Demo application | |
hogp_device | HOGP Device Demo application | |
hogp_host | HOGP Host Demo application | |
hrp_collector | Heart Rate collector Demo application | |
hrp_sensor | Heart Rate Sensor Demo application | |
htp_thermometer | Health Thermometer Profile (HTP) Demo application | |
wsp_weightscale | Weight Scale Profile Demo | |
Demos 关于广播,功耗等的一些例程 | ble_adv | BLE ADV demo application |
ble_external_host | BLE External Host Demo application | |
ble_multi_link | BLE multi-link demo application | |
peripherals_demo | Peripherals demo application | |
power_demo | Power Demo application | |
pxp_reporter | Proximity Reporter Demo application | |
Features 一些特色的例程 | ble_central | BLE central role device Demo implementation |
ble_peripheral | BLE peripheral Demo application | |
ble_suota_client | This application is a SUOTA 1.2 client implementation and allows to update SUOTA-enabled devicesover the air, using simple serial console interface. | |
ble_usbhid | Include usb device and usb dongle | |
coex_test | This application tests the COEX/Arbiter subsystem | |
extended_sleep | Deep sleep application | |
ftdf_test_phy_api | Ping-pong test program for the FTDF driver. "Bare metal" version | |
generic_winusb | The FreeRTOS_Generic_WinUSB project | |
kbscn_demo | Keyboard scanner demo | |
rf_tools_cli | RF Tools CLI application | |
suousb_loader | This is an application for Software Update over the USB CDC (SUOUSB) | |
usb_cdc | This application is an example app about how to implement USB CDC. | |
usb_cdc_smsd | This application is an example app about how to implement USB CDC and SmartMSD at the same time. | |
reference_designs | plt_fw | PLT FW reference design |
Templates 模块例程 | freertos_retarget | FreeRTOS template application with retarget |
freertos_rtt | FreeRTOS template application with SEGGER RTT |
Binaries | 存放的是生成的elf文件 | |
Include | 包含头文件路径及头文件 | |
config | 工程配置及系统配置相关的文件 | |
App | 用户应用层相关源文件(这个是我后面建的,原DEMO中没有) | |
misc | 关于内在地址的一些配置,不需要改动 | |
sdk | adapters | 存放的是系统应用层的驱动接口源文件,包括电池,i2c,uart等 |
ble | BLE协议栈相关的源文件,一般情况下不需要修改 | |
ble_service | 存放的是蓝牙服务相关的源代码 | |
bsp_include | 存放的是底层相关的一些头文件 | |
config | 存放的是配置相关的头文件,一般情况下不需要修改 | |
cpm | 存放的是系统相关的一些应用文件,一般情况下不需要修改 | |
FreeRTOS | 存放的是FreeRTOS相关的一条源文件,一般情况下不需要修改 | |
Idscripts | 链接相关的一些文件,不需要修改 | |
memory | 关于外部FLASH相关的源文件,换外部FALSH时可能要修改,目前没仔细研究 | |
osal | 系统相关的源文件,一般情况下不需要修改 | |
peripherals | 芯片外设相关的驱动,在适当的时候调用或者配合系统调用 | |
startup | 关于芯片底层的一些配置文件,暂时不需要改动 |
函数名称 : system_init 函数描述 : 系统初始化,包括时钟初始化,硬件接口初始化等 入口参数 : *pvParameters – 入口参数,系统需要,目前暂时没有用到 出口参数 : None 函数备注 : None 函数名称 : periph_init 函数描述 : 外设驱动初始化,Dmo中初始化是的灯,这里我改成了串口引脚初始化 入口参数 : None 出口参数 : None 函数备注 : None 函数名称 : main 函数描述 :主程序入口 入口参数 : None 出口参数 : None 函数备注 :包括各种初始化,建立任务,启动任务等 函数名称 : prvSetupHardware 函数描述 :硬件初始化 入口参数 : None 出口参数 : None 函数备注 : None |
以上19个函数就是central的所有逻辑应用函数,用它们可以完成基本的Central程序。为了构建自己的特有的逻辑应用,可以在此基础上添加其它逻辑应用程序,比如过滤广播包,比如加
函数简介下面对函数做一下简单的注释,以方便理解:函数名称 : format_bd_address 函数描述 : 把MAC地址转换成字符串,主要是方便调试打印用的 入口参数 : *add – 要转换的MAC地址 出口参数 : 返回转换后的字符串指针 函数备注 : None 函数名称 : format_uuid 函数描述 : 把UUID转换成字符串,主要是方便调试打印用的 入口参数 : properties – 要转换的属性值 出口参数 : 返回转换后的字符串指针 函数备注 : None 函数名称 : format_properties 函数描述 : 把参数属性转换成字符串,主要是方便调试打印用的 入口参数 : *uuid – 要转换的UUID 出口参数 : 返回转换后的字符串指针 函数备注 : None 函数名称 : format_value 函数描述 : 把参数值转换成字符串,主要是方便调试打印用的 入口参数 : length – 要转换的数据长度 *value – 要转换的值 出口参数 : 返回转换后的字符串指针 函数备注 : None 函数名称 : scan_dev_evt 函数描述 : 启动或停止扫描 入口参数 : sw – true启动扫描 false停止扫描 出口参数 : 返回转换后的字符串指针 函数备注 : None 函数名称 : handle_evt_gap_adv_report 函数描述 : 扫描到应该数据广播包的回调函数 入口参数 : *evt – 广播包或应答数据 出口参数 : None 函数备注 : 如果需要过滤广播包或应答数据包可以在该函数中处理 函数名称 : handle_evt_gap_connected 函数描述 : 连接回调函数 入口参数 : *evt – 连接相关参数 出口参数 : None 函数备注 : 如果有其它逻辑处理程序可以在该函数中调用,比如发起配对,发起握手通信等 函数名称 : handle_evt_gap_connected 函数描述 : 连接回调函数 入口参数 : *evt – 连接相关参数 出口参数 : None 函数备注 : 如果有其它逻辑处理程序可以在该函数中调用,比如启动扫描服务,发起配对,发起握手通信等 函数名称 : handle_evt_gap_disconnected 函数描述 : 断开连接回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 断开连接后需要执行的动作可以在该函数中调用,比如闪灯,重新连接等 函数名称 : handle_evt_gap_security_request 函数描述 : 配对请求回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 接收到从机发来的配对请求,需要执行的动作可以在该函数中调用,比如触发配对等 函数名称 : handle_evt_gap_pair_completed 函数描述 : 配对完成回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 配对完成后需要执行的动作可以在该函数中执行,比如熄灭相指示灯,发起相关通信等 函数名称 : handle_evt_gattc_browse_svc 函数描述 : 通过handle值扫描指定的服务 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 会扫描到指定的服务,包括character,descriptor等 函数名称 : handle_evt_gattc_browse_completed 函数描述 : 服务发现完成的回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : None 函数名称 : handle_evt_gattc_discover_desc 函数描述 : 发现特征值描述回调 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : None 函数名称 : handle_evt_gattc_discover_completed 函数描述 : 完成发现所有服务回调 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : None 函数名称 : handle_evt_gattc_read_completed 函数描述 : 读参数完成回调 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 执行读character动作,有返回值时会进入该回调函数,如果需要进行数据处理可以在该回调中调用。 函数名称 : handle_evt_gattc_write_completed 函数描述 : 写参数完成回调 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 执行完成写character动作后,会进入该回调函数,如果需要进行数据处理可以在该回调中调用。 函数名称 : handle_evt_gattc_notification 函数描述 : 接收到notify数据回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 收到notify数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。 函数名称 : handle_evt_gattc_notification 函数描述 : 接收到notify数据回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 收到notify数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。 函数名称 : handle_evt_gattc_indication 函数描述 : 接收到indication数据回调函数 入口参数 : *evt –相关参数 出口参数 : None 函数备注 : 收到indication数据后,会进入该回调函数,如果需要数据处理,请在该回调中调用。 函数名称 : ble_central_task 函数描述 : BLE任务函数,主要是启动BLE,执行相关回调任务等 入口参数 : * params –任务参数 出口参数 : None 函数备注 : None |
handle_evt_gap_connected及handle_evt_gap_disconnected,如果需要什么逻辑处理,则需要开发者自己写相应的逻辑函数,然后再结合FreeRTOS设置定时事件,建立任务,发送消息等,关于FreeRTOS的应用,后面会单独写一篇学习日志,这里暂且不详细描述。
占楼备用 本帖最后由 懒猫爱飞 于 2018-8-7 10:01 编辑序号 | 文件名称 | 文件描述 |
1 | ble_config.h | 主要是一些BLE的设置,包括角色设置,连接个数,绑定个数等 |
2 | ble_gap.c ble_gap.h | Gap层应用API,及一些BLE设置项,这两个源文件 一般不需要更改 |
3 | ble_gattc.c ble_gattc.h | Gatt层相关的API及一些设置项 |
4 | ble_gatts.c ble_gatts.h | Gatt层server相关的一些API,相关数据类型可以在ble_gatts.h查看 |
5 | ble_gatts.c ble_gatts.h | Gatt层client相关的一些API,相关数据类型可以在ble_gattc.h查看 |
6 | ble_common.c ble_common.h | BLE通用的一些API,在ble_common.h文件中可以查看HCI error code |
7 | ble_gattc_util.c ble_gattc_util.h | Gatt相关的一些API |
8 | ble_uuid.c ble_uuid.h | 关于UUID的一些操作的API |
序号 | 文件名称 | 文件描述 |
1 | hw_aes_hash.c hw_aes_hash.h | 这两个源文件是关于AES加密相关的 |
2 | hw_coex.c hw_coex.h | 关于仲裁调试机制的驱动,暂时还没有用过 |
3 | hw_cpm.c hw_cpm.h | 时钟与电源管理驱动 |
4 | hw_crypto.c hw_crypto.h | Implementation of interrupt handling for the AES/Hash and ECC Engines. |
5 | hw_dma.c hw_dma.h | DMA相关的底层驱动 |
6 | hw_ecc_curves.c hw_ecc_curves.h | ECC Engine curves parameters. |
7 | hw_ecc_ucode.c hw_ecc_ucode.h | ECC Engine microcode. |
8 | hw_ecc.c hw_ecc.h | Implementation of the ECC Engine Low Level Driver. |
9 | hw_fem_sky66112-11.c hw_fem_sky66112-11.h | FEM Driver for SKYWORKS SKY66112-11 Radio module |
10 | hw_gpadc.c hw_gpadc.h | Implementation of the GPADC Low Level Driver. |
11 | hw_gpio.c hw_gpio.h | 关于端口操作相关的API,这个可能用的比较多 |
12 | hw_hard_fault.c hw_hard_fault.h | HardFault handler. |
13 | hw_i2c.c hw_i2c.h | 硬件iic底层驱动 |
14 | hw_irgen.c hw_irgen.h | 关于红外的底层驱动 |
15 | hw_keyboard_scanner.c hw_keyboard_scanner.h | 按键扫描相关的底层驱动 |
16 | hw_otpc.c hw_otpc.h | Implementation of the OTP Controller Low Level Driver. |
17 | hw_qspi.c hw_qspi.h | Implementation of the QSPI Low Level Driver. |
18 | hw_quad.c hw_quad.h | 正交编码的驱动 |
19 | hw_rf.c hw_rf.h | 射频模块驱动 |
20 | hw_soc.c hw_soc.h | Implementation of the SOC Low Level Driver. |
21 | hw_spi.c hw_spi.h | SPI底层驱动,这个与qspi不一样,qspi是高速SPI接口 |
22 | hw_tempsens.c hw_tempsens.h | 温度传感器驱动 |
23 | hw_timer0.c hw_timer0.h | 定时器0底层驱动 |
24 | hw_timer1.c hw_timer1.h | 定时器1底层驱动 |
25 | hw_timer2.c hw_timer2.h | 定时器2底层驱动 |
26 | hw_trng.c hw_trng.h | 随机数生成器 |
27 | hw_uart.c hw_uart.h | 串口底层驱动 |
28 | hw_usb_charger.c hw_usb_charger.h | USB充电管理模块驱动 |
29 | hw_usb.c hw_usb.h | USB底层驱动,这个只是底层驱动,要实现USB传输,还要配合USB协议来定,USB协议栈用的是segger公司 的协议栈。 |
30 | hw_watchdog.c hw_watchdog.h | 看门狗相关驱动 |
31 | hw_wkup.c hw_wkup.h | Implementation of the Wakeup timer Low Level Driver. |
32 | sys_tcs.c sys_tcs.h | TCS HAndler |
在源文件hw_uart.c中添加以下头文件:
/************************************************************************************
* 函数名称 :
* 函数描述 : 发送一串数据
* 入口参数 : uart - 端口号HW_UART1/HW_UART2
* *data - 要发送的数据
* len - 要发送的数据的字节数
* 出口参数 : None
* 函数备注 : None
*************************************************************************************/
#if (DEBUG_PRINT_EN == TRUE)
// 最多可以打印128个字符
#define DEBUG_PRINT_BUF_LEN (128)
int Debug_Printf(const char *fmt, ...) { uint32 ulLen = 0; va_list ap; // 开辟缓冲区 char *pBuf = (char *)OS_MALLOC(DEBUG_PRINT_BUF_LEN); // char *pBuf = (char *)malloc(DEBUG_PRINT_BUF_LEN); va_start(ap,fmt); if(pBuf != NULL) { // 用虚拟打印函数实现 ulLen = vsprintf(pBuf,fmt,ap); va_end(ap); // 从串口输出 hw_uart_write_buffer( CONFIG_RETARGET_UART, (uint8 *)pBuf, ulLen ); // 释放存储空间 OS_FREE(pBuf); //free(pBuf); } return ulLen; }
#else
int Debug_Printf(HW_UART_ID uart,const char *fmt, ...)
{
return 0;
}
#endif /* DEBUG_PRINT_EN */
// 以下这个宏在custom_config_qspi.h中有定义,用以定义从哪个串口输出打印信息
#define CONFIG_RETARGET_UART HW_UART2
|
Debug_Printf("Systemstart...\r\n");
J 打印字符串及相关参数,用法同printf()Debug_Printf("%s: hdr->evt_code= %X\r\n",__func__,hdr->evt_code);
后记 关于其它源文件,在开发过程中一般不需要修改,如果有兴趣研究,可以结合源代码来看,这里不再一一列举。在查看源码时,还需要参考FreeRTOS的手册,BT Core5.0等文档来协助理解。在工程目录下的doc文件夹的文档也需要注意查看,还有就是Dialog官网的社区论坛,这里面也可以找到相关问题的答案。 这粘贴功能不太好用,WORD里面编辑的漂亮的格式,粘贴到里毁三观,等下把PDF文档上传到这里 本帖最后由 懒猫爱飞 于 2018-8-7 10:02 编辑引用: okhxyyo 发表于 2018-8-7 13:55 版主此文甚好
引用: 懒猫爱飞 发表于 2018-8-7 14:00
我在world中格式都整理好了,自认为看起来还比较舒服。
所以下载PDF看吧,论坛的格式整理起来太麻烦 ...
引用: jj1989 发表于 2018-8-14 09:15
这款应该是支持蓝牙5.0的吧。现在的SDK还是像以前那样凌乱吗,有没有好转。