S3C2440串口(1)

发布者:雅意盎然最新更新时间:2020-03-03 来源: eefocus关键字:S3C2440  串口  电平转换 手机看文章 扫描二维码
随时随地手机看文章

1.S3C2440串口概述

串口通讯一般要增加电平转换电路,原因是TTL/CMOS电平与RS232电平不一致:

TTL/CMOS电平:

CMOS电平:

常用的电平转换芯片是MAX3232。

S3C2440有3个独立的异步串口,可以选择工作在中断或DMA方式下。每个UART包括一个波特率发生器、发送器、接收器和一个控制单元。

UART有FIFO模式和非FIFO模式。FIFO模式下可以利用64字节的发送/接收缓冲寄存器,非FIFO模式下只使用了发送/接收缓冲寄存器中的1个字节。本篇入门级以非FIFO为例。

 

2.串口设置及相关寄存器

串口引脚是GPIO复用的。本篇UART只用3根引脚:TXD、RXD、GND。

   

TXD0 – GPH2 , RXD0 – GPH3

 需要初始化以下6个寄存器:

ULCONn (UART LINE CONTROLREGISTER) – 设置数据位信息

UCONn(UART CONTROL REGISTER) – 设置发送和接收模式,及时钟源。

UBRDIVn– 设置UART波特率

波特率计算公式:

例子:

UTRSTATn(UARTTX/RX REGISTER) – 状态位

使用while(!UTRSTAT0&(1<<2)); 等待发送完成(while(!UTRSTAT0&(1<<1)); 也可以)

使用while(!UTRSTAT0&(1<<0)); 等待接收数据。

UTXHn(HOLDINGREGISTER) – 发送缓冲寄存器(Transmit)

URXHn(HOLDINGREGISTER) – 接收缓冲寄存器(Receive)


3.串口UART0应用

串口UART0接收到数据后再将其发出去。波特率为115200。

uart.h

#ifndef __UART_H__
#define __UART_H__
 
extern void Uart0_Init(unsigned int baudrate);
extern void putc(unsigned char c);
extern unsigned char getc(void);
 
#endif
uart.c 

#include "2440addr.h"
 
#define PCLK 50000000
void Uart0_Init(unsigned int baudrate)
{
    rGPHCON &= ~((3<<4)|(3<<6));
    rGPHCON |= (2<<4)|(2<<6);        //GPH2-TXD, GPH3-RXD
    rGPHUP &= ~((1<<2)|(1<<3));        //GPH2,GPH3 enable pull-up
    
    rULCON0 = 0x03;                    //8-bits 1-stop bit
    rUCON0 = 0x05;
    rUBRDIV0 = (int)(PCLK/baudrate/16)-1;
    rURXH0 = 0;
}
 
void putc(unsigned char c)
{
    rUTXH0 = c;
//    while(!(rUTRSTAT0 & (1<<2)));
    while(!(rUTRSTAT0 & (1<<1)));    //ok
}
 
unsigned char getc(void)
{
    while(!(rUTRSTAT0 & (1<<0)));
    return rURXH0;
}
Main.c

#include "common.h"
#include "uart.h"
 
int Main()
{
    unsigned char a;
    Uart0_Init(115200);
    while(1)
    {
        a=getc();
        putc(a);
    }
    return 0;
}
 

关键字:S3C2440  串口  电平转换 引用地址:S3C2440串口(1)

上一篇:S3C2440芯片时钟(2)
下一篇:s3c2440A开发板UART总结以及UART代码详解

推荐阅读最新更新时间:2024-11-09 15:48

