TI中文支持网
TI专业的中文技术问题咨询交流网站

请教TI工程师CC1310串口被打断问题

TI工程师您好

我调试过程中发现,串口在收发的时候存在被无线收发打断,我串口优先级设置了3,无线收发设置了2,这样串口在工作的时候是不是不应该被打断。

EasyLink_receiveAsync(rxDoneCb, 0);

/* Wait 300ms for Rx */
// if(Semaphore_pend(rxDoneSem, (300000 / Clock_tickPeriod)) == FALSE) //delete by barbara

if(Semaphore_pend(rxDoneSem, (10000 / Clock_tickPeriod)) == FALSE) //add by barbara
{
/* RX timed out abort */
if(EasyLink_abort() == EasyLink_Status_Success)
{
/* Wait for the abort */
Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER);
}
}

上面是接收的程序,,,我只留了这个接收也是会打断串口,,,不知道是什么原因导致。。。接收回调里也没任何的东西 只是指示灯 。。。

请指导一下。。。谢谢。。。

Felix ZF:

能描述的具体点吗?

你是如何确定串口接收是被无线接收打断的?具体是什么现象?

liming qu:

回复 Felix ZF:

static void uartReadCallback(UART_Handle handle, void *rxBuf, size_t size){ size_t i = 0;

for( i = 0; i < size; i++) { if(BufferSize != 128) { UartRxBuf[BufferSize] = ((uint8_t*)rxBuf)[i]; BufferSize++; } else { BufferSize = 0; UartRxBuf[BufferSize] = ((uint8_t*)rxBuf)[i]; BufferSize++; } }

if(UART_ERROR == UART_read(handle, &UartRxReadByte, 1)) { //Uart_PutString("UART ERROR\r\n"); UART_readCancel(handle); return; }

经过测试 我发现中断是 一个一个的收数据,,,在快速发送的过程中我发的1234567890这个字符串结果收到13579 中间的24680 丢了。。。我想问下工程师这个中断必须一次收1个吗 能不能 缓存好了再统一收。。。

在线等  多谢

Felix ZF:

回复 liming qu:

int UART_read(UART_Handle handle, void *buffer, size_t size);

这是函数原型,你可以设置每次接收数据的长度。

liming qu:

回复 Felix ZF:

工程师您好

设置固定长度是可以的,但是我是做的串口透传,每次的数据我是不知道长度的,,,所以 假如我设置了120 那么 不到120 他是不会发出的

Felix ZF:

回复 liming qu:

可以使用UART_Control使能

UARTCC26XX_CMD_RETURN_PARTIAL_ENABLE

详细使用方法可以参考

file:///C:/TI/simplelink_cc13x0_sdk_1_40_00_10/docs/tidrivers/doxygen/html/_u_a_r_t_8h.html#a5ce79dc51ddc3ef73e8f08983bfee2c7

liming qu:

回复 Felix ZF:

多谢工程师大周末给于回复!

赞(0)
未经允许不得转载:TI中文支持网 » 请教TI工程师CC1310串口被打断问题
分享到: 更多 (0)