mini2440硬件篇之UART

发布者:码上奇迹最新更新时间:2016-12-01 来源: eefocus关键字:mini2440  硬件篇  UART 手机看文章 扫描二维码
随时随地手机看文章

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD用于接收,Gnd地。UART使用标准的TTL电平(0~3.3V或0~5V),表示高低电平,为了增加抗干扰能力,增加传输长度,通常将TTL电平转换为RS-232电平。3~12V表示0,-3~-12表示1。

平常数据引脚处于空闲1状态,发送数据时,TxD变低电平,表示一个起始信号。然后后面可以跟5、6、7、8位的数据,LSB低位优先。如果使用校验,数据发完后再发送一个校验位,最后发送1、2位停止位。

 

  1.  芯片手册

  2.  mini2440电路图


 

3. S3C2440寄存器

对于s3c2440来说,它有3个UART,配置过程如下。

对应的GPIO引脚设置成UART引脚。

ULCON LINE寄存器,配置校验、数据位、停止位。

UCON 控制寄存器,可以配置时钟源,中断或查询方式,不使用DMA。

UFCON FOFO寄存器,不使用FIFO。

UMCON MODEM寄存器,不使用流控。

UTRSTAT 状态寄存器,只读,读取UART状态。

UERSTAT 错误寄存器,也是只读。

UFSTAT FIFO的状态寄存器,也是只读。

UMSTAT MODEM状态寄存器,只读。

UTXH 发送缓冲区。

URXH 接收缓冲区。

UBRDIV 波特率设置寄存器

uart.h


  1. /******************************************************************* 

  2.  * Copyright (C),2011-2012, XXX. 

  3.  * FileName: uart.h  

  4.  * Author:HuangYinqing 

  5.  * Version:1.0 

  6.  * Date::2012-04-22 

  7.  * Description:串口0驱动. 

  8.  * Function List: 

  9.  * History: 

  10.  ******************************************************************/  

  11. #ifndef __UART_H__  

  12. #define __UART_H__  

  13.   

  14. #define PCLK    50000000    //50M  

  15. #define UART_CLK PCLK  

  16. #define UART_BAUD_RATE 115200  

  17. #define UART_BRD ((int)(UART_CLK/(UART_BAUD_RATE*16))-1)  

  18.   

  19. #define TXD0READY (1<<2)  

  20. #define RXD0READY (1)  

  21.   

  22. /*函数声明*/  

  23. void Uart0Init(void);  

  24. unsigned char Uart0GetChar(void);  

  25. void Uart0SendString(char *pucStr) ;  

  26. void Uart0SendData(char *pucStr, int ulCount) ;  

  27.   

  28. #endif  


