德州的技术工程师们:
我采用cc2531+zstack2.5.1a来做一个串口数据透传模块,将无线收到的数据通过485发送给设备,或将通过设备得到的数据通过无线发送到网络。现在的一个问题是程序中需要控制485的收发数据方向,我想将模块平常设置为接收数据,需要发送数据时才置为发送方向,一旦发送完成立即切换回接收方向。
现在的问题是,我不知道何时数据已经发送完成。目前采用计时的方式,根据发送字节定时一定时间后切换回接收,这样处理在数据收发频繁的时候效果不好,会丢包。我注意到串口驱动里边有Hal_UART_TxBufLen() 函数,查询发送缓存,但是不能使用该函数。另外我还看到hal_uart.h中定义了一个HAL_UART_TX_EMPTY 的串口发送空的事件,但是不知道怎么才能使用该事件。请教德州的技术们,我该如何操作,或者有其他更好的解决办法?
另外我使用的TI提供sampleAPP工程进行修改,串口数据读取和发送采用的DMA方式。