S3C2440串口(1)

发布者:数字驿站最新更新时间:2020-02-28 来源: 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)

上一篇:SmartARM3250 CF卡使用说明
下一篇:keil4.74中运行s3c2440程序出现警告 进行一步骤修改

小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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