Ti大神,你们好
请教一个问题,在uart_dma的demo中,注册的FIFO触发级别为1/8, 当UART接收到8 字节字符时触发一次中断,我做了一个实验,如果输入6个字符,他是无法进行中断的,这6个字符继续保留在FIFO中,等下一次数据到来合并传输。
这样应该会产生一个问题,当我一个报文为非8的整数倍时,应该有小于8个字节的数据留在FIFO里面, 这就照成了数据丢失。
请问有什么方式能够解决该问题的吗 ??
2、如果我在中断注册函数中不对中断进行清除,中断会一直进行, 这个貌似也存在问题吧 ??
请帮忙解答下,谢谢
Jest Top:
菜鸟胡乱说说:
FIFO触发级别为1/8时,接收到两个字节就会产生中断,2/8是四字节,如果设置1/8 输入6个字符在FIFO里面应该可以接收完整的,只要一次发送超过两个字符就能产生中断
中断处理中使用UARTCharsAvail判断FIFO中是否有数据,有数据就接收,接收完然清除中断
这段时间内只要保证接收时FIFO有数据 UARTCharsAvail为True 即可,如果UARTCharsAvail为False 肯定接收完了,清除中断下次数据到达超过两字节又会产生中断。
但是启用FIFO 并设置Level为1/8 两字节产生中断 所以要一次输入两字节才能产生中断,如果一次(相对长时间间隔发送)只输入一字节那只有等到下个字节到FIFO才能产生中断再接收了,不过一般真正应用很少一次只发一字节吧。
第二个情况没理解,难道是启用中断后就一直产生中断?,中断源是什么呢,启用之前先清除还会不会呢。。