TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2541串口问题

在调试串口通信时,如何判断串口接收数据已经完成?我在串口回调函数中加了一个osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_UART_TIMEOUT_EVT, UART_TIMEOUT );函数,当串口接收超时,就判断数据全部接收完,这样有问题么。还有从机和主机端连接后,我想从机端发个串口命令过去可以断开连接,断开连接具体是调用系统的哪个函数。

Yan:

ethan,

你是指你指定的一个包发送完成吧?

最好的方法,是你给每个包都定义一个包头和包位,或者包长,通过这些来判断。这是通用做法。

断开连接,你可以通过 调用 GAPRole_TerminateConnection() 来实现。

ethan:

回复 Yan:

我的问题是如何判断一个包接收完成,如果是透明传输不加格式,最好怎样处理呢

Yan:

回复 ethan:

ethan,

我说的是一个意思:)

一般的串口通信,双方都会约好一个协议,比如说包的格式,其中包括包头,包尾,包的长度等,接收方可以根据这些来判断包是否收完了。

shaokai Lin:

回复 ethan:

Hi ethan:

    不加格式也可以,一个一个发送咯,这样会很慢,链路层开销也大。相信你不会接受的。

我也建议你规定一桢数据的格式来传输,通过超时判断也不是不可行,只是有些小缺点:

1.每次收到数据都要清除上一次启动的定时器(程序开销);

2.每次收到数据都要重新设置一次定时器(程序开销);

3.你用超时来结束数据接收,超时的等待本身就会造成你数据发送的延迟。

da qin zheng sheng:

和普通51一样,用中断接收。

赞(0)
未经允许不得转载:TI中文支持网 » CC2541串口问题
分享到: 更多 (0)