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应该是无法在你所用的频率下工作的。注意更改即可。

(设置接收波特因子,这里的145h是25MHz频率,9600波特率下的数据)

FPGA开发之UART的使用相关推荐

  1. FPGA开发之SRIO接口

    FPGA开发之SRIO接口回环测试 一.接口部分 s_axis_ireq:发送接口 m_axis_treq:接收接口 m_axis_iresp:接收应答接口 s_axis_tresp:发送应答接口 t ...

  2. FPGA开发之RAM IP的使用

    CORE Generator里有很多的IP核,适合用于各方面的设计.一般来说,它包括了:基本模块,通信与网络模块,数字信号处理模块,数字功能设计模块,存储器模块,微处理器,控制器与外设,标准与协议设计 ...

  3. FPGA开发之SD卡初始化

    终于找到一篇说人话的了.使用下面的东西进行SD卡初始化,接着用命令进行读写操作看下一篇博客! 1.SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭又长,但是作为基础也要了解一 ...

  4. ZYNQ开发系列——PS开发之HelloWorld

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS开发之HelloWorld 前言 外设接口 SDK建立工程相关操作记录 前言 俗话说一日不见,如隔三秋.两年没 ...

  5. 手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信

    目录 (一)前期软件准备和硬件准备 ( 二 ) 实现的思路和操作原理 ( 三) 具体的操作方法 MIT Appinventor 是编程领域较为受欢迎且适用的编程软件 ,因其操作流程和使用方法简单,一直 ...

  6. STM32WL开发之LORA开发环境及其Demo例程介绍

    前言:在前一篇<STM32WL开发之LM401评估板开箱及PingPong测试>中经过测试,认为STM32WL的LoRa通信和易智联的LM401评估板都是OK的,接下来就开始开发环境的准备 ...

  7. Zynq7000硬件开发之Xilinx官方技术手册解读(二)

    Zynq7000硬件开发之Xilinx官方技术手册解读(二) 案头语:欢迎有兴趣学习硬件开发,可以跟随本系列文章的更新节奏去学习.实际操作. 本次更新内容主要为如何查找需要的技术手册,器件选型注意事项 ...

  8. 复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言

    关注+星标公众号,及时获取更多技术分享~ 作者 | 冰茶奥利奥 微信公众号 | 嵌入式电子创客街 前一段时间写了不少使用Xilinx的Zynq芯片的文章,说实话在整个开发过程中几乎没有遇到什么疑难杂症 ...

  9. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...

最新文章

  1. Spring 泛型依赖注入
  2. python web为什么不火-pythonweb为什么不火-问答-阿里云开发者社区-阿里云
  3. windows CMD生成文件夹树状图(tree)命令(以图形显示驱动器或路径的文件夹结构)
  4. python 删除文件、目录_python实现删除文件与目录的方法
  5. 整型关键字的平方探测法散列 (25 分)【详细解析】
  6. 端口和进程的关系(详解)
  7. 关注程序员健康之——研究显示白天小睡90分钟将有效增强记忆力
  8. Java中字符串的全部知识_java基础教程之字符串的介绍,比较重要的一个知识点「中」...
  9. 【100个 Unity小知识点】☀️ | Unity 可以在编辑器中读取Excel,打包成exe后就无法读取的问题
  10. html滚动字幕制作教程,dreamweaver教程:怎么制作网页滚动字幕
  11. xftp6提示要继续使用此程序,您必须应用最新的更新
  12. 《小样本学习研究综述》赵凯琳等 Survey on Few-shot Learning,文献阅读笔记
  13. ipv4 pxe 联想start_电脑开不了机提示start pxe over ipv4的解决方法
  14. k8s--基础--12.2--pod--生命周期,状态,重启策略
  15. Oracle rman中restore和recover的区别
  16. 基于51单片机霍尔汽车自行车码表测速测里程显示proteus仿真原理图PCB
  17. 3类IP的私网地址网段
  18. AMD锐龙R3 5400U性能怎么样?相当于什么水平级别
  19. BGP Dampening Cyrus
  20. Linux内核编译——Uboot

热门文章

  1. JAVA隐藏手机号部分数字
  2. 迷失的Borland
  3. 苹果cms如何去掉首页帮助提示信息模板
  4. 解释cin.tie(0)的原理
  5. 心态真的会决定命运吗?
  6. 计算机科学与技术课程教学,浅谈计算机科学与技术课程教学
  7. 安装MySQL管理平台Yearning-小白教程
  8. sql审核平台-Yearning最新版安装
  9. 整理了12个必备的Python函数,建议收藏
  10. Codeforces div.2 D. Slime Escape