news 2026/4/23 11:21:12

AXI UART16550测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AXI UART16550测试

发送 helloWord

#!/bin/bashset-euo pipefailUART_BASE=0x43c10000# UART 寄存器偏移RBR=0x00# 接收缓冲区THR=0x00# 发送保持寄存器IER=0x04# 中断使能FCR=0x08# FIFO 控制LCR=0x0C# Line ControlLSR=0x14# Line StatusSCR=0x1C# Scratch# --- 配置波特率 115200 ---DIVISOR=54# 100MHz / (16*115200) ≈ 54# 进入可设置波特率模式 (LCR bit7 = 1)lcr=$(devmem$((UART_BASE+LCR))32)devmem$((UART_BASE+LCR))32$((lcr|0x80))# 设置 DLL/DLMDLL=$((DIVISOR&0xFF))DLM=$(((DIVISOR>>8)&0xFF))devmem$((UART_BASE+0x00))32$DLLdevmem$((UART_BASE+0x04))32$DLM# 恢复 LCR (bit7=0)devmem$((UART_BASE+LCR))32$((lcr&~0x80))# --- 初始化 FIFO ---devmem$((UART_BASE+FCR))320x07# FIFO Enable + RX/TX Reset# --- 测试 SCR 寄存器 ---devmem$((UART_BASE+SCR))320x55val=$(devmem$((UART_BASE+SCR))32)echo"SCR test value: 0x$(printf'%02x'$val)"# --- 发送 helloWord ---msg="helloWord"for((i=0;i<${#msg};i++));dochar=${msg:$i:1}# 等待 THR 空闲 (LSR bit5)whiletrue;dolsr=$(devmem$((UART_BASE+LSR))32)if(((lsr&0x20)!=0));thenbreakfidone# 写 THRdevmem$((UART_BASE+THR))32"$(printf'0x%x'"'$char")"doneecho"Done sending 'helloWord' at 115200 baud!"

回环测试

#!/bin/bashset-euo pipefailUART_BASE=0x43c10000# UART 寄存器偏移RBR=0x00# 接收缓冲区 (读)THR=0x00# 发送保持寄存器 (写)IER=0x04# 中断使能FCR=0x08# FIFO 控制LCR=0x0C# Line ControlLSR=0x14# Line StatusSCR=0x1C# Scratch# --- 配置波特率 115200 ---DIVISOR=54# 100MHz / (16*115200) ≈ 54# 进入可设置波特率模式 (LCR bit7 = 1)lcr=$(devmem$((UART_BASE+LCR))32)devmem$((UART_BASE+LCR))32$((lcr|0x80))# 设置 DLL/DLMDLL=$((DIVISOR&0xFF))DLM=$(((DIVISOR>>8)&0xFF))devmem$((UART_BASE+0x00))32$DLLdevmem$((UART_BASE+0x04))32$DLM# 恢复 LCR (bit7=0)devmem$((UART_BASE+LCR))32$((lcr&~0x80))# --- 初始化 FIFO ---devmem$((UART_BASE+FCR))320x07# FIFO Enable + RX/TX Reset# --- 测试 SCR 寄存器 ---devmem$((UART_BASE+SCR))320x55val=$(devmem$((UART_BASE+SCR))32)echo"SCR test value: 0x$(printf'%02x'$val)"echo"Starting UART loopback (echo) test. Press Ctrl+C to exit."# --- 无限回环 ---whiletrue;do# 等待 RX 有数据 (LSR bit0)lsr=$(devmem$((UART_BASE+LSR))32)if(((lsr&0x01)!=0));then# 读取接收到的字符data=$(devmem$((UART_BASE+RBR))32)data=$((data&0xFF))# 打印收到的字符printf"%s""$(printf'\\x%02x'$data)"# 等待 THR 空闲 (LSR bit5)whiletrue;dolsr_thr=$(devmem$((UART_BASE+LSR))32)if(((lsr_thr&0x20)!=0));thenbreakfidone# 写回 THR,实现回显devmem$((UART_BASE+THR))32"$data"fidone
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 10:10:13

第9天:内容规划——构建与场景匹配的内容体系

核心目标&#xff1a;根据客户旅程不同阶段的需求&#xff0c;规划针对性的内容矩阵。操作明细&#xff1a;认知阶段内容&#xff1a;旨在引发兴趣&#xff0c;如行业洞察、痛点文章、趣味短视频。考虑阶段内容&#xff1a;旨在建立信任&#xff0c;如产品详解、对比评测、用户…

作者头像 李华
网站建设 2026/4/15 6:19:19

2026年工厂大脑推荐与全球市场格局

在当今制造业加速向智能化跃迁的背景下&#xff0c;“工厂大脑”已不再是一个象征性的隐喻&#xff0c;而是真正驱动生产系统自主决策、动态优化的核心引擎。它不是某个单一算法的炫技&#xff0c;也不是云端模型的简单部署&#xff0c;而是工业知识、实时数据与智能体协同的深…

作者头像 李华
网站建设 2026/3/25 15:40:01

基于STM32的导航手环:超声波 + 地磁融合避障系统设计与实现

一、引言 视障者的出行安全一直是社会关注的重点,传统盲杖仅能探测前方有限范围的障碍物,且无法感知方位信息。本文设计的视障者导航手环,融合超声波测距与地磁方位检测技术,可实时感知周边障碍物的距离和方位,并通过振动、蜂鸣等方式向视障者反馈,大幅提升出行安全性和…

作者头像 李华
网站建设 2026/4/16 17:08:00

A.每日一题——94. 二叉树的中序遍历

题目链接&#xff1a;94. 二叉树的中序遍历&#xff08;简单&#xff09; 算法原理&#xff1a; 解法一&#xff1a;递归 0ms击败100.00% 时间复杂度O(N) 思路很简单&#xff0c;就是按照“左根右”的顺序递归即可 下面这篇博客有详细解析&#x1f447;目录位置&#xff1a;二叉…

作者头像 李华
网站建设 2026/4/18 19:35:55

Java 零基础入门:核心基础知识点全总结

目录 一、Java 核心特性与跨平台原理 1.1 Java 的主要特性 1.2 Java 跨平台原理 JVM、JRE、JDK 三者关系 二、Java 注释 2.1 三种注释类型 2.2 使用技巧 三、Java 关键字 3.1 关键字概念 3.2 常用关键字一览 3.3 核心关键字&#xff1a;class 四、Java 字面量 4.1…

作者头像 李华