abcd
abcd - 认证专家
我只是个路过的老年人~

注册于 2 年前

回答
83
文章
8
关注者
2

是不是 mqtt 的版本不一样导致的 mqtt 连接包返回失败. 我看你用 mqttx 去连接服务器时, 设置的 mqtt 的版本是 v5. 0, 但是 SDK 支持的是 v3. 1. 0.

打开串口和创建任务没有关系. 打开串口只需要初始化 IO 和 tls_uart_port_init 初始化串口以及 tls_uart_rx_callback_register 注册接收回调就行了. 任务是用来接收处理串口接收回调的消息的. 只需要一个任务就可以处理多个串口的消息.

1, 确认下是否用到了这两个头文件里的接口或者定义, 如果没用到直接删除引用头文件即可, 或者直接删除看是否能编译通过.
2, 在第一步确认的基础上, 确实用到了这两个头文件, 那需要有这两个. h 的源文件, 剩下的操作就和 stm32 用 keil 编译一样了, 在 CDK 里左边的工程处, 右键 add 这两个头文件到工程里, 在工程设置里把头文件的的路径添加上. 就可以了.

一般用来查找内存泄漏或者破坏的地方, 打开后, 正常运行时, 不会打印, 直到出现内存申请, 释放失败, 就会打印出来所有已申请且未释放的内存用来查看. 你这截图不完整, 看不出什么来.

看你发送使用的是什么, 假如是 PC 端串口工具, 工具端都是可以设置以 ASCII 格式发送, 还是以 hex 发送的. "hex 数据位置不对而且是 4 个一组" 猜测是不是跟你写的代码有关系, 接收数据放在了 uint32_t 型还是 uint8_t 型的变量里.

可以这样, 编辑代码用 vscode, 编译用 msys, 下载用串口工具. 全部在 vscode 里操作实现不了.

看下 wm_ble_server_api_demo. c, 里面实现了 server 的例子, 在这个结构体里面定义了 UUID 以及属性以及对应的回调函数, 可以根据自己的应用情况加减属性以及修改 UUID, 如果是读写属性的, 收到相关事件后会直接调用 gatt_svr_chr_demo_access_func 这个回调函数, 在里面实现自己的操作, 如果是 notify, 直接用 tls_ble_server_demo_api_send_msg 接口发送数据就可以了. image. png

image. png

image. png

1. There is currently no W861 development board available.
2. The reason for NAK prompt is that in most cases, due to unstable serial port connections, some USB to serial port boards do not support high baud rates. If this error persists, you can try reducing the download baud rate.
3. The W806 chip does not have Wi-Fi function.
4. Unable to read firmware file from device.

没有产生广播事件指的是用手机收不到设备这个广播吗? 手机端用蓝牙助手类的 APP 是可以看到这个设备广播的信息的, 名字应该是 WM-XXXX 之类的.

使用的是 W800 吗, 芯片的具体丝印是什么. 感觉跟发射功率没关系, 发射功率都是一样的设置, 要不行都不行. 发射功率的接口是 tls_ble_set_tx_power, 参数 power_type 写 11 就行, 默认 index 是 2, 对应 4dB. 我觉得可以用不行的芯片刷个标准固件执行下 AT+WSCAN 扫描指令, 看下返回结果里路由器的信号强度是什么样的, 比如离得近的路由器的信号强度能到多少.

订阅主题, demo 里有啊, 在 mqtt_demo_init 里连接 mqtt 成功后, 调用 mqtt_subscribe 接口来订阅自己的主题, 这样云端有这个主题的消息时, 会主动下发给订阅该主题的设备. 设备收到云端发来的消息时, 在循环里 mqtt_demo_loop 就会能解析到这个消息, MQTTParseMessageType, mqtt_parse_pub_topic, mqtt_parse_publish_msg, 然后做自己的处理就行了, demo 里就是收到消息后打印了出来, 并回传了一条消息.

粗略看了你的代码下, 有如下几个问题: 1, OutDQ0 和 OutDQ1 定义错误, 输出高低电平并不是通过设置上下拉来实现的, tls_gpio_cfg 设置为输出后, 还需要调用 tls_gpio_write 来设置输出高, 低电平, 另外我记得电路外部是需要加上拉电阻的, 所以这里应该配置为上拉输出; 2, 如果没有外部电阻的情况下, IpuDQ 配置为上拉, 组好还是有外部上拉电阻, 毕竟内部是个弱上拉; 3, 延时混乱, tls_os_time_delay () 接口实现的延时单位是系统的 1 个 tick, 如果 configTICK_RATE_HZ 设置的是 1000, 那就是最小延时时间只能到 1ms, 想要实现 us 级别的延时, 就需要用自习用 for 循环 + __NOP () ; 来实际测量实现了, 或者用楼上的方式试下行不行.
至于具体时序网上参考程序很多, 主要是 IO 的操作和延时弄对了就不会有大问题, 如果 IO 操作不清楚的, 可以参考 wm_gpio_demo. c 程序. 开一个帖子就行了.

The w80x chip did not consider the CAN interface in its design.

发布
问题