s3c2440之串口

2023-05-16

1:s3c2440串口概述

s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行I/O(SIO)端

口,每个端口都可以在中断模式或DMA模式下操作。换言之,UART 可以生成一个中断或

DMA 请求用于CPU 和UART 之间的数据传输

2:串口的工作原理

每个UART 包含一个波特率发送器,发送器,计数器和一个控制单元,如图11-1 所示。其波特率发生器可由PCLK,FCLK/n 或UEXTCLK(外部输入时钟)来锁定。发送器和接收器包含了64 位FIFO 和数据移位器。数据写到FIFO 然后在被传送前拷贝到发送移位器。数据通过发送数据引脚(TxDn)被发出。同时,接收数据通过接收数据引脚(RxDn)移入,然后从移位器拷贝到FIFO。

3:串口寄存器的设置

在使用UART前,需要设置波特率,传输格式,设置管脚为UART功能,选择UART通道的工作模式为中断模式或者DMA模式,设置好之后,往某个寄存器中写入数据即可发送,读取某寄存器即可得到接收的数据,可以通过查询状态寄存器或者设置中断来获知数据是否已经发送完毕,是否已经接收到数据。

配置相应I/O口的寄存器,将所涉及的UART通道管脚设置为UART功能。

比如UART通道0中,GPH2,GPH3分别用作TXD0,RXD0,要使用UART通道0时,先设置GPHCON寄存器将GPH2,GPH3引脚功能设置为TXD0,RXD0。

UBRDIVn寄存器,用于设置波特率。

ULCONn寄存器,设置传输格式。

UCONn寄存器,用于选择UART的时钟源,设置UART中断方式等等。

UFCONn寄存器,UFSTATn寄存器。UFCONn寄存器,用于设置是否使用FIFO,设置各FIFO的触发阈值,可以通过调协UFCONn寄存器来复位各个FIFO。读取UFSTAT n寄存器可以知道各个FIFO是否已满,其中有多少数据。如果不使用FIFO时,可以认为FIFO的深度为1,如果使用FIFO时,S3C2440的FIFO深度为64。

UMCONn寄存器,UMSTATn寄存器,用于流量控制。

UTRSTATn寄存器用来表明数据是否已经发送完毕,是否已经接收到数据。

USERSTATn寄存器,用于表示各种错误的发生。

UTXHn寄存器,CPU将数据写入到这个寄存器,UART即会将它保存到缓冲区中,并自动发送出去。

URXHn寄存器,当UART接收到数据时,CPU读取这个寄存器,即可获得数据。

4:uart实验

在PC机端,通过键盘输入字符串后,即可以在超级终端下看到输入的字符。

4.1:串口的初始化

void Uart_Init()

{

rGPHCON |= (0xa<<4);

rGPHUP = 0xffff;//将GPH2~3端口设置为串口功能,且允许上拉!

rUFCON0 = 0x0;//不使用FIFO

rUMCON0 = 0x0;//不适用流控制

rULCON0 = 0x3;//8个控制位,无校验位,1个停止位。

rUCON0 = 0x245;//工作于查询模式,设置uart的时钟源。

rUBRDIV0 = (int)(PCLK/16.0/baud + 0.5) - 1; //波特率设置为115200.

}

4.2:串口系统时钟的设置

void Pll_Init()

{

rLOCKTIME = 0xffffffff;

rUPLLCON = (U_MDIV<<12) + (U_PDIV<<4) + (U_SDIV);

delay(1000);

rMPLLCON = (M_MDIV<<12) + (M_PDIV<<4) + (M_SDIV);

delay(1000);

rCLKDIVN = CLKDIV;

rCLKCON |= (1<<10);

}

4.3:串口接收数据

unsigned char Get_Char()

{

while(!(rUTRSTAT0 & 0x01));//等待,直到接收缓冲区中有数据

return rURXH0;//读取rURXH0中数据.

}

4.4:串口发送数据

void Put_Char(unsigned char c)

{

while(!(rUTRSTAT0 & 0x04));//等待,直到发送缓冲区中数据为空

rUTXH0 = c;//想rUTXHO中写入数据,uart自动将它发送出去。

}

5:编译,下载测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

