智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1908|回复: 2
打印 上一主题 下一主题

[单片机] 关于K60串口设置接收深度(FIFO)后数据怎么取出来的问题

[复制链接]

2

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
威望
167
贡献
92
兑换币
95
注册时间
2014-5-15
在线时间
26 小时
毕业学校
集美大学
跳转到指定楼层
1#
发表于 2014-7-14 08:52:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
最近因为想减少让单片机进入中断的频率,特地查了如何设置接收缓存深度,以免每接收一个字符就要中断。如下
UART1_PFIFO |= (UART_PFIFO_RXFE_MASK | UART_PFIFO_RXFIFOSIZE(3));
  UART1_RWFIFO|=UART_RWFIFO_RXWATER(8);
这样设置后,能在串口接收8个字节的数据后进入才进入中断,另外只有UART0/1才能设置,其他通道好像不行
然后问题来了,中断时进了,但是我怎么把缓存内的8个字节数据取出来??只有一个字节时是读UART_D这个寄存器,可是这个寄存器只有8位,也就是只存了一个字节,我接收的其它字节去哪了..实际断点调试也是只看到了第一个字节的数据。
求大神给个中断后取数据的范例

回复

使用道具 举报

2

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
威望
167
贡献
92
兑换币
95
注册时间
2014-5-15
在线时间
26 小时
毕业学校
集美大学
2#
 楼主| 发表于 2014-7-14 08:58:28 | 只看该作者
不知道为什么RWFIFO最多只能设置到8个字节数,再大单片机就不中断了。手册上也是说8 entry,请看附件。就搞不懂了,为何PFIFO可以最多设置到128个字节深度,而实际上只支持8个字节??还是我打开方式不对

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

2

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
威望
167
贡献
92
兑换币
95
注册时间
2014-5-15
在线时间
26 小时
毕业学校
集美大学
3#
 楼主| 发表于 2014-9-15 20:54:40 | 只看该作者
之前找出问题了,希望遇到同样的问题的童鞋获益。虽然一直在单机——
1、FIFO可设置串口接收若干字节后再进入中断;
2、使用FIFO需要先初始化UART_PFIFO这个寄存器,有TXFE与RXFE,分别为发送与接收的缓存;
3、TXFIFOSIZE/RXFIFOSIZE 位表示的是某UART通道的FIFO深度,只不过它们是  只读位!!也就是配置了也没用,每个通道的FIFO深度固定。  UART0-1为010(8字节),UART2-6为0.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 13:21 , Processed in 0.038705 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表