news 2026/4/26 6:33:27

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/23 17:28:46

振动器-Android studio软件源代码-java语言

振动器 App 简介与使用说明 一、软件简介 &#x1f4f1; 软件定位 本软件是一款基于 Android 系统的多功能振动控制应用&#xff0c;通过调用设备振动马达&#xff0c;提供多种预设振动模式和高度自定义的振动编辑功能&#xff0c;满足用户在提醒、反馈、娱乐等场景下的多样化…

作者头像 李华
网站建设 2026/4/18 7:37:48

人工智能应用- 人机对战:04. 蒙特卡洛树搜索

蒙特卡洛树搜索&#xff08;MCTS&#xff09;是 AlphaGo 成功的核心技术之一。围棋中的最大挑战在于如何评估当前局势&#xff0c;而MCTS 通过模拟走棋到终局来进行评估。为了提高模拟走棋的效率&#xff0c;MCTS 并不会扩展所有可能的路径&#xff0c;而是通过随机采样的…

作者头像 李华
网站建设 2026/4/20 10:24:22

雨量监测站 雨量实时监测系统

问&#xff1a;这款翻斗式自动雨量站的核心定位是什么&#xff1f;为什么能被称为防汛抗旱的“千里眼”&#xff1f;答&#xff1a;核心定位是全自动高精度雨量监测终端&#xff0c;主打“精准采集、稳定运行、免维护、低功耗”&#xff0c;专为防汛抗旱、水资源监测设计&#…

作者头像 李华
网站建设 2026/4/25 19:23:41

拖延症福音 10个AI论文网站测评:MBA毕业论文写作+格式规范全攻略

在当前学术研究日益数字化的背景下&#xff0c;MBA学员在撰写毕业论文时面临诸多挑战&#xff0c;如选题构思困难、文献资料繁杂、格式规范不熟悉以及写作效率低下等问题。为帮助更多学生高效完成论文任务&#xff0c;本次测评基于2026年的实测数据与用户真实反馈&#xff0c;全…

作者头像 李华
网站建设 2026/4/23 4:33:24

JumpServer API 使用指南

JumpServer 是开源的堡垒机系统,本文档介绍如何通过 API 进行自动化管理。 一、API 认证方式 JumpServer 支持多种认证方式: 认证方式 说明 适用场景 Session 登录后使用 session_id Web 页面 Token 一次性 Token,有有效期 临时调用 Private Token 永久 Token 脚本调用 Acc…

作者头像 李华
网站建设 2026/4/22 17:09:33

互联网大厂Java求职面试实战:从Spring Boot到AI技术的全栈考察

互联网大厂Java求职面试实战&#xff1a;从Spring Boot到AI技术的全栈考察 本文通过模拟互联网大厂Java岗位的求职面试&#xff0c;展现了严肃的面试官与搞笑的水货程序员谢飞机之间的问答。场景涵盖电商与内容社区的业务背景&#xff0c;问题围绕Java核心技术栈、微服务架构、…

作者头像 李华