S3C2440中UART的原理和应用

 通用异步收发器简称UART(Universal Asynchronous Receiver Transmitter),也就是我们平常所说的串口。它用来传输串行数据,在嵌入式开发中占有很重要的地位。

发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出;接收数据时,UART检测别一根电线上的信号,将串行收集到的数据放在缓冲区中,CPU即可以读取UART获得这些数据,两个串口最简单的连接是有3根线,一个TxD发送数据,一个是RxD接收数据,Gnd用于给双方提供参考的电平。

    TxD,RxD数据线“位”为最小的单位传输数据。帧由具有完整意义的,不可分割的若干位组成,它包含数据位,开始位,校验位,和停止位。UART一帧中可以有5,6,7或8位的数据位。
    S3C2440中的UART有64字节的发送FIFO,和64字节的接收FIFO。发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到”发送移位器“中,发送移位器将数据一位一位地发送到TxD数据线上,根据一开始设定的格式的不同,会在一个帧上加上相应的停止位,校验位。接收数据时,”接收移位器“将RxD数据线上的数据一位一位接收进来,然后复制到接收FIFO中,CPU即可以从中读取数据。
   UART的发送数据和接收数据一般情况下会有中断方式和查询方式,下面主要介绍几个寄存器:
UCONn寄存器,可以设置UART工作在那一种方式上。
UFCONn寄存器用于设置是否使用FIFO,设置各FIFO的触发阈值,即发送FIFO中有多少个数据时产生中断,接收FIFO中有多少个数据时产生中断,
   在非FIFO模式下,FIFO的深度为1,可以通过UTRSTAT寄存器中的相应位来判断是中断或DMA请求是否发生,
   在FIFO模式下,应该检查寄存器UFSTAT中的TxFIFO Count位和TxFIFO Full 位,如果达到在UFCON中设置的FIFO的触发等级,就会发生中断。
   UTXH寄存器,CPU将数据写入这个寄存器,UART地将它保存到缓冲区中,并自动发送出去。在实际应该中,一般情况下,在发送数据时,一般采用DMA的方式,或者是设置成发送FIFO为空,而接收数据时,可以设置FIFO为比较合适的大小,S3C2440支持接收FIFO的触发等级为1byte 8byte 16byte,32byte.
   而且在接收数据时还有一个超时接收中断。可以用于接收那些由于没到达触发点而无法触发接收中断的字符当FIFO中的数据量没有达到接收FIFO的触发等级且在三个字的时间内没有接收到任何数据时,产生中断,这是一种接收中断,该时间根据字长位设置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值