rtems bbb板uart驱动编写
进行串口驱动编写,主要参考源码中的console-config.c文件
以下是代码:
void beagle_console_init(void)
{
if(init_needed)
{
const uint32_t div = UART_CLOCK / 16 / CONSOLE_BAUD;
CONSOLE_SYSC = 2;
while ((CONSOLE_SYSS & 1) == 0)
;
if ((CONSOLE_LSR & (CONSOLE_LSR_THRE | CONSOLE_LSR_TEMT)) == CONSOLE_LSR_THRE)
{
CONSOLE_LCR = 0x83;
CONSOLE_DLL = div;
CONSOLE_DLM = (div >> 8) & 0xff;
CONSOLE_LCR = 0x03;
CONSOLE_ACR = 0x00;
}
while ((CONSOLE_LSR & CONSOLE_LSR_TEMT) == 0)
;
CONSOLE_LCR = 0x80 | 0x03;
CONSOLE_DLL = 0x00;
CONSOLE_DLM = 0x00;
CONSOLE_LCR = 0x03;
CONSOLE_MCR = 0x03;
CONSOLE_FCR = 0x07;
CONSOLE_LCR = 0x83;
CONSOLE_DLL = div;
CONSOLE_DLM = (div >> 8) & 0xff;
CONSOLE_LCR = 0x03;
CONSOLE_ACR = 0x00;
init_needed = 0;
}
}
以下是发送部分程序:
#include <stdio.h>
#include <stdlib.h>#include <bsp.h>
#define Control_Module_Registers1 (*(volatile uint32_t *)(0x44E10000+0x984))
#define UART1_THR (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x00))
#define UART1_RHR (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x00))
#define UART1_IER (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x04))
#define UART1_DLL (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x00))
#define UART1_DLM (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x04))
#define UART1_LCR (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x0c))
#define UART1_LSR (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x14))
#define UART1_MDR1 (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x20))
#define UART1_SYSC (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x54))
#define UART1_SYSS (*(volatile uint32_t *)(BEAGLE_BASE_UART_2+0x58))#define TX_FIFO_E (1<<5)
#define RX_FIFO_E (1<<0)发送函数:int uart_send_command(rtems_task_argument ignored)
{uint32_t div;Control_Module_Registers1 = 0x00;UART1_SYSC = 2; // software resetwhile((UART1_SYSS & 1) == 0) ;UART1_LCR = 0x83;div = UART_CLOCK / 16 / 115200;UART1_DLL = div;UART1_DLM = (div >> 8) & 0xff;UART1_LCR = 0x03;UART1_MDR1 = 0x00;char c;while(1) {for(c = 'A'; c <= 'Z'; c++) {UART1_THR = c;rtems_task_wake_after(rtems_clock_get_ticks_per_second());}}return 0;
}
接收部分下次再聊。
rtems bbb板uart驱动编写相关推荐
- Zynq7020_PS端 uart驱动编写及Vivadio-SDK配置
刚接触 zynq 网上资料也很少,整起来也比较难受.ps.pl 还有SDK.这些东西第一次用都得了解.如果你是个arm工程师,PL部分可以不用怎么了解,只要学习简单的新建硬件流就可以了.主要学习使用的 ...
- uart驱动框架及编程方法
一.UART介绍 UART(Universal Asynchronous Receiver/Transmitter),中文全称为通用异步收发传输器,是一种异步收发传输器,它将要传输的数据通过并行到串行 ...
- 超详细Uart驱动框架及编程方法
一.UART介绍 UART(Universal Asynchronous Receiver/Transmitter),中文全称为通用异步收发传输器,是一种异步收发传输器,它将要传输的数据通过并行到串行 ...
- UART驱动_linux
目录 1.Linux下UART驱动框架 1)uart_driver注册与注销 2)uart_port的添加与移除 3)uart_ops实现 2.RS232驱动编写 1)UART3 IO节点创建 2)添 ...
- 龙芯智龙开发板:驱动步进电机实战入门
本文面向初学者,请多各位高手包涵.我在此特别致谢勤为本先生为我提供的帮助. 步进电机 步进电机就是一种受脉冲控制的电机,步进电机接收到一系列某种调制顺序的脉冲,做出相应的反应,转到相应的角度或者相应的 ...
- linux UART驱动
目录 一.UART驱动关键结构体 二.UART驱动分析 三.UART驱动编写 一.UART驱动关键结构体 1.uart_driver 结构体 (1) uart_driver 结构体表示 UART 驱动 ...
- Linux uart 驱动
一.串口驱动框架简介 Linux 提供了串口驱动框架.串口驱动没有主机端和设备端之分,就只有一个串口驱动,而且这个驱动也是由处理器厂家编写好了. 我们真正要做的就是在设备树中添加所要使用的串口节点信息 ...
- 4412linux编写串口驱动,Tiny4412之串口(Uart)驱动编写
一:tiny4412串口驱动编写 1.串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口 ...
- 设备树下的platform 驱动编写
目录 设备树下的platform 驱动简介 硬件原理图分析 实验程序编写 修改设备树文件 platform 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 上一章我们详细的 ...
最新文章
- 二叉查找树(二叉排序树)的详细实现
- HPU 1002 A + B Problem II【大数】
- 5-去掉a标签下划线,禁止a标签的跳转
- StackedGAN详解与实现(采用tensorflow2.x实现)
- laravel学习笔记------Route::resource和Form-Model-Binding
- 日志解析LogParse启动参数配置
- 【网络流24题】餐巾计划问题(费用流)
- PyQt5环境搭建及cx_freeze打包exe
- 数字图像处理-绪论 (上)
- html 360 浏览器图片自适应,360浏览器看图模式 一键保存高清套图
- 深度学习:知识回收(神经网络模型:BPNN原理)
- 微信小程序实现退款,Java版。
- 理解计算机故障排除的基本顺序,开关常见五种故障实例解读
- doom3中PDA信息
- “Hacker_R_US”因炸弹威胁和DDoS勒索被判8年监禁
- 码元 码元传输速率 波特率 比特率 数据率
- Mysql删除数据什么情况下会释放空间
- windows模拟微信小程序_GitHub - ramwin/mini-program-reference: 微信小程序测试
- 人物关系挖掘方案设计
- 仿36氪(iOS版附源代码)
热门文章
- 华为G610(Android 4.2)永久关闭键盘灯的方法
- 计算机知识的黑板报图片大全,学习黑板报精选图片欣赏
- 【NOIP2012DAY1】国王游戏
- 传统分布式架构部署(apache+tomcat集群)
- CEX暴雷怎么办 一文读懂加密钱包产业现状
- idea 打包报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (defau
- 【GitLens】VsCode插件,查看代码是谁写的
- HelloWorld - Watir
- 第十篇,STM32串口蓝牙编程
- 读王垠《一种新的操作系统设计》