FPGA开发之UART的使用
UART使用过程中的一些错误提示
首先是关于UART测试的步骤:
在使用超级终端软件测试UART的回显时,一定要遵循以下步骤:
- 1、烧写工程与测试程序给FPGA芯片
- 2、连接串口通信线
- 3、打开软件 Hyper Terminal并点击绿色的+号开始通信,并且要设置好波特率
- 4、输入字符测试能否回显
测试回显的步骤与一些注意事项:
对终端的设置不同,回显的效果也不一样:
如果设置了本地显示的话,如果按下一个序列:abcdefg 在软件中成功回显的标志应该是:aabbccddeeffgg
如果没有设置本地显示,如果按下一个序列:abcdefg 在软件中成功回显的标志应该是:abcdefg
还有注意,输入的字符必须是 英文 模式下的字符,如果是 中文 模式下输入,则不会发送,但会产生回显的错觉。(因为会显示在屏幕上)
判断是否发送的标志是看终端软件下方的 Send后面是否有变化,而成功回显时Recevied应该也会变化。
UART测试过程中常出现的错误原因:
1、测试程序中未初始化波特因子寄存器
所以在自己自行写程序测试的时候初始化时一定要写如下语句:
ori $t1,$0,0x145
sw $t1,0x7f18($0)
(设置接收波特因子,这里的145h是25MHz频率,9600波特率下的数据)
ori $t2,$0,0xa2b
sw $t2,0x7f1c($0)
(设置发送波特因子,这里的a2bh是25MHz频率,9600波特率下的数据)
(在我的工程设计中 UART的除数因子寄存器地址分别是 0x7f18 和 0x7f1c)
波特因子的计算已经给出了公式,下面给出一个计算的实际例子:
如果接收波特率为9600,CPU的全局时钟频率为50MHz,(UART的时钟频率应该和从Clock IPcore生成的CPU全局时钟频率是一致的)
计算过程如下:
- 接收波特率=fclk /(DIVR+1)x8 → DIVR = -1 + fclk /(接收波特率 x 8)
由50MHz 和 9600可以算出
DIVR = 650.04 取整为 650 转换为16进制为 28A h
- 发送波特率=fclk /(DIVS+1) → DIVS = -1 + fclk /发送波特率
由50MHz和9600可以算出
DIVS =5207 转换为16进制为 1457 h
2、使用非默认波特率时未调整设备传输波特率
在串口通信时默认设置应该是9600波特率的,如果你设置了使用别的波特率传输和发送,需要在 我的电脑 > 属性 > 设备管理器 中找到对应设备进行调整。
3、Hyper Terminal软件没有打开端口
在通信前需要打开端口,点击Hyper Terminal的绿色的加号即可,成功后下方会显示关于串口的设置信息
4、接错串口
在无法回显的时候一定要好好看看串口在FPGA芯片上的位置是否接错,与ucf约束文件里引脚是否一致。
5、FPGA芯片工作频率太快
如果Clock_wizard IP core产生的CPU全局时钟频率要大于报告中的最大频率,则整个系统有些通路是无法使用的。
6、如果以上未能解决
可以尝试更改你的CPU全局频率,重新定制Clock_wizard,有时候因为频率值不好引起误差偏大(因为波特因子算出来不一定是整数,近似时可能会有较大偏差)有可能导致最后的收发不正确。
7、如果回显成功但是出现??字符
有些字符输入时确实会回显??字符,比如一些使用频率不高的特殊符号,但是如果输入0~9的数字依旧显示??字符的话,注意检查你的波特因子是否和波特率匹配。波特率是否和设备波特率匹配。
8、注意是否更改源代码head_uart.v中的sys_clk的值
如果未更改的话,UART应该是无法在你所用的频率下工作的。注意更改即可。
FPGA开发之UART的使用相关推荐
- FPGA开发之SRIO接口
FPGA开发之SRIO接口回环测试 一.接口部分 s_axis_ireq:发送接口 m_axis_treq:接收接口 m_axis_iresp:接收应答接口 s_axis_tresp:发送应答接口 t ...
- FPGA开发之RAM IP的使用
CORE Generator里有很多的IP核,适合用于各方面的设计.一般来说,它包括了:基本模块,通信与网络模块,数字信号处理模块,数字功能设计模块,存储器模块,微处理器,控制器与外设,标准与协议设计 ...
- FPGA开发之SD卡初始化
终于找到一篇说人话的了.使用下面的东西进行SD卡初始化,接着用命令进行读写操作看下一篇博客! 1.SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭又长,但是作为基础也要了解一 ...
- ZYNQ开发系列——PS开发之HelloWorld
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS开发之HelloWorld 前言 外设接口 SDK建立工程相关操作记录 前言 俗话说一日不见,如隔三秋.两年没 ...
- 手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信
目录 (一)前期软件准备和硬件准备 ( 二 ) 实现的思路和操作原理 ( 三) 具体的操作方法 MIT Appinventor 是编程领域较为受欢迎且适用的编程软件 ,因其操作流程和使用方法简单,一直 ...
- STM32WL开发之LORA开发环境及其Demo例程介绍
前言:在前一篇<STM32WL开发之LM401评估板开箱及PingPong测试>中经过测试,认为STM32WL的LoRa通信和易智联的LM401评估板都是OK的,接下来就开始开发环境的准备 ...
- Zynq7000硬件开发之Xilinx官方技术手册解读(二)
Zynq7000硬件开发之Xilinx官方技术手册解读(二) 案头语:欢迎有兴趣学习硬件开发,可以跟随本系列文章的更新节奏去学习.实际操作. 本次更新内容主要为如何查找需要的技术手册,器件选型注意事项 ...
- 复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言
关注+星标公众号,及时获取更多技术分享~ 作者 | 冰茶奥利奥 微信公众号 | 嵌入式电子创客街 前一段时间写了不少使用Xilinx的Zynq芯片的文章,说实话在整个开发过程中几乎没有遇到什么疑难杂症 ...
- 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...
最新文章
- Spring 泛型依赖注入
- python web为什么不火-pythonweb为什么不火-问答-阿里云开发者社区-阿里云
- windows CMD生成文件夹树状图(tree)命令(以图形显示驱动器或路径的文件夹结构)
- python 删除文件、目录_python实现删除文件与目录的方法
- 整型关键字的平方探测法散列 (25 分)【详细解析】
- 端口和进程的关系(详解)
- 关注程序员健康之——研究显示白天小睡90分钟将有效增强记忆力
- Java中字符串的全部知识_java基础教程之字符串的介绍,比较重要的一个知识点「中」...
- 【100个 Unity小知识点】☀️ | Unity 可以在编辑器中读取Excel,打包成exe后就无法读取的问题
- html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕
- xftp6提示要继续使用此程序,您必须应用最新的更新
- 《小样本学习研究综述》赵凯琳等 Survey on Few-shot Learning,文献阅读笔记
- ipv4 pxe 联想start_电脑开不了机提示start pxe over ipv4的解决方法
- k8s--基础--12.2--pod--生命周期,状态,重启策略
- Oracle rman中restore和recover的区别
- 基于51单片机霍尔汽车自行车码表测速测里程显示proteus仿真原理图PCB
- 3类IP的私网地址网段
- AMD锐龙R3 5400U性能怎么样?相当于什么水平级别
- BGP Dampening Cyrus
- Linux内核编译——Uboot