uart.c


  1. /******************************************************************* 

  2.  * Copyright (C),2011-2012, XXX. 

  3.  * FileName: uart.c  

  4.  * Author:HuangYinqing 

  5.  * Version:1.0 

  6.  * Date::2012-04-22 

  7.  * Description:串口0驱动. 

  8.  * Function List: 

  9.  * History: 

  10.  ******************************************************************/  

  11. #include "common.h"  

  12. #include "uart.h"  

  13.   

  14.   

  15. /******************************************************************** 

  16. 函数功能:发送一个字符。 

  17. 入口参数: 

  18.     ucChar:待发送的字符 

  19. 返    回:无。 

  20. 备    注:无。 

  21. ********************************************************************/  

  22. void Uart0PutChar(unsigned char ucChar)  

  23. {  

  24.     while( !( rUTRSTAT0 & TXD0READY ) );//发送一个字节  

  25.     rUTXH0 = ucChar;  

  26. }  

  27.   

  28. /******************************************************************** 

  29. 函数功能:接收一个字符。 

  30. 入口参数:无。 

  31. 返    回:接收的字符。 

  32. 备    注:无。 

  33. ********************************************************************/  

  34. unsigned char Uart0GetChar(void)  

  35. {  

  36.     while( !( rUTRSTAT0 & RXD0READY ) ); //接收一个字节  

  37.     return rURXH0;  

  38. }  

  39.   

  40. /******************************************************************** 

  41. 函数功能:发送字符串。 

  42. 入口参数: 

  43.     pucStr:待发送的字符串指针。 

  44. 返    回:无。 

  45. 备    注:无。 

  46. ********************************************************************/  

  47. void Uart0SendString(char *pucStr)   

  48. {   

  49.     while( (*pucStr) != '\0' )   

  50.     {   

  51.       Uart0PutChar(*pucStr++);  

  52.     }   

  53. }  

  54.   

  55. /******************************************************************** 

  56. 函数功能:发送指定长度数据。 

  57. 入口参数: 

  58.     pucStr:待发送的字符串指针。 

  59.     ulCount:待发送的字节数。 

  60. 返    回:无。 

  61. 备    注:无。 

  62. ********************************************************************/  

  63. void Uart0SendData(char *pucStr, int ulCount)   

  64. {   

  65.     while(ulCount--)   

  66.     {   

  67.       Uart0PutChar(*pucStr++);  

  68.     }  

  69. }  

  70.   

  71. /******************************************************************** 

  72. 函数功能:串口0中断函数。 

  73. 入口参数:无。 

  74. 返    回:无。 

  75. 备    注:无。 

  76. ********************************************************************/  

  77. static void __irq Uart0Handler(void)   

  78. {   

  79.     char ch;  

  80.       

  81.     ClearSubPending(BIT_SUB_RXD0);  

  82.     ClearPending(BIT_UART0);   

  83.       

  84.     while(rUTRSTAT0 & 1)    //==接收缓冲区有数据  

  85.     {  

  86.         ch = rURXH0;  

  87.         rUTXH0 = ch;  

  88.     }  

  89. }   

  90.   

  91. /******************************************************************** 

  92. 函数功能:串口0初始化函数。 

  93. 入口参数:无。 

  94. 返    回:无。 

  95. 备    注:无。 

  96. ********************************************************************/  

  97. void Uart0Init(void)  

  98. {  

  99.     rGPHCON &=  ~(0xf<<4);   

  100.     rGPHCON |= 0xa<<4;    //==GPH2,GPH3用作TXD0,RXD0  

  101.     rGPHUP |= 3<<2;       //==GPH2,GPH3内部上拉  

  102.       

  103.     rULCON0 = (0x03<<0);  //==数据格式:数据位为8位,1位停止,无奇偶校验,不使用红外  

  104.     rUCON0=(1<<0)|(1<<2); //==允许查询或中断方式,不使用DMA通道  

  105.     rUFCON0=0x00;         //==不使用FIFO  

  106.     rUMCON0=0x00;         //==不使用流控  

  107.     rUBRDIV0=UART_BRD;    //==设置波特率为115200kb/s  

  108.       

  109.     pISR_UART0=(unsigned int)Uart0Handler;  //==串口收中断函数  

  110.     rINTMOD &= ~BIT_UART0;                  //==普通中断模式  

  111.     rINTMSK &= ~BIT_UART0;                  //==打开中断屏蔽  

  112.     rINTSUBMSK &= ~BIT_SUB_RXD0;            //==打开接收子中断屏蔽  

  113. }  

  114. //  



关键字:mini2440  硬件篇  UART 引用地址:mini2440硬件篇之UART

上一篇:mini2440硬件篇之IIC
下一篇:mini2440硬件篇之DMA

推荐阅读最新更新时间:2024-03-16 15:22

