OK6410:UART

2024-02-03 17:32
文章标签 uart ok6410

本文主要是介绍OK6410:UART,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  串口又叫UART,通过异步实现(没有时钟,有时钟就是同步)
  串口一般为调试位
  串口的其中3条线,其功能是:发送、接收、接地线
  发送的数据是由开始位,数据位,停止位组成。开始停止均为高电平


  PC端先检测发送线是否为低电平,为低电平表示对方要发数据
  等待一段时间,然后开始检测数据,一般检测位的中间


  每一位占据多长时间:波特率(一秒钟之内要传输多少位),为115200
  开始位、数据位、停止位各占多少: 校验位为空,开始位没有设置,默认为1、数据位:8、停止位:1




  把数据写到一个缓冲器里面,硬件会自动发送数据
  读也一样。然后通过读寄存器获取数据


  先初始化串口,设置一些串口的参数,如波特率,数据位,停止位...
  GPA设置为串口的输入输出,设置为0010(专门给UART使用的)GPA0接收,GPA1发送


  设置串口0,这设置ULCON0


  红外模式:正常则设置0
  校验位:不使用,设置为000
  停止位: 0为1个
  数据位:8




  ULCON0 = 0x3 8n1 数据位8 无校验n 停止位1


  UCON0设置
  先设置时钟源,使用PCLK
  回环模式:内部接收和发送连在一起,测试用
  设置发送和接收模式


  可以使用Buffer,因为串口比较慢,最好用缓存区

  UFCON0最后一位使能,则使用

  UMCON0流量控制,先设置为0


  串口波特率配置寄存器UBRDIV0
  PCLK = 66.5MHz

  b = 115200

  UBRDIVO的计算公式:

  Div_val = 66.5 * 10^6 / 115200 /16 - 1 = 35.08 = UBRDIVO + VDIVSLOTO的1个数 / 16 = 35 + 0.8
得1的个数为1



  读数据函数:

  读取UFSTAT0最后三位while(UFSTATO & 0x7f == 0);

  如果RX FIFO为空,等待

  6位为1则缓存器满,
  有数据则读取URXH0,即返回


  写数据函数
  读取while(UFSTATO & (1 << 14)); 如果TX FIFO满,等待
  把数据送到UTXHO

  注意URXHO、UTXHO为unsigned char因为数据位八位


  下面把代码贴出来:

  

这篇关于OK6410:UART的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674879

相关文章

笔记 14 : 彭老师课本第 8 章, UART : 寄存器介绍 ,

(99) 继续介绍 uart 的关于通道的 一整套 寄存器, UCON 等: ++ 接着介绍寄存器 UTRSTAT : ++ 接着介绍读写数据的寄存器: ++ 设置 uart 的波特率,有关的寄存器: ++ (100) (101) 谢谢

UART串口通信——FPGA学习笔记9

一、数据通信基本概念 按数据通信方式分类: 串行通信、并行通信 按数据传输方向分类: 单工通信、半双工通信、全双工通信 按数据同步方式分类: 同步通信、异步通信 常见的串行通信接口: 二、串口通信:         UART 是一种采用异步串行通信方式的通用异步收发传输器(universal asynchronous receiver-transmitter)

新路程------imx6的uart小结(1)

imx6用的是RS485,今天看看这个接口是怎么初始化的。 首先在./arch/arm/mach-mx6/board-mx6q_sabresd.c里找uart的相关信息 在static void __init mx6_sabresd_board_init(void)肯定会有初始化的相关信息 gpio_request(SABRESD_EPDC_PWRSTAT, "uart

新路程------hi3516a的uart rts cts功能

有位前辈写了以gpio方式控制rts,在驱动内核中修改http://blog.csdn.net/edw200/article/details/52251385?locationNum=4   就是在发送前拉高,发送后拉低,但是这样要计算时间,比较麻烦,而且不同的波特率容易时间计算不准确,所以还是应该由上层把这个事做了,也就是用ioctl的形式来做,这样比较安全放心。        r

串行通信协议——UART

概述 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种广泛使用的串行通信协议,用于实现计算机与外设之间或两个计算机之间的数据传输。UART通信以异步方式进行,这意味着发送和接收设备不需要共享时钟信号。在嵌入式系统、工业控制、消费电子产品等领域,UART通信协议得到了广泛应用。 UART通信原理 UART通信基于RS-

电路笔记(通信):UART Universal Asynchronous Receiver/Transmitter+电缆信号完整性改善

UART协议概述 URAT(Universal Asynchronous Receiver/Transmitter)协议用于在两个设备之间进行数据传输。UART协议因其简单性和广泛应用而成为串行通信的一个基本选择,适合各种数据传输需求的应用。 异步传输 定义: UART是一种异步串行通信协议,这意味着数据在传输过程中不依赖于时钟信号,而是通过约定的波特率(baud rate)来同步数据传输。

【硬件操作入门】3--同步与异步、半双工传输、UART硬件介绍、bps速率计算

【硬件操作入门】3–同步与异步、半双工传输、UART硬件介绍、bps速率计算 文章目录 【硬件操作入门】3--同步与异步、半双工传输、UART硬件介绍、bps速率计算一、同步与异步1.1. 概念1.2 同步信号1.3 异步信号1.4 举个例子:红外遥控器解码器(异步)1.5. 同步与异步的差别 2、使用一线传输双向数据(半双工)2.1. 面临的问题2.2. 解决方法2.3. 双向传输示例

RK3568平台(UART篇)uart_driver 注册流程

一.串口子系统框架 串口子系统框架是 Linux 内核中专门用于处理串口设备的模块化框架: 在上图中,包含了多个层级,每个层级负责处理不同的功能和任务,从而实现串口设备的 完整驱动和管理。接下来依次介绍每个层级的作用。 应用层:位于最顶层,是串口子系统中用户空间应用程序与内核空间之间的接口,应用层 包括了用户空间的串口应用程序,如串口通信工具 minicom 等。 字符设备层:位于应用

51单片机.之 UART串口

备 注:只当接收到大写字符’B’后改变蜂鸣器的开/关状态 /********************************************************************************* 《手把手教你学51单片机(C语言版)》* 配套 KST-51 单片机开发板 示例源代码*

STM32通过ADM3222完成UART转232通信电平转换

1、简介 单片机默认串口输出电平是UART信号,但是在实际项目中经常需要将其转换成232电平,此时就需要ADM3222芯片来完成电平的转换,下面对使用过程进行总结。 2、硬件电路  从上图中可以看到芯片需要对1、18进行配置才能进行工作,通过查阅手册可知,1引脚需要配置低电平,18引脚需要配置成高电平,芯片才能工作。 通过该芯片支持两路信号转换,本次通过串口1进行测试,单片机的串口1接