如题,我想请教一下cc3200有没有一帧数据接收完成中断,我在查看中断标志发现有如下定义
#define UART_INT_EOT 0x800 // End of transfer interrupt Mask
但是经测试一帧数据接受完不会产生此中断,请问一下这个不是帧中断还是我有未使能的地方。
如果有人知道请给一个完整的接收一帧数据中断的历程,不胜感激!
gaoyang9992006:
试试传输一个以EOF文件结束标志的文件是不是可以触发这个中断
Terry Han:
CC3200的串口有一个FIFO 最低需要接收到2个Bytes后才能产生串口中断,如果想使用一个Byte进行中断处理,需要在初始化中将UART的FIFO关闭掉,不要使用串口FIFO缓存单元,并且可以打开超时检测。
Alvin Chen:
HI,Huiyu
串口初始化中失能FIfo :UARTFIFODisable(UARTA0_BASE);
设置RX中断:UARTIntEnable(UARTA0_BASE,UART_INT_RX);
注册中断函数:UARTIntRegister(UARTA0_BASE,uart_handle);
中断函数:
void uart_handle(void)
{
int i;
i=UARTIntStatus(UARTA0_BASE,ture);
if(i&UART_INT_RX)
{
while(UARTCharAvail(UARTA0_BASE)){
UARTCharPut(UARTA0_BASE,UARTCharGet(UARTA0_BASE));
}
UARTIntClear(UARTA0_BASE,UART_INT_RX);
}
}
如果有误,请谅解,以官网SDK为准
huiyu shi:
回复 gaoyang9992006:
我要传输的不是文件,我需要板间通信
huiyu shi:
回复 Terry Han:
谢谢,我试试
huiyu shi:
回复 Alvin Chen:
这个只能接受一个字节,但是我想接受一组。
Terry Han:
回复 huiyu shi:
如果你要接收一组数据后进入串口中断,建议打开uart的FIFO,该FIFO最大支持16Bytes的缓存数据后进入UART中断,
UART:
Separate 16×8 transmit (TX) and receive (RX) FIFOs to reduce CPU interrupt service loading
huiyu shi:
回复 Terry Han:
您好,我使用fifo时候遇到了一点问题,请教一下。我把fifo设置为4字节,中断确实触发了。也是一下接收到了四个字节数据,但是比如我发送6个字节数据时候,中断会触发一次,接收到四个字节,剩余两个暂时收不到,等待我下次在发送6个字节时候,上次的两个和这次的前两个字节到一起触发一次,后面四个字节触发了一次中断。这样一来数据都乱了。请问怎么设置才可以一下子读取出六个字节(在我fifo为四个字节情况下)。
因为如果我发送的数据长度不定。请指教