CC3200串口接收中断超时问题
CC3200串口接收超时功能可以关闭不,如何关闭?要求做到收到1字节数据,立马进中断。
我用CC3200如另外一个串口设备通信,对方要求收到它的完整数据帧后在1ms以内回复一个字节的ACK给他,现在每次进中断时间好像在2.5ms左右的样子,
已经过了1ms的ack时间。
void InitUART1()
{
MAP_UARTConfigSetExpClk(UART1,MAP_PRCMPeripheralClockGet(UART1_PERIPH),
UART1_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_EVEN));
MAP_IntPrioritySet(INT_UARTA1, INT_PRIORITY_LVL_1);
MAP_UARTIntRegister(UART1,UART1_ISR);
MAP_UARTFIFODisable(UART1);
MAP_UARTIntEnable(UART1, UART_INT_RX);
MAP_UARTIntClear(UART1, UART_INT_RX);
MAP_UARTEnable(UART1);
}
CC3200上电复位后,默认Out of reset, both FIFOs are disabled and act as 1-byte-deep holding registers. 如果要打开 The FIFOs are enabled by setting the FEN bit in UARTLCRH. 在操作UART串口时注意如果不想使用FIFO可以关闭FIFO功能,你有把FIFO关闭吧,
Terry Han
CC3200上电复位后,默认Out of reset, both FIFOs are disabled and act as 1-byte-deep holding registers. 如果要打开 The FIFOs are enabled by setting the FEN bit in UARTLCRH. 在操作UART串口时注意如果不想使用FIFO可以关闭FIFO功能,你有把FIFO关闭吧,
FIFO 我调用API关闭了,MAP_UARTFIFODisable(UART1);
我现在需要把Receive-timeout功能关闭,好像不行啊! 32bit Time-out功能不能禁止吗?
看来这个是CC3200的一个硬伤了,我最后没辙了,只能在前面收到长度字节的时候,用定时器做计时,到了时间直接回复ACK。
但这样存在一个风险,万一中途数据出错了也回ACK,不过不影响使用。
用fifo功能效果更好的!