s3c2440之串口 的相关文章

  • 日常记录(1)

    数据库连接池Druid Alibaba github地址 xff1a https github com alibaba druidBlog xff1a http blog csdn net pk490525 article details
  • NOA上车「清一色」自主品牌,哪些供应商正在突围前线

    随着入门级L2进入普及周期 xff0c 以NOA xff08 高速 城区 xff09 为代表的L2 43 L2 43 43 赛道 xff0c 正在成为主机厂 硬件供应商 算法及软件方案商的下一波市场制高点的争夺阵地 高工智能汽车研究院监测数
  • 【STM32-初始化的时候是如何通过结构体给寄存器赋值的?】

    使用的是正点原子的源码 xff0c 一直没有搞明白初始化的时候是怎么给相关的寄存器赋值的 xff0c 今天琢磨了一下 xff1a 首先 xff0c 创建了一个GPIO InitTypeDef类型的结构体变量GPIO InitStructur
  • 多元建模基础(二):正态混合分布

    1 正态方差混合模型 xff1a 1 xff09 定义 xff1a 称 显然 xff0c xff0c 混合分布中 xff0c 由W的分布确定一组权值 xff0c 混合变量W可以被解释为来自新信息并影响所有风险因子波动性的扰动 位置向量和分散
  • 神经RRT*:基于学习的最优路径规划 翻译+总结

    摘要 xff1a 快速随机探索树 xff08 RRT xff09 及其变体由于能够快速有效地探索状态空间而非常流行 然而 xff0c 它们对初始解很敏感 xff0c 收敛到最优解的速度很慢 xff0c 这意味着它们需要消耗大量内存和时间来找
  • 解决 Windows has triggered a breakpoint in Linkage.exe问题

    这两天在做一个小项目 xff0c 里面有多线程的东东 xff0c 在调试的时候 总是遇到 Windows has triggered a breakpoint in Linkage exe 的错误 现在将这个问题和大家分享一下 前提是这样的
  • 写一个简单的爬虫,可直接复制学习!!

    简单爬虫直面代码 xff0c 可直接复制学习 这个代码的作用主要是用来获取到百度首页的数据 xff0c 只用来供理解学习 真 小白 福利 todo 首先导包requests 用于爬取数据 import requests todo 定义你要爬
  • Dataloader类

    Dataset让我们可以知道数据在什么位置 xff0c 及数据的的索引对应的数据 Dataloader相当于加载器 xff0c 把数据加载到神经网络中 import torchvision 测试数据集 xff0c train设置为false
  • 如何把截图固定在电脑页面上

    如果我们给人讲网课课 xff0c 或者汇报的时候想把公式 xff0c 定理 xff0c 图片等放在醒目位置做对比 那么我们可能需要把截图放在别的文件的页面上 xff0c 那么我们要怎么做呢 xff1f 方法一 xff1a 利用QQ截图功能
  • 如何写好一个算法

    写出算法有一个比较通用的方法论 xff0c 步骤如下 xff1a 1 理解问题 先弄清楚具体要解决什么问题 做成怎样的程度就可以满足问题需要 xff1f 是需要精确值还是近似值 xff1f 2 分析问题 用数学思路去描述问题的求解过程 3
  • python如何读取txt里面的数据

    当我们在用python时可能会遇到想要把txt文档里的数据读取出来然后进行绘图 xff0c 那么我们要怎么才能够将txt里的数据读取出来呢 xff1f 假设有txt文本如下 xff1a 想要把上述文本数据读取出来 xff0c 可以用以下方法
  • MATLAB读取数据(txt|excel)并绘图

    最近做了实验 xff0c 要绘图进行比较 xff0c 网上百度搜索搞了很久 xff0c 终于搞定了 写个文章记录一下 废话不多讲 xff0c 咱们步入正题 以下是以txt文档为例进行的绘图 xff0c 如果用excel更加简单 道理都是一样