如何使用带FIFO的串口来减少接收中断次数
本文介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。 1、概述 在此之前,先来列举一下传统串口数据收发的不足之处: 每接收一个字节数据,产生一次接收中断。不能有效的利用串口硬件FIFO,减少中断次数。 应答数据采用等待发送的方法。由于串行数据传输的时间远远跟不上CPU的处理时间,等待串口发送完当前字节再发送下一字节会造成CPU资源浪费,不利于系统整体响应(在1200bps下,发送一字节大约需要10ms,如果一次发送几十个字节数据,CPU会长时间处于等待状态)。 应答数据采用中断发送。增加
[单片机]
如何使用带FIFO的<font color='red'>串口</font>来减少接收中断次数
msp432快速入门第十三节之串口通信
(一)MSP432串口介绍   MSP432P401R并没有专用的串口设备,要使用EUSC模块配置成UART模式,串口通信非常便捷易用,它在嵌入式设备中是最为常见的一种接口,在这里我们把MSP432的串口配置成8in1的模式,8位数据,1位停止位,没有流控选择,波特率为9600,发送方式是直接发送,接收方式是中断接收。 需要注意的是仅仅有EUSCA支持被配置成串口模式。 (二)配置串口   首先打开TI的串口回环(call back)例程,然后参照其进行配置,之后进行测试即可: (1)初始化串口 需要注意的是串口时钟选择了SMCLK,之前的例子中SMCLK已经被配置成12MHz,那么我们需要获取特定波特率的分频数等等,
[单片机]
msp432快速入门第十三节之<font color='red'>串口</font>通信
s3c2440裸机之中断向量的写法(二)
先说明一下LDR伪指令。 LDR伪指令将一个32位的常数或者一个地址值读取到寄存器中。 语法格式 LDR{cond} register,={expr|label-expr} 其中的符号及参数说明如下: ●cond为可选的指令执行条件。 ●register为目标寄存器。 ●expr为32位的常量,编译器将根据expr的取值情况,处理LDR伪指令如下。 ●当expr表示的地址值没有超过MOV或MVN指令中地址的取值范围时,编译器使用合适的MOV或者MVN指令替代该LDR伪指令。 ●当expr表示的地址超过了MOV或MVN指令中地址的取值范围时,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。 ●label-e
[单片机]
基于S3C2440和USB摄像头的网络视频采集系统
  本文根据网络视频采集的需要,将网络传输与视频采集相结合,设计了以S3C2440为核心的USB摄像头视频采集和嵌入式Linux系统下的视频服务器,从而实现了远程网络视频信息采集。   1 系统总体设计   该系统是以ARM9处理器S3C2440为核心,在嵌入式Linux系统平台下,通过USB摄像头采集视频信息,然后对所得到的视频数据通过内部总线送到视频服务器MJPG-streamer上,视频服务器经过对图像压缩处理,经过以太网传输出去,远端客户机通过浏览器或者专用软件访问视频服务器,即可浏览现场信息,从而实现网络视频采集。系统总体如图1所示。      2 系统硬件设计   系统的硬件框图如图2所示。      系统处理
[单片机]
基于<font color='red'>S3C2440</font>和USB摄像头的网络视频采集系统
s3c2440裸机-电阻触摸屏-1-电阻触摸屏原理
一、电阻触摸屏原理 触摸屏包含上下叠合的两个透明层,一般覆盖在lcd表面,两个透明层是由均匀的电阻介质组成,如下图。 当触摸屏表面受到的压力(如通过笔尖或手指进行按压)足够大时,顶层与底层之间的薄膜会产生接触,此时会形成x方向和y方向的坐标。那么x,y坐标的值是怎么得来的呢?本质上就是通过ADC转换得来的。详解如下: 触摸屏的等效电路可以看成如下图: 计算触点的X,Y坐标分为如下两步(见下图): 1.计算Y坐标: 在Y+电极施加驱动电压Vdrive, Y-电极接地,由于上下两层膜形成触点,X+做为触点的引出端,测量得到接触点的电压,触点电压与Vdrive电压之比等于触点Y坐标与屏高度之比。如下图: 2.计算X坐标:
[单片机]
N76E003 驱动 ST7567 (SPI串口
再看DXP原理图(+Bat为3.3V),LCD_Rst为硬件复位引脚,如不需要可直接设为高电平。BG_V/BG_G为背光端,单片机控制背光可使用三极管。 初始化流程 对比度调节 COG.c文件代码 #include N76E003.h #include SFR_Macro.h #include Function_define.h #include Common.h #include Delay.h #include intrins.h #include COG.h #include LCDFont.h #define Page0 0xb0 //第0页地址 #define Page_max 0
[单片机]
N76E003 驱动 ST7567 (SPI<font color='red'>串口</font>)
S3C2440 开发环境搭建(Ubuntu)
我的操作系统是 Ubuntu 1404。可以使用下面的命令查看系统的版本 cat /etc/issue 安装、配置、启动 ftp 服务 sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面几行前面的“#”号去掉。 #local_enable=YES #write_enable=YES 上面第一行表示是否允许本地用户登录,第二行表示是否允许上传文件。 修改完华之后,执行以下命令重启ftp服务: sudo /etc/init.d/vsftpd restart 安装、配置、启动 ssh 服务。 sudo apt-get install openssh-se
[单片机]
51单片机之232串口实现
任务要求 Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。 1、通过波特率计算定时器T1时间常数初值。 2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。 3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。 发送机(甲机) /***************************************************** *任务要求 *Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。 *1、通过波特率计算定时器T1时间常数初值。 *2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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