这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 44b0,UART 求助:关于44b0 UART的若干问题

共2条 1/1 1 跳转至

44b0,UART 求助:关于44b0 UART的若干问题

院士
2006-09-17 18:14:16     打赏
44b0,UART 求助:关于44b0 UART的若干问题



关键词: 求助     关于     若干     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 又要劳烦各位了,呵呵。

问题一:
UART有FIFO和非FIFO模式,在这两种模式下,分别是如何触发发送和接收中断的,也就是说,什么时候会引发中断?
   UFCON[7:6]、UFCON[5:4]分别决定发送FIFO和接收FIFO触发条件,表示什么意思?是触发中断的条件吗???
  我的看法:无论在FIFO模式还是非FIFO模式,发送中断都是在发送缓冲区变空时引发的,可不明白的是UFCON[7:6]作用是什么???
  比如,UFCON[7:6]=10,是指发送FIFO中有8个字节时引发中断吗?

问题二:在pc键入'\n',在开发板uart接收到不是'\n',而是'\r',为什么???


问题三:
在FIFO模式下,FIFO和接收缓冲寄存器在读写顺序上是什么关系?以下是我的理解:
  发送时过程:先将待发送的数据输出至FIFO,然后再由FIFO保存至发送缓冲寄存器,再通过发送移位寄存器发出去。
  接收过程:先将接收移位寄存器中数据至接收FIFO,然后再保存至接收缓冲寄存器,用户读数据时,是从接收缓冲寄存器中读出???
 发送保持寄存器和发送移位寄存器是两个不同的寄存器吧?
  移位寄存器有多少位?

这几个问题困扰我好久,请各位点拨一下,谢了先 1: 帮忙啊,各位!
帮帮忙吧,谢谢了 2: 谈谈我自己的理解吧,不对请指正刚才看了下datasheet,谈谈我自己的理解吧,不对请指正
非FIFO模式时,产生中断条件如下:
1)每当发送保持寄存器为空时,将产生一个发送中断
2)每当接收缓冲寄存器满时,产生一个接收中断
FIFO模式时:
1)接收FIFO满时,引发接收中断
2)发送FIFO为空时,引发发送中断

所谓FIFO接收和发送触发水平,意思是(假设UFCON[7:6]=10,UFCON[5:4]=01):
1)当接收FIFO接收到8B时,产生一个接收中断
2)当发送FIFO里只剩下8B时,产生一个发送中断

移位寄存器是8位?

以上是我自己的理解,不知对否,请各位指点一下,呵呵!

谢谢了 3: 问题二还是不明白
问题一和问题三我觉得自己理解应该没错,不过问题二还是不明白。

为什么在pc上键入回车,uart接收到的不是'\n'而是'\r'呢?

各位,有知道的请发个话,呵呵。

谢谢哈 4: 贴子沉的太快了前天没看到.你用什么软件发的呢? 5: 没用什么软件,就是在网页上直接发

我就是直接发的啊,是沉得太快了。

前几天有人问我问题,我也是昨天才看到,感觉这里是很热闹,呵呵


难道还有专门的发帖软件? 6: 我问你用什么软件发的'\n'这个字符都怪我语文学的不好描述不清楚. 7: 没用什么软件啊呵呵,是我理解错了。

也没用什么软件啊,这就是44b0的一个测试程序,可以在pc上键入一个字符串,然后通过uart发给目标板,板子再通过uart回送给pc,在超级终端上显示出来。

例如,Uart_SendByte实现函数如下:

void Uart_SendByte(int data)//发送字符的实现函数
{
    if(whichUart==0)
    {
    if(data=='\n')//如果输入回车
    {
/*  如果发送缓冲寄存器中还有有效数据,则等待直到发送缓冲器中的数据都被发送出去,缓冲器为空; 如果UART使用FIFO,则应检查UFSTAT寄存器的Tx FIFO计数位UFSTAT0[7:4]和Tx FIFO(UFSTAT0[9])
满标志位,以代替检查该位 */
        while(!(rUTRSTAT0 & 0x2));
        Delay(10);    //延时,因为超级终端的响应慢          WrUTXH0('\r');//为什么'\n'变为'\r'???
    }
    while(!(rUTRSTAT0 & 0x2)); //等待直到发送缓冲(保持)寄存器为 空(Wait until THR is empty).
    Delay(10);//延时
    WrUTXH0(data);//将字符写到UART发送缓冲(保持)寄存器
    }
......

我就是在WrUTXH0('\r');那句不明白,为什么要把'\n'变为'\r'发送出去呢? 8: 直接送数据0x0a,0x0d不同编译系统对\n \r的理解是不同的。
有的是两个都送,有的送一个数字,顺序也可能不一样。
接受的时候也至判断数字,不要用\n \r 。这应应该就没问题了。
谁都没错,放在一起就错了。 9: 同意wangkj 10: 同意wangkj老兄我以前做只判断数值.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]