S3C2440 UART串口驱动2

发布者:annye_cheng最新更新时间:2016-12-06 来源: eefocus关键字:S3C2440  UART  串口驱动 手机看文章 扫描二维码
随时随地手机看文章

通过MINI2440硬件CPU管脚图可以看出,RSTXD0和RSRXD0连接到CPU的GPH2和GPH3管脚上的,而GPH2和GPH3是CPU复用管脚,因此我们要对GPH2和 GPH3对应寄存器进行设置,其对应寄存器为GPHCON。

表2-23 GPIO端口H设置寄存器(GPHCON)

寄存器名

地址

是否读写

描述

复位默认值

GPHCON

0x56000070

R/W

GPIO端口H配置寄存器

0x0

GPHDAT

0x56000074

R/W

GPIO端口H数据寄存器

未定义

GPHUP

0x56000078

R/W

GPIO端口H上拉无效寄存器

0x000

 

GPHCON

描述

初始值

GPH3

[7:6]

设置当前管脚功能:

00 = 输入端口  01 = 输出端口

10 = RXD[0]配置为串口0的接收数据管脚

11 = 保留

0

GPH2

[5:4]

设置当前管脚功能:

00 = 输入端口  01 = 输出端口

10 = RXD[0]配置为串口0的接收数据管脚

11 = 保留

0

GPHCON[7:6]和GPHCON[5:4]为RSTXD0和RSRXD0管脚设置位,将其功能设置为了UART专用通信管脚,因此应该设置其为0b10,分别用于UART数据的接收和发送。

GPHCON | = 0xa0;

表2-24 GPIO端口H上拉电阻设置寄存器(GPHUP)

GPHUP

描述

初始值

GPH[10:0]

[10:0]

设置对应管脚GPHn的是否启用上拉功能

0 = 启用上拉功能

1 = 禁用上拉功能

0

GPHUP上拉电阻设置寄存器:上拉电阻用来稳定电平信号,保障传输数据的正确,GPHUP里设置其内部上拉。

GPHUP = 0x0;

表2-25 UART0串行控制寄存器(ULCON0)

寄存器名

地址

是否读写

描述

复位默认值

ULCON0

0x50000000

R/W

串口0串行控制寄存器

0x00

 

ULCON0

描述

初始值

保留

[7]


0

红外模式

[6]

选择串口0是否使用红外模式:

0 = 正常通信模式

1 = 红外通信模式

0

校验模式

[5:3]

设置串口0在数据接收和发送时采用的校验方式:

0xx = 无校验

100 = 奇校验

101 = 偶校验

110 = 强制校验/检测是否为1

111 = 强制校验/检测是否为0

000

停止位

[2]

设置串口0停止位数:

0 = 每个数据帧一个停止位

1 = 每个数据帧二个停止位

0

数据位

[1:0]

设置串口0数据位数:

00 = 5个数据位  01 = 6个数据位

10 = 7个数据位  11 = 8个数据位

00

通过设置ULCON0来设置UART0通信方式,ULCON0[6]选择通信方式为一般通信模式或红外通信模式,ULCON0[5:3]设置串口0校验方式,ULCON0[2]设置串口0停止位数,ULCON0[1:0] 设置串口0的数据位数。

我们选择一般通信模式,无校验位,1个停止位,8个数据位的数据通信方式。因此:

ULCON0 = 0x03;

表2-26 UART0串口控制寄存器(UCON0)

寄存器名

地址

是否读写

描述

复位默认值

UCON0

0x50000004

R/W

串口0控制寄存器

0x00

 

UCON0

描述

初始值

FCLK分频因子

[15:12]

当UART0选择FCLK作为时钟源时,设置其FCLK的分频因子

UART0 工作时钟频率 = FCLK/ FCLK分频因子+ 6

0000

UART时钟源选择

[11:10]

选择UART0的工作时钟PCLK,UEXTCLK,FCLK/n:

00,10 = PCLK

01 = UEXTCLK

11 = FCLK/n

当选择FCLK/n作为UART0工作时钟时还要做其它设置,具体请读者自行查看硬件手册

00

发送数据中断

产生类型

[9]

设置UART0中断请求类型,在非FIFO传输模式下,一旦发送数据缓冲区为空,立即产生中断信号,在FIFO传输模式下达到发送数据触发条件时立即产生中断信号:

0 = 脉冲触发

1 = 电平触发

0

