您的位置 首页 报告

S3C2440的UART

S3C2440的通用异步收发器(UART)配有3个独立异步串行IO(SIO)端口每个UART包含一个波特率发生器、发送器、接收器和一个控制单元UART

S3C2440 的通用异步收发器(UART)配有3个独立异步串行I/O(SIO)端口

每个 UART 包括一个波特率发生器、发送器、接纳器和一个操控单元

UART 根本作业原理
内置波特率发生器,为串行数据的发送和接纳供给时钟,依据这个时钟节拍,数据先写到FIFO中然后在拷贝到发送移位器中,在移位发送到引脚TxDn, 期间,发送过来的数据经过引脚RxDn进入移位器中然后拷贝到接纳器的FIFO中

UART寄存器(概况见数据手册)
ULCONn(3个)
UCONn(3个)
UFCONn(3个)
UMCONn(2个)
UTRSTATn(3个)
UERSTATn(3个)
UFSTATn(3个)
UMSTATn(2个)
UTXHn(3个)
URXHn(3个)
UBRDIVn(3个)

存储在波特率分频寄存器中的值(UBRDIVn)是用于决议如下的串行Tx/Rx时钟率(波特率):
UBRDIVn = (int)( UART时钟 / ( 波特率 × 16) ) –1
( UART时钟:PCLK,FCLK/n 或UEXTCLK )

一个比如(发动代码自己增加)

  1. #include”config.h”
  2. #definePCLK50000000
  3. voidUart0_Init(unsignedintbandrate)
  4. {
  5. rGPHCON&=~((3<<4)|(3<<6));
  6. rGPHCON|=(2<<4)|(2<<6);//GPH2--TXD[0];GPH3--RXD[0]
  7. rGPHUP=0x00;//使能上拉功用
  8. rULCON0|=0x03;//8位数据,1位中止位
  9. rUCON0=0x05;
  10. rUBRDIV0=PCLK/bandrate/16-1;
  11. rURXH0=0;//清空UART0接纳缓冲器
  12. }
  13. voidSendchar(unsignedcharc)
  14. {
  15. rUTXH0=c;//写入UART0发送缓冲器
  16. while(!(rUTRSTAT0&(1<<2)));//等候字符发送完
  17. }
  18. unsignedcharGetchar(void)
  19. {
  20. unsignedcharc;
  21. while(!(rUTRSTAT0&(1<<0)));//等候接纳字符
  22. c=rURXH0;//接纳缓冲器的字符
  23. returnc;
  24. }
  25. intMain()
  26. {
  27. unsignedcharZ_char;
  28. Uart0_Init(115200);
  29. while(1)
  30. {
  31. Z_char=Getchar();
  32. Sendchar(Z_char);
  33. }
  34. return0;
  35. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/262815.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部