首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > Wireless >

有关 CSR 的bc417中的SPP的数据流控有关问题

2013-07-16 
有关 CSR 的bc417中的SPP的数据流控问题本帖最后由 adzqx2008 于 2013-05-14 15:46:09 编辑最近转向了蓝牙

有关 CSR 的bc417中的SPP的数据流控问题
本帖最后由 adzqx2008 于 2013-05-14 15:46:09 编辑 最近转向了蓝牙虚拟机编程,利用bluelab对BC417芯片进行编程。目前想实现RS485的数据流控制的功能,其中PIO2和PIO3控制485芯片的收发,默认485芯片处于接收有线数据的状态。现在遇到以下的问题.
需实现的功能:1、当UART口的数据发送到蓝牙模块时,蓝牙模块将其发送到空中。
              2、当蓝牙模块接收到空中数据时,此时设置485芯片为发送状态,将空中数据发送到485线路上。

程序结构:
case SPP_CONNECT_CFM:
         .......
        SPP_CONNECT_CFM_T *cfm = (SPP_CONNECT_CFM_T *) message;
        .....
        SourceConfigure(StreamSourceFromSink(cfm->sink), VM_SOURCE_MESSAGES, VM_MESSAGES_SOME);
        StreamConnect(StreamUartSource(), cfm->sink);
        .....
case SPP_MESSAGE_MORE_DATA:
        .......
        mmd = (SPP_MESSAGE_MORE_DATA_T *) message;
        (copy the data of mmd to uartSink);
        SinkFlush(uartSink, numberOfBytes);
        delay(N ms);
        setPio(status);
        .....
其中,延时N ms是为了保证uart中所有数据都能发送完毕,但此时出现了一个问题,进行回流测试时,若N设置过长,那么蓝牙芯片数据发送完毕后,其就不能立马接收到485的数据,若N设置过短,蓝牙芯片中的数据就不能全部发送出去。

因此,对于N的设置有没有什么办法,或者 蓝牙芯片将其数据发送完毕后,能不能使其产生一个中断? SPP BC417 CSR 蓝牙 芯片
[解决办法]
SinkFlush是非阻塞的?
那需要看看有没有状态寄存器可以查询到发送完成的。
[解决办法]
MORE_SPACE是发送完成的消息 

热点排行