接收数据中断

产生类型

[8]

设置UART0中断请求类型,在非FIFO传输模式下,一旦接收到数据,立即产生中断信号,在FIFO传输模式下达到接收数据触发条件时立即产生中断信号:

0 = 脉冲触发

1 = 电平触发

0

接收数据超时

[7]

设置当接收数据时,如果数据超时,是否产生接收中断:

0 = 不开启超时中断  1 = 开启超时中断

10 = 7个数据位  11 = 8个数据位

0

接收数据错误中断

[6]

设置当接收数据时,如果产生异常,如传输中止,帧错误,校验错误时,是否产生接收状态中断信号:

0 = 不产生错误状态中断  1 = 产生错误状态中断

0

回送模式

[5]

设置该位时UART会进入回送模式,该模式仅用于测试

0 = 正常模式  1 = 回送模式

0

发送终止信号

[4]

设置该位时,UART会发送一个帧长度的终止信号,发送完毕后,该位自动恢复为0

0 = 正常传输  1 = 发送终止信号

0

发送模式

[3:2]

设置采用哪个方式执行数据写入发送缓冲区

00 = 无效

01 = 中断请求或查询模式

10 = DMA0请求

00

接收模式

[1:0]

设置采用哪个方式执行数据写入接收缓冲区

00 = 无效

01 = 中断请求或查询模式

10 = DMA0请求

00

通常UART串口采用PCLK作为输入工作时钟,采用简单的轮询方式进行数据接收和发送,不开启数据接收超时,数据产生错误时不产生错误状态中断,因此:

UCON0 = 0x05;

表2-27 UART FIFO控制寄存器(UFCON0)

寄存器名

地址

是否读写

描述

复位默认值

UFCON0

0x50000008

R/W

串口0 FIFO控制寄存器

0x00

 

UFCON0

描述

初始值

发送数据

触发级别

[7:6]

设置FIFO发送模式的触发级别:

00 = FIFO为空触发   01 = 16字节触发

10 = 32字节触发     11 = 48字节触发

00

接收数据

触发级别

[5:4]

设置FIFO接收模式的触发级别:

00 = FIFO为空触发   01 = 16字节触发

10 = 32字节触发     11 = 48字节触发

00

保留

[3]


0

发送FIFO重置

[2]

在重置FIFO后自动清除发送缓冲区

0 = 正常模式       1 = 自动清除

0

接收FIFO重置

[1]

在重置FIFO后自动清除接收缓冲区

0 = 正常模式       1 = 自动清除

0

启用FIFO

[0]

0 = 不启用FIFO     1 = 启用FIFO

0


关键字:S3C2440  UART  串口驱动 引用地址:S3C2440 UART串口驱动2

上一篇:S3C2440 UART串口驱动3
下一篇:基于双处理器的投影机升降控制设计方案

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

STM32F103 UART中断接收 DMA发送
以USART3为例, (1)首先在【stm32f1xx_hal_conf.h】中使能DMA模块,工程增加stm32f1xx_hal_dma.c。 (2)main.c中头部增加以下声明 UART_HandleTypeDef huart3; DMA_HandleTypeDef hdma1_uart3; (3)main.c中增加USART的初始化 /* USART3 init function */ static void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.
[单片机]
s3c2440实验---定时器
 时钟是同步工作系统的同步节拍。  一、时钟的获得有很多种方式   1、外部直接输入时钟信号   2、外部晶振+内部时钟发生器(低频单片机)   3、外部晶振+内部时钟发生器+PLL+内部分频器 二、定时器内部结构   1、总时钟系统        详细说明:在2440刚刚开机的时候,由于PLL尚未开启,FCLK即等于外部输入时钟(12MHz),如果想提供时钟频率,则要开启PLL。PLL分为 MPLL和UPLL。其中UPLL是控制USB的,这与本实验无关。MPLL分为三种时钟FCLK(CPU核时钟)、HCLK(AHB总线设备时钟)、PCLK(APK总线设备时钟)。        2、实验内容:用定时器0实现led灯