mini2440 IIC 裸机程序记录
调了两天终于把2440上面的IIC调通了,代码记录如下: head.s @this is a test program of uart using com0, the properties of com0 is the same as usual (115200,8, 1, n, n) .text .global _start _start: b Reset b . @undefined instruction b . @swi b . @pregetch instruction b . @data abort b . @Reserved b HandleIRQ @i
[单片机]
<font color='red'>mini2440</font> IIC 裸机程序记录
学51单片机-UART口发送一个字符
UART口,又叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是单片机常用功能的一部分,也是早期台式电脑必备的一个硬件接口。 当年我调试UART口的时候,用的还是超级终端,现在都用串口助手了,比我们当时方便多了。 UART口按位发送和接收字节,虽然相比于并口,慢了很多,但是在有限的IO资源面前,这种方式是非常可取的。 UART口主要用于ASCII码的传输,传输过程遵循ANSI/EIA-232标准。ASCII码是啥?看下表: 就是说,当我想发送字符“A”的时候,我要向串口发送十进制数65,或者十六进制数41。 驱动电
[单片机]
学51单片机-<font color='red'>UART</font>口发送一个字符
UART协议介绍及编程
原理说明: 通用异步收发器简称为UART,即“Universal Asynchronous Receiver/Transmitter”,它用来传输串行数据;发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出。接收数据时,UART检测另一根电线上的信号,将串行收集的数据放在缓冲区中,CPU即可读取UART获得的数据。UART以全双工的方式传输数据,最精简的连线方式只有3根电线,TxD用于发送数据,RxD用于接收数据。Gnd用于给双方提供参考电平。连线如下图所示。 UART使用标准的TTL/CMOS逻辑电平来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提供传输长度,通常将T
[单片机]
<font color='red'>UART</font>协议介绍及编程
一起学mini2440裸机开发(三)--S3C2440时钟学习
前言 首先,我们应该知道一点,mini2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,而S3C2440A可以正常工作在400MHz下,可想而知两者速度相差会有多大了。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,其工作效率也很低,比如,我们电脑里面经常提到的超频,超频就是让CPU工作在更高的频率下,让电脑运算速度更快,虽然频率是越高越好,但是由于硬件特性决定了任何一个设备都不可能无止境的超频,电脑超频时要考虑到CPU或主板发热过大,烧坏的危险,同样开发板的主板
[单片机]
一起学<font color='red'>mini2440</font>裸机开发(三)--S3C2440时钟学习
DSP与蓝牙模块UART口通信电路设计
  蓝牙技术作为一种低成本、低功耗、近距离的无线通信技术,正广泛应用于固定与移动设备通信环境中的个人网络,数据速率可高达1Mb/s;它采用跳频/时分复用技术,能进行点对点和点对多点的通信。ADSP-BF533是ADI公司Blackfin系列的高速数字信号处理器芯片,基于DSP的蓝牙无线传输系统设计,利用DSP简单算法实现对复杂信号的处理,大大提高了系统的数据处理能力;同时信号传输用无线代替有线电缆,解决了电缆传输存在的弊端,拓宽了系统在较为恶劣的环境或特殊场所的应用。   电路原理: 串行通信接口通常采用三线制接法,即地、接收数据(RXD)和发送数据(TXD)。DSP与蓝牙模块使用UART口进行通信时,蓝牙模块作为一个DCE,异
[嵌入式]
DSP与蓝牙模块<font color='red'>UART</font>口通信电路设计
ARM·UART
【本章内容】 【代码详解】 【UART初始化】 1)选定uart输出的管脚 2)ULCON (红外传输,奇偶校验,数据位,停止位) 3)UCON(不知道他怎么设置的,先照抄吧,完全没看懂) 4)UFCON(不使用UART FIFO) #include s3c24xx.h #include serial.h #define TXD0READY (1 2) #define RXD0READY (1) #define PCLK 50000000 // init.c中的clock_init函数设置PCLK为50MHz #define UART_CLK PCLK
[单片机]
U-boot-2014.04移植到MINI2440(3) Makefile分析
上一篇帖子翻译和分析了下README,这篇帖子打算分析一下Makefile,分析过程参照韦东山的视频,以及网上一些帖子,在此对他们的工作表示感谢。 首先,什么是Makefile?我们知道u-boot下面有很多的目录和文件,最终生成一个u-boot.bin需要编译进去很多的文件,哪些先编译,哪些后编译,用什么编译器等等,我们在编译的时候只输入了make这个指令,但其实做了很多事,这些事是谁做的,就是Makefile,它这些文件有序的串联起来,组织它们之间的关系,替我们管理了它们。Makefile有自己的语法规则,就像C和C++一样,可以极大的提高软件的开发效率。下面开始具体分析。 版本:U-BOOT-2014.04 编译
[单片机]
U-boot-2014.04移植到<font color='red'>MINI2440</font>(3) Makefile分析
利用FPGA实现UART的设计
引 言 随着计算机技术的发展和广泛应用,尤其是在工业控制领域的应用越来越广泛,计算机通信显的尤为重要。串行通信虽然使设备之间的连线大为减少,但随之带来串/并转换和位计数等问题,这使串行通信技术比并行通信技术更为复杂。串/并转换可用软件实现,也可用硬件实现。用软件实现串行传送大多采用循环移位指令将一个字节由高位到低位(或低位到高位)一位一位依次传送,这种方法虽然简单但速度慢,而且大量占用CPU的时间,影响系统的性能。更为方便的实现方法是用硬件,目前微处理器串行接口常用的LSI 芯片是UART(通用异步收发器)、USART(通用同步异步收发器)和ACIA(异步通信接口适配器)等。不论是哪一种芯片,它们的一种基本功能是实现串/并转换。
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved