智能车制作
标题: 关于K60串口设置接收深度(FIFO)后数据怎么取出来的问题 [打印本页]
作者: 黑~蝶猪≯ 时间: 2014-7-14 08:52
标题: 关于K60串口设置接收深度(FIFO)后数据怎么取出来的问题
最近因为想减少让单片机进入中断的频率,特地查了如何设置接收缓存深度,以免每接收一个字符就要中断。如下
UART1_PFIFO |= (UART_PFIFO_RXFE_MASK | UART_PFIFO_RXFIFOSIZE(3));
UART1_RWFIFO|=UART_RWFIFO_RXWATER(8);
这样设置后,能在串口接收8个字节的数据后进入才进入中断,另外只有UART0/1才能设置,其他通道好像不行
然后问题来了,中断时进了,但是我怎么把缓存内的8个字节数据取出来??只有一个字节时是读UART_D这个寄存器,可是这个寄存器只有8位,也就是只存了一个字节,我接收的其它字节去哪了..实际断点调试也是只看到了第一个字节的数据。
求大神给个中断后取数据的范例
作者: 黑~蝶猪≯ 时间: 2014-7-14 08:58
不知道为什么RWFIFO最多只能设置到8个字节数,再大单片机就不中断了。手册上也是说8 entry,请看附件。就搞不懂了,为何PFIFO可以最多设置到128个字节深度,而实际上只支持8个字节??还是我打开方式不对
作者: 黑~蝶猪≯ 时间: 2014-9-15 20:54
之前找出问题了,希望遇到同样的问题的童鞋获益。虽然一直在单机——
1、FIFO可设置串口接收若干字节后再进入中断;
2、使用FIFO需要先初始化UART_PFIFO这个寄存器,有TXFE与RXFE,分别为发送与接收的缓存;
3、TXFIFOSIZE/RXFIFOSIZE 位表示的是某UART通道的FIFO深度,只不过它们是 只读位!!也就是配置了也没用,每个通道的FIFO深度固定。 UART0-1为010(8字节),UART2-6为0.
欢迎光临 智能车制作 (http://111.231.132.190/) |
Powered by Discuz! X3.2 |