[单片机]
<font color='red'>s3c2440</font>实验---定时器
S3C2440 外部按键中断解析
学习bootloader制作的过程中,学到 “通过按键进入中断控制LED亮灭”的实验时,自己所用的开发板和视频讲解中的不同,于是琢磨了一下中断涉及到的各个寄存器,并进行编码尝试,最终完成了实验,达到了通过按键以中断方式控制LED亮灭的目的。2440属于非向量中断方式,和6410、210的向量中断方式对于中断的处理有一些不同,因此本文的讲解并不完全适合6410和210。 一、概念 中断分为两大类:外部中断和内部中断。 1、外部中断:S3C2440的24个外部中断占用GPF0~GPF7(EINT0~EINT7)、 GPG0~GPG15(EINT8~EINT23)。使用这些引脚
[单片机]
<font color='red'>S3C2440</font> 外部按键中断解析
基于S3C2440嵌入式系统主板的电磁兼容性设计
作者:许凯华,董淑云,刘玉华,胡立祥 华中师范大学  随着电子设备的频率越来越高,世界各国对电子产品电磁辐射标准的执行变得越来越严格,如何保证能在有限时间很好地在设计阶段发现并解决EMI/EMC问题非常重要,而PCB往往是一个电子系统的核心构成部分,一个经仔细电磁干扰设计的PCB板,能大幅度降低阻抗不匹配、传输线问题、信号互相耦合等现象引发的信号反射、延迟等线路不稳定因素,同时也可达到降低电磁辐射发射干扰,大大提高系统的稳定性和可靠性。本文将以嵌入式系统主板为平台,运用 EMIStream仿真软件,并采用源端串联端接阻抗的方法分析了解决嵌入式高速主板存在的电磁干扰问题。 1 电磁兼容性 1.1 电磁兼容和电磁干扰
[嵌入式]
s3c2440头文件之2440addr.h
//============================================================================= // File Name : 2440addr.h // Function : S3C2440 Define Address Register // History // 0.0 : Programming start (February 15,2002) - SOP // Revision : 03.11.2003 ver 0.0 Attatched for 2440 //=================================================
[单片机]
FPGA与MSP430通信 UART串口操作
个人感觉,FPGA对数据的处理相对麻烦。在之前的等精度测频法中,明明是简简单单的一些除法,却需要引入IP核来进行一步一步的浮点数运算,当时为此死了很多脑细胞,比较详细的内容见我早一些时间的吐槽博客:Verilog设计练习 基于FPGA的等精度频率计_Krism0912的博客-CSDN博客_用verilog设计等精度频率计 所以最好的是FPGA采集一些基本数据量,然后直接传到电脑或者其他地方进行处理,免得浪费一大把好时光。。 这次是对FPGA串口操作进行的一些调试,FPGA的书写代码有参考网上的资源,不过进行了大幅度的更改,参考的代码太过久远突然找不到了、、 由于FPGA比较常用给别的MCU发数据而不是收数据,所以
[单片机]
FPGA与MSP430通信 <font color='red'>UART</font>串口操作
STM32F0的UART选择HSI作为时钟源
STM32F0的UART上电不工作时,可以将其时钟源改为HSI试试。 在一个无线系统中,使用了一款470MHz LoRa射频模块,使用的CPU为STM32F030,搭建的测试环境为:一块板作为发送机,每秒发送一次,每次10个字节,另一块板作为接收机,总是处于接收状态,每次收到数据就通过串口打印出来。测试时发现,如果发送机上电时给接收机重新上电,则部分接收机的串口就会死掉,此时保持接收机上电,把发送机掉电,则接收机的串口就会恢复正常。 未能找到接收机串口死掉的真实原因,但把UART的时钟源从(HSE驱动的)PCLK换成HSI后,所有接收机重新上电后串口都是好的。
[单片机]
STM32 串口驱动,分层通信
以前在使用串口的时候都是直接使用中断,每收发一个字节都要进一次中断,然后直接在中断进行封包,现在做了一个简单的分层设计,其实这个设计还是驱动设计,后期将逻辑层划分再细致一点,争取做到和linux的shell类似的分层。 软件分层如下 驱动层:串口、DMA、初始化,串口只开启接收空闲中断,DMA中断不开启。 缓冲区:利用malloc和free函数创建的链表,缓冲区管理有两个,一个是接收缓冲区,每次进入接收空闲中断就把数据扔到接收缓冲队列里面去;另一个是发送缓冲区,发送缓冲区无逻辑,这只是一个数据结构。 示意图中的数据指针实际上用的是uint8 数组,当然,第一个数据完全可以塞到第二个数据里面,但是如果使用的是M0芯
[单片机]
STM32 <font color='red'>串口驱动</font>,分层通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

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