S3C2440 UART使用笔记

发布者:创新之梦最新更新时间:2016-12-06 来源: eefocus关键字:S3C2440  UART  使用笔记 手机看文章 扫描二维码
随时随地手机看文章

  Uart_Init(0,115200);
////////////////////////////////********************************************************************////////////////////////////////////////////////
void Uart_Init(int pclk,int baud)

{

    int i;

    if(pclk == 0)

    pclk    = PCLK;

    rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable

    rUFCON1 = 0x0;   //UART channel 1 FIFO control register, FIFO disable

    rUFCON2 = 0x0;   //UART channel 2 FIFO control register, FIFO disable

    rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable

    rUMCON1 = 0x0;   //UART chaneel 1 MODEM control register, AFC disable

//UART0

    rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits
注: bit7:保留位
 bit6: 通讯模式0--Normal mode      1--Infrared Tx/Rx Mode
 bit[5:3]:校验模式000--No parity
 bit[2]:停止位  0--one stop bit    1--two stop bit
 bit[1:0]:没帧数据位 00-5 bits  01--6 bits  10--7bits  11--8bits

     //    [10]           [9]        [8]        [7]                [6]          [5]                  [4]           [3:2]                     [1:0]

     // Clock Sel,  Tx Int,  Rx Int, Rx Time Out, Rx err, Loop-back, Send break,  Transmit Mode, Receive Mode

     //     0                1         0    ,          0              1            0                 0     ,                 01                   01

     //   PCLK       Level    Pulse    Disable    Generate  Normal      Normal        Interrupt or Polling

    rUCON0  = 0x245;   // Control register
注: bit[15:12]: all zero
 bit[11:10]: 00/10--PCLK    01--UEXTCLK    11-FCLK/n
 bit[9]:TX中断设置:0--Pulse   1--Level
 bit[8]:RX中断设置:0--Pulse   1--Level
 bit[7]:Rx Time Out:Disable
 bit[6]:1--Generate  Rx err interrupt  0--不生成中断
 bit[5]bit[4]:Normal Mode
 bit[3:2]bit[1:0]: 01--Interrupt or Polling Mode

    rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 );   //Baud rate divisior register 0
 注: UBRDIVn  = (int)( UART clock / ( buad rate x 16) ) –1

//UART1

    rULCON1 = 0x3;

    rUCON1  = 0x245;

    rUBRDIV1=( (int)(pclk/16./baud+0.5) -1 );

//UART2

    rULCON2 = 0x3;

    rUCON2  = 0x245;

    rUBRDIV2=( (int)(pclk/16./baud+0.5) -1 );    

注:串口1、2与串口0设置一样

    for(i=0;i<100;i++);

}
////////////////////////////////********************************************************************////////////////////////////////////////////////
consoleNum = 0;
Uart_Select( consoleNum );//whichUart = consoleNum ;
Uart_SendByte('\n');
////////////////////////////////********************************************************************////////////////////////////////////////////////

void Uart_SendByte(int data)

{

if(whichUart==0)

{

 if(data=='\n')

 {

  while(!(rUTRSTAT0 & 0x2));    
  注: UTRSTATn为只读寄存器,只有低3位有效,该处为死等到发射buffer为空
   bit[0]: Receive buffer data ready: 0--Empty   1--buffer has a received data
   bit[1]:Transmit buffer empty:0--The buffer not empty    1--empty
   bit[2]:Transmit empty:0--not empty   1--Transmitter (transmit buffer & shifter register) empty

  // Delay(1);                 //because the slow response of hyper_terminal 

  WrUTXH0('\r');
  注: 发送数据'\r'回车

 }

 while(!(rUTRSTAT0 & 0x2));   //Wait until THR is empty.

 //  Delay(1);

 WrUTXH0(data);
 注: 发送数据'\n' next line

}

else if(whichUart==1)

{

 if(data=='\n')

 {

  while(!(rUTRSTAT1 & 0x2));

  //Delay(1);                 //because the slow response of hyper_terminal 

  rUTXH1 = '\r';

 }

 while(!(rUTRSTAT1 & 0x2));   //Wait until THR is empty.

 //Delay(1);

 rUTXH1 = data;

}   

else if(whichUart==2)

{

 if(data=='\n')

 {

  while(!(rUTRSTAT2 & 0x2));

  //Delay(1);                 //because the slow response of hyper_terminal 

  rUTXH2 = '\r';

 }

 while(!(rUTRSTAT2 & 0x2));   //Wait until THR is empty.

 //Delay(1);

 rUTXH2 = data;

}       

}          
////////////////////////////////********************************************************************//////////////////////////////////////////////// 


关键字:S3C2440  UART  使用笔记 引用地址:S3C2440 UART使用笔记

上一篇:S3C2440 测试程序(一)PWM控制蜂鸣器测试
下一篇:S3C2440中断与异常定义与基本知识

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

S3C2440开发板上BMP图片的显示之三
三、BMP图片显示功能扩展 1、图片显示的功能扩展 (1)能够调整图片的显示区域,比如我准备了一张 480x384的图片,液晶屏大小只有它的九分之一,要通过键盘控制,“看到整张图片”。 (2)能够显示单色、16色、256色、24位真彩色图片。 (3)能够对图片进行缩小显示,比如前面那个480x384的图片,能够缩小比例显示在液晶屏上。这个实现应该不难,但是放大就比较麻烦了,要用到数学上的插值,这个稍微做一下尝试。 2、图片的移动 (1)分析 首先一个要明确的概念,我们所谓“移动图片”,实质不是在移动图片,而是在移动观测图片的 “显示窗口”。 比如一张比显示屏大的图片,现在只显示了上半部分,我们要看它的下半部分,可以按下方向键“
[单片机]
S3C2440 之USB设备篇
S3C2440 有2 个USB 主机接口和1 个USB 设备接口, 本篇讲述USB 设备接口。 1 USB 的分类及主机接口和设备接口的区别 1.1USB2.0 按照速度分为以下三类 High-speed USB2.0 :理论速度480Mbps ,对应之前的USB2.0 ; Full-speed USB2.0 :理论速度12Mbps ,也就是过去的USB1.1 ; Low-speed USB2.0 :理论速度1.5Mbps ,这个一般用于鼠标、键盘等对速度要求不高的外部设备。 1.2 低速USB 全速USB 硬件设备接口的区别 USB 通过D-,D+ 信号的状态判断设备的插入,如下图所示,D+ 接上拉电阻为全速设备,D-
[单片机]
<font color='red'>S3C2440</font> 之USB设备篇
测试S3C2440的定时器
/******************************************* * 文件名称:PWM.c * 功能:测试s3c2440的PWM功能 * 作者:jianqi * 版本:1.0 **********************************************/ #include 2440addr.h //包含2440相关寄存器的设置 #include def.h #define U32 unsigned int //四个LED对应GPB5.6.7.8。 #define LED1 5 #define LED2 6 #define LED3 7
[单片机]
MSP430学习总结——UART串口
一、MSP430串口 我用的这个单片机是MSP430F5529,这个单片机有两个串口,分别是USCI_A0和USCI_A1,以下是关于MSP430串口的配置以及接收函数和发送函数。 二、串口配置 说到串口,那肯定离不开起始位、数据位、校验位、停止位以及波特率。 先来说一下常用的寄存器。 串口控制寄存器0 这个寄存器可以设置数据位,停止位和校验位等 串口控制寄存器1 这里可以设置时钟源和中断使能等 波特率设置寄存器 波特率设置涉及到三个寄存器UCA0BR,UCA0BR1,UCA0MCTL 具体的设置方法在芯片手册上有写,也可以参考一下这位大佬的博客https://blog.csdn.net/weixin_27070451
[单片机]
MSP430学习总结——<font color='red'>UART</font>串口
S3C2440为平台对智能模拟人控制箱和按压通气功能的设计与实现
引 言 医学模拟教学是利用各种模拟手段, 再现临床医学的工作场景, 为学习者提供一个无风险的学习临床知识和技能的条件与环境。医学模拟教学以其对病人无创、方便、操作可重复、低成本等优势已经成为现代医学教学的主导方式之一。我国在临床医学模拟教学设备还处于比较低层次上, 高端的教学设备多数还以进口为主, 自主研发并实际应用很少。智能模拟人系统正是在这种情况下填补了现在国内市场的空白, 满足我国临床医学高层次实践教学需求。 智能综合模拟人系统采用目前国际医学模拟教学中比较流行的触觉感知技术, 可以逼真地模拟各种医疗过程, 并对各个过程进行实时监控。本文主要介绍医学教学和临床教学中常用的除颤, CPR 和Vent ilat io n 的
[单片机]
以<font color='red'>S3C2440</font>为平台对智能模拟人控制箱和按压通气功能的设计与实现
S3C2440 IIC总线接口
s3c2440内部有一个IIC总线接口,因此为我们连接带有IIC通信模块的外围设备提供了便利。它具有四种操作模式:主设备发送模式、主设备接收模式、从设备发送模式和从设备接收模式。 在这里只把s3c2440当做IIC总线的主设备来使用,因此只介绍前两种操作模式。在主设备发送模式下,它的工作流程为:首先配置IIC模式,然后把从设备地址写入接收发送数据移位寄存器IICDS中,再把0xF0写入控制状态寄存器IICSTAT中,这时等待从设备发送应答信号,如果想要继续发送数据,那么在接收到应答信号后,再把待发送的数据写入寄存器IICDS中,清除中断标志后,再次等待应答信号;如果不想再发送数据了,那么把0x90写入寄存器IICSTAT中
[单片机]
<font color='red'>S3C2440</font> IIC总线接口
基于单片机通用引脚的软件UART设计
引言 随着单片机应用技术的不断深入,由单片机构成的多机系统取得了长足的发展,多个单片机之间以串口进行数据传输,构成复杂的主从式通讯网。在多机系统中的有一些单片机承担着复杂的通讯任务,当计算机的串口不能满足需要,就必须对串口进行扩展。如多参数医用监护仪、小区防盗报警系统、RS485总线控制系统等。 目前扩展串口的方法主要有以下方法, ①、采用串口扩展芯片实现,如ST16C550、ST16C554、SP2538、MAX3110等,虽然成本较高, 但系统的可靠性得到了保证,适用于数据量较大、串口需求较多的系统;②、采用分时切换的方法将一个串口扩展与多个串口设备通信,分时复用的方法成本低, 但只适用于数据量不大的场合, 并且只能由这个
[单片机]
U-boot在S3C2440上的移植详解(四)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。因为测试u-boot引导内核我们要用到网络下载功能。 7)u-boot对CS8900或者DM9000X网卡的支持。 u-boot-2009.08版本已经对CS8900和DM9000X网卡有比较完善的代码支持(代码在drivers/ne
[单片机]
U-boot在<font color='red'>S3C2440</font>上的移植详解(四)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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