DA14531

    技术2024-10-30  24

    531DSPS工程数据发送链条:

    uart -> 531 -> ble -> phone

    dsps工程的数据发送链条,主要包含两块:串口接收流程和BLE发送流程

    简单的描述即是:

    串口接收流程。负责将数据不断从uart dma中取出,存进链表;会不断通过 malloc 申请堆空间

    BLE发送流程。负责不断弹出链表节点,将其数据通过BLE发送出去

    串口接收流程

    dma_uart_sps_init:串口初始化。

    串口硬件初始化(dma的方式):uart_initialize注册串口接收函数:dma_uart_rx_callback

    dma_uart_rx_activate:使能串口接收。

    创建链表 dma_uart_allocate_rx_buffer,用于持续接收串口数据使能串口接收中断:dma_uart_read

    dma_uart_rx_callback:串口接收回调函数

    将数据推进链表保存:co_list_push_back

    BLE 发送流程

    user_on_ble_powered:位于main函数的while(1)中,当有蓝牙事件(或其它消息)时都会被调用。可以在此处判断uart接收缓冲是否有数据,并作BLE数据发送处理

    user_dma_uart_to_ble: 判断是否有串口接收数据,有则发消息出来:

    弹出链表第一个节点:co_list_pop_front,保存在:dma_uart.p_rx_ready_active获得 dma_uart.p_rx_ready_active 的参数的指针,以给出待发送数据的长度:req->length = dma_uart.p_rx_ready_active->param_len;发送 SPS_SERVER_DATA_TX_REQ 消息 ke_msg_send(req);

    协议栈接收到 SPS_SERVER_DATA_TX_REQ 消息之后,会给到应用层一个回应,并回调:user_dma_uart_to_ble_confirm:

    若 success 为 true,说明协议栈还有能力接收应用层发送蓝牙数据的请求,于是继续调用 user_dma_uart_to_ble

    未完待续。。。

    Processed: 0.009, SQL: 9