CH573作为从机,BLE UART例程串口收发问题

按照CH573的ble-uart例程,将uart3的收发数据改为了uart0,uart1打印没改变。

①连接手机app发送数据,发hex类型串口收到的内容一致,发送字符就不一致,是什么原因呢。(如:? 发:01,收:01? 发:123, 收:313233);

②uart1只能接收手机发送的数据,却不能发送数据到手机端,是否哪里配置不正确?

③app打开notif接收数据,啥也没有。手机给573发送数据后,如何知道573收到数据是否反馈给手机端。

④573接收SPI的数据会自动通过蓝牙发送到手机端吗。

⑤自定义功能函数在主函数中跑蓝牙就会搜不到,串口却显示蓝牙处于Advertising..,disconnect reason:3e

  1. 这和串口打印有关,你打印的是16进制,字符1对应的16进制就是0x31

  2. uart1只是用于打印,

  3. BLE UART 例程的逻辑是将串口3收到的数据通过蓝牙发送至主机(app),并不会主动发数据,如果手机需要看反馈,需要再收到数据后调用notify发送数据,

  4. 接收spi数据并不会通过蓝牙发送至主机,需要程序中调用notify函数,

  5. while中需要一直查询任务,不可以添加耗时过长的程序,会影响蓝牙功能,可以用tmos任务实现。


@TECH_Hy感谢回答,调用notify具体哪个函数呢?用tmos实现任务是需要注册一个新的任务呢还是在其他任务中添加Evt事件也可以?手机app发送指令控制573 SPI外设参考哪个例程好一些呢?


  noti.len = read_length;
                    noti.pValue = GATT_bm_alloc(peripheralConnList.connHandle, ATT_HANDLE_VALUE_NOTI, noti.len, NULL, 0);
                    if(noti.pValue != NULL)
                    {
                        tmos_memcpy(noti.pValue, to_test_buffer, noti.len);
                        result = ble_uart_notify(peripheralConnList.connHandle, &noti, 0);
                        if(result != SUCCESS)
                        {
                            PRINT("R1:%02x\r\n", result);
                            send_to_ble_state = SEND_TO_BLE_SEND_FAILED;
                            GATT_bm_free((gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI);
                            tmos_start_task(Peripheral_TaskID, UART_TO_BLE_SEND_EVT, 2);
                        }

可以自己重新注册一个taskid,也可以在例程原有的上面添加,

spi可参考evt中SPI例程。


只有登录才能回复,可以选择微信账号登录