4489|1

496

帖子

18

TA的资源

一粒金砂(高级)

楼主
 

HELPER2416学习笔记6——UART [复制链接]

本帖最后由 fjjjnk1234 于 2014-8-3 16:46 编辑

HELPER2416学习笔记6——UART

参与HELPER2416开发板助学计划

关于UART的原理就不再赘述了。本次帖子主要讲述S3C2416 UART的使用。
S3C2416的UART配有4个独立异步串行I/O口,每个都可以是基于中断或基于DMA模式的操作。该UART可以支持的比特率最高为3Mb/s。每个UART的通道包含了两个64字节收发FIFO存储器。下面以UART0为例,讲解S3C2416 UART的使用。
与UART0设置相关的寄存器:GPHCON、ULCON0、UCON0、UFCON0、UMCON0、UBRDIV0、UDIVSLOT0。
(1)          配置UART0的功能引脚:GPH0、GPH1。
(2)      设置线路控制寄存器寄存器:ULCON0
设置ULCON0为0x3,即普通模式操作、8位数据位、1位停止位、无奇偶校验位。
(3)设置UART控制寄存器UCON0
该寄存器主要设置:时钟选择、中断是否使能、中断类型及是否使用DMA
在这我们设置UCON0为:0x5,即时钟源为PCLK、禁止中断、使能UART发送与接收。
(4)设置FIFO控制寄存器:UFCON0
该寄存器主要设置Tx/Rx FIFO的触发深度、复位及FIFO的使能
注意:(i)在DMA模式下,FIFO Enable位应该为0。
      (ii)当UART 未达到FIFO 触发深度或在带FIFO 的DMA 接收模式中3 字周期期间没有收到数据时,将发生Rx中断(接收超时),用户应该检查FIFO 状态并读出剩余部分。在这设置UFCON0为:0x01,即使能FIFO,Tx FIFO触发深度为空,Rx FIFO触发深度为1字节。
(5)设置UART MODEM控制寄存器UMCON0
该寄存器主要是自动流控制的相关设置
现在对自动流控制还不太清楚,所以就先设置UMCON0为0x00,即无自动流控制。
注意:(i)UART3不支持AFC功能,因为S3C2416没有nRTS3和nCTS3。      
(ii)如果AFC位使能并且Time-out位失能,RTS的触发深度必须大于Rx FIFO的触发深度。
(6)设置波特率:UBRDIV0、UDIVSLOT0计算公式在光盘数据手册的第328页,以下是截图:
比如要设置波特率为:115200,已知:PCLK=66.6MHz所以:{66600000/(115200*16)}-1=UBRDIV0+(num of 1’s in UDIVSLOT0)/16
关于num of 1’s in UDIVSLOT0在数据手册上有一张表格,直接参考使用设置UDIVSLOT0寄存器。
所以UBRDIV0+(num of 1’s in UDIVSLOT0)/16=35.13设置UBRDIV0为35,UDIVSLOT0为0x0808。(UDIVSLOT0设置得不够精确好像也是可以的)。通过设置以上的寄存器就能把串口初始化了,接着讲解重定向C库函数printf到UART0。
  1. void Uart0_SendByte(char b)
  2. {
  3. //等待发送缓冲器为空,即数据发送完
  4.         while (!(UTRSTAT0_REG & 0x2));
  5.         //将要发送的数据送到发送缓冲寄存器
  6.         UTXH0_REG = b;
  7. }

  8. int fputc(int c, FILE *f)
  9. {
  10. //重定向printf到UART0
  11.         Uart0_SendByte(c);
  12.         return c;
  13. }
复制代码
串口初始化函数:
主函数:
  1. int Main(void)
  2. {
  3.         Uart0_Init();
  4.         while (1)
  5.         {
  6.                 printf("\r\nbbs.eeworld.com\r\n");
  7.                 printf("\r\n您前进路上的铺路石——君益兴\r\n");
  8.                 delay();
  9.         }
  10. }
复制代码
程序在Keil MDK中写的,用J-Link仿真器,Debug—全速运行,就能看到串口打印的文字(也能设置断点,单步运行调试)
还有一点要注意的:在Keil MDK中要使用stdio.h头文件,应该先钩上Use Micro LIB,如下图
uart.rar (211.75 KB, 下载次数: 13)
论坛ID:fjjjnk1234                                                                                                                                                                                          
提交时间:2014.08.03





最新回复

谢谢分享   详情 回复 发表于 2021-4-27 11:16

赞赏

1

查看全部赞赏

点赞 关注
个人签名相由心生,境随心转,一切法从心想生。

回复
举报

661

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

谢谢分享

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表