历史上的今天
返回首页

历史上的今天

今天是:2025年03月03日(星期一)

正在发生

2020年03月03日 | S3C2440串口(1)

2020-03-03 来源:eefocus

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;
}
 

推荐阅读

史海拾趣

Heimann Optoelectronics Gmbh公司的发展小趣事

进入2015年后,随着物联网、5G等新兴技术的兴起,光电子器件的市场需求呈现出爆发式增长。Hei Inc Optoelectronic Division敏锐地捕捉到了这一市场趋势,及时调整产品策略,加大了对低功耗、小型化光电子模块的研发力度。公司推出的新一代光电子模块不仅满足了市场对于高效能、低能耗的需求,还凭借其优异的性价比迅速占领了市场份额。这一举措不仅推动了公司的快速增长,还进一步巩固了其在光电子领域的市场地位。

DEMMELPRODUCTS公司的发展小趣事

DEMMELPRODUCTS公司深知人才是企业发展的根本。因此,公司始终注重人才培养和团队建设。通过制定科学的培训计划和激励机制,公司吸引了一批优秀的研发、生产和销售人才。同时,公司还鼓励员工之间进行知识和经验的分享与交流,形成了积极向上的团队氛围。这些优秀的人才和团队为公司的发展提供了有力的支持。

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
能有效区分人体与其他物体的红外线辐射,减少误报。
Esterline Technologies Corporation公司的发展小趣事
在极端温度或湿度条件下,传感器的性能可能受到影响。
博通集成(BEKEN)公司的发展小趣事

博通集成深知技术创新是企业发展的核心动力。因此,公司始终保持高额的研发投入,不断推动技术创新和产品研发。公司拥有一支专业的研发团队,具备强大的研发实力和创新能力。通过持续的研发投入和技术创新,博通集成在无线连接芯片设计领域取得了显著的成果和进展。

Aimtec公司的发展小趣事

随着业务规模的扩大,Aimtec公司开始将目光投向国际市场。公司先后在欧洲和亚洲设立了办事处,通过本地化的销售策略和技术支持,逐步打开了国际市场的大门。在国际竞争中,Aimtec凭借其优质的产品和服务,赢得了众多客户的信赖和好评。同时,公司还积极参与国际电子行业的交流与合作,不断提升自身的技术水平和市场竞争力。

问答坊 | AI 解惑

哪个可以发个毕业 设计论文不???

单片机烟雾检测报警器电子毕业设计 等等的毕业设计论文,,,哪个发个连接…

查看全部问答>

EVC4.2下的系统托盘没有图标

我按照网上的一些代码,就是无论如何都是空图标,透明的。 真的没有图标吗? 我明天发一下我的代码…

查看全部问答>

有没有做过ADSP的?

如何使用C来编写两个processor?…

查看全部问答>

需要做网站的朋友快加入我们吧^^^^^^^^

运用全球领先的软件的和平台,结合对商业需求把握,凭借出色的规划设计能力和技术实施能力,运用成熟的项目管理能力,帮助客户在Internet/Intranet上建立全面的基于Web的企业应用,主营业务是向企业及个人提供综合上网服务,目标是建设成为中国领先 ...…

查看全部问答>

北京智博联公司招聘高级电子工程师

本公司招聘硬件工程师,从事检测仪器开发。关注于弱信号的采集、整理和放大。 1.    本科及以上学历; 2.    电子、自动化、硬件电路设计、检测技术等相关专业; 3.    有CPLD或FPGA开发经验者优先; 4.&nbs ...…

查看全部问答>

51单片机的传输方式?

我想向大家请教一下,51单片机的数据传输方式是由输入设备先经过存储器再到数据处理器,还是反过来呢? 如果是前一种的话,数据处理之后就直接存储还是先到地主找数据再返回到存储器,由存储器向输出设备?请各位大虾多多打救啊。…

查看全部问答>

富士通DIY工业控制板原理图及PCB发布

PCB图跳票了好几次,都不好意思了。不说了,直接上货。 [ 本帖最后由 ltbytyn 于 2012-11-28 12:58 编辑 ]…

查看全部问答>

wince 的fatutil.dll 有什么用?

fatutil.dll 这个看有些人实现多fat 分区会用到这个dll ,在SLC nandflash 上,我现在要做这个功能,但是行不通,这个fatutil.dll 什么用的?…

查看全部问答>

晒WEBENCH设计的过程+移动电源设计之一

移动电源电路设计: 输入1:3.3到4.2V,输出5V,这个是电池逆变电路 输入2:4.5V到5.5V,输出3.7V,这个是电池充电电路 设计步骤: 第一步,选择两个输入和两个输出,添加电源和负载 第二步,编辑优化设计参数 第三步,检视和编辑项目设计 ...…

查看全部问答>

STM32用DMA读取ADC1的两个通道,,怎么都不能实现是怎么回事 啊

/******************** (C) COPYRIGHT 2012 WildFire Team ************************** * ÎļtÃû  £omain.c * Ãèêö    £oóÃ3.5.0°æ±¾½¨μÄ1¤3ì ...…

查看全部问答>