随机推荐

  • 如何用电脑自带的软件录屏

    有时候想要用电脑录屏 xff0c 但是电脑又没有录屏软件 xff0c 那我们有没有办法进行录屏呢 xff1f 可以借助 游戏 设置进行录屏哦 xff01 本人电脑 xff1a win10系统 1 点击桌面左下角windows图标 xff0c
  • 如何设置电脑锁屏后程序仍在运行

    最近在跑代码的时候 xff0c 回去午睡后过来打开电脑发现程序没跑 发现电脑锁屏后程序不再运行了 xff0c 重新将电脑设置锁屏后仍运行 xff0c 如下 xff1a 1 同时按下win 43 R 打开 运行 界面 2 输入control
  • Latex文献引用显示?解决

    最近在写论文的时候 xff0c 发现执行latex时应该显示的文献号变成 xff1f 号了 按照网上的多种方法还没解决好 解决文献引用问题主要有以下方法 xff1a 1 end document 的语句位置问题 执行文件之所以没有找到bib
  • 有些参考文献找不到页码和期号怎么解决?

    在我们撰写论文时不论是查找下载期刊文献资料还是编辑参考文献都会需要知道该期刊论文的期卷号 xff0c 那么 xff0c 期刊论文的期卷号怎么找呢 xff1f 下面小编就介绍几种论文期卷号的查找方法 xff08 注 xff1a 文中所用的检索
  • CUDA入门(一)

    最近我也都在看CUDA xff0c 自己看书和练习也都搞了一个月了 而且经常在CSDN上逛 xff0c 也发现了很多问题 xff0c 所以决定自己写点这方面的东西 xff0c 方便自己也方便后来人 根据我的调查 xff0c 我发现现在的初学
  • 如何在excel多条件筛选

    最近在报名各种考试 xff0c 发现表格里的职位一大堆 xff0c 条件也一大堆 一个个找找的头都大了 经过多方查找和同学 xff08 CC xff09 的帮助 xff0c 终于成功学会了怎么多条件筛选 浅浅记录一下 xff1a 比如在一张
  • MTLAB读取数据并计算平均值

    当想从matlab里面读取excel表格的某一列进行计算时 xff0c 可以进行如下操作 1 读取excle表格里的数据 xff0c 具体操作见文章MATLAB读取数据 xff08 txt excel 并绘图 matlab读取数据并绘图 沉
  • word表格如何令文字上下居中

    第一步 xff1a 在word文档中插入需要的表格 xff0c 如图所示 第二步 xff1a 如下图所示 xff0c 单击红色圆圈标记的图标 xff0c 表格被全部选中 xff0c 如图所示 第三步 xff1a 在表格中 xff0c 单击鼠
  • 键盘打字时,打一个字后面少一个字如何解决

    键盘敲字时 xff0c 如果光标在中间 xff0c 输入一个字后面就少一个字 文字输入的例子 只需要按INS 键就可以恢复正常了 注 xff1a 如果是手提笔记本电脑 xff0c 一个键盘有两下两行 xff0c 先按一下FN 按键 xff0
  • 教你如何开发VR游戏系列教程五:UI 交互

    原文链接 xff1a 欢迎关注AR学院 上一篇介绍了ugui NGUI 以及普通3D模型的UI设计 这一讲主要介绍怎么样利用这些UI做交互 大家在VR游戏看到的UI以及UI交互 xff0c 主要有哪几种 xff1f 1 头控悬停 xff08
  • 顶会论文集--ICRA2020

    转自 https blog csdn net spacegene article details 107458141 utm medium 61 distribute pc relevant none task blog title 3 a
  • 机器人学习--Gazebo学习--sdf文件、urdf和xacro文件

    供学习使用 xff1a 参考 xff1a https blog csdn net lxlong89940101 article details 93486875 utm medium 61 distribute pc relevant no
  • 多传感器数据融合简介(转)

    转自知乎网友 xff1a 多传感器融合 xff08 算法 xff09 综述 知乎 多传感器融合 xff08 Multi sensor Fusion MSF xff09 是利用计算机技术 xff0c 将来自多传感器或多源的信息和数据以一定的准
  • 动态SLAM

    动态SLAM快速入门 xff08 原理介绍及经典算法 xff09 https mp weixin qq com s biz 61 MzU1NjEwMTY0Mw 61 61 amp mid 61 2247520976 amp idx 61 1
  • 经典编程问题(13)汉诺塔

    背景 汉诺塔 xff0c 又称河内塔 hanoi xff0c 源于印度古老的传说 该传说中要求在三个柱子间移动金质的圆盘 xff0c 规则是 xff1a 每次只能移动一个盘子大盘子不能放在小盘子的上方开始的时候 xff0c 在某根柱子上有
  • 2011年终总结——思路

    By Alpha G wu 又是一年的尽头 xff0c 对于本人来说 xff0c 不是老了一岁 xff0c 而是又长大了一岁 每一天的自己都是一个fresh的自己 xff0c 更别说一年的变化有多大 xff0c 大到甚至连你自己都察觉不出来
  • win10下完美安装ubuntu使用docker容器

    期待以久的windows 10支持ubuntu版本更新终于发布了 xff0c 怀着期待的心情 xff0c 下载更新到2004版本 xff08 设置 gt 关于中查看 xff09 如果版本较低 xff0c 可以使用win10更新包提示 xff
  • 学习ing

    分治算法 一 基本概念 在计算机科学中 xff0c 分治法是一种很重要的算法 字面上的解释是 分而治之 xff0c 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 xff0c 再把子问题分成更小的子问题 直到最后子问题可以简单的直接
  • C语言中字符串相关操作函数

    长度 strlen size t strlen const char str 功能 xff1a 返回字符串长度 strnlen size t strnlen const char str size t maxlen 功能 xff1a 返回字
  • s3c2440之串口

    1 xff1a s3c2440串口概述 s3c2440A 通用异步接收器和发送器 xff08 UART xff09 提供了三个独立的异步串行I O xff08 SIO xff09 端 口 xff0c 每个端口都可以在中断模式或DMA模式下操