项目场景:
ble调试的记录:
项目场景:调试蓝牙芯片phy6212
先了解一些ble mesh的知识吧ble mesh大致介绍
一些ble mesh介绍
https://blog.youkuaiyun.com/feelinghappy/article/details/103353769
Mesh 标准规范定义了两种类型的密钥:应用程序密钥(AppKey)和网络密钥(NetKey)。 AppKeys用于保护上层传输层的通信,NetKeys用于保护网络层的通信。 两种类型的密钥在节点之间共享。 还有一个设备密钥(DevKey),它是每个节点唯一的特殊应用密钥,只有节点和配置客户端知道,并用于保护节点和配置客户端之间的通信。
应用程序密钥绑定到网络密钥。 这意味着应用程序密钥仅用于它们绑定的网络密钥的上下文中。 应用程序密钥只能绑定到单个网络密钥。 设备密钥隐式绑定到所有网络密钥。
所有蓝牙mesh网络消息的安全保障都来自网络密钥(NetKey)和应用密钥(AppKey)对消息的加密和验证。NetKey用于网络层通信。假设蓝牙mesh网络没有子网,则该mesh网络内的所有通信都使用相同的网络密钥。
问题描述:
nRF Mesh app 配网流程,
- 扫描设备,(包含 uuid 和 mac地址)
- 将设备配成为节点,添加app-key(网络层密钥),单播地址
- 对元素(element)中的模型(model)进行配置,订阅地址发布地址等。
问题:
1.这款芯片的开发步骤是怎样的?
烧录两个例程后(light 和switch)观察到实验现象
2.查看sdk代码,分析初始化和具体实现逻辑
实现at指令配网,先扒出来他的串口通信逻辑
为什么我初始化的是38400,结果是用115200的波特率呢?(待解决)
再研究各个At指令的用途
//板级配置信息
void board_yoc_init(void)
{
int ret = 0;
disableSleepInPM(1);
drv_pinmux_config(P9, UART_TX);
drv_pinmux_config(P10, UART_RX);
console_init(CONSOLE_ID, 115200, 128);
LOGI(TAG, "Build:%s,%s", __DATE__, __TIME__);
mm_init();
/* load partition */
ret = partition_init();
if (ret <= 0) {
LOGE(TAG, "partition init failed %d\n", ret);
return;
} else {
LOGI(TAG, "find %d partitions", ret);
}
extern void kv_set_cached_size(int size);
kv_set_cached_size(100);
ret = aos_kv_init("kv");
if (ret < 0) {
LOGE(TAG, "kv init failed %d\n", ret);
return;
}
#ifdef MESH_NODE_REPEAT_RESET
extern void reset_by_repeat_init(void);
reset_by_repeat_init();
#endif
extern void board_ble_init(void);
board_ble_init();
/* uService init */
utask_new_ext(&cli_task, "at&cli", cli_task_stack, 2 * 1024, cli_task_queue, QUEUE_MSG_COUNT * 2, AOS_DEFAULT_APP_PRI);
board_cli_init(&cli_task);
led_rgb_register(&led_config, 1);
if (led_dev == NULL) {
led_dev = led_open_id(DEVICE_LED_NAME, 1);
if (!led_dev) {
LOGE(TAG, "led init failed");
}
}
}
原因分析:
提示:这里填写问题的分析:
解决方案:
提示:这里填写该问题的具体解决方案: