万变不离其宗之ZYNQ串口介绍

导语

    串口是我们在设计程序中最常用的接口,串口是硬件系统运行状态的忠实打印者,可以完成数据的传输、log输出等功能。

1.串口介绍

          通信的两种方式:串行通信、并行通信

          串行通信方式分为:同步通信、异步通信

         关于传输方向:单工、半双工、全双工

UART(异步串行通信)

  

  

     ZYNQ的串口模块是一个全双工的异步接收和发送器,支持宽范围广的软件可编程模块,支持编程配置波特率和数据格式,同时提供自动的奇偶校验和错误检测方案,此外,还为APU提供了接收和发送FIFO。

      ZYNQ有两个UART器件,具有以下特性:

1.    可编程波特率发送器;
2.    64个字节接收和发送FIFO;
3.    数据位6,7或者8个比特位;
4.    奇,偶,空格,标记或者没有校验;
5.    1,1.5或者2个停止位;
6.    支持校验,帧和超限错误检测;
7.    支持自动回应,本地环路和远程环路通道模式;
8.    支持产生中断;
9.    在EMIO上,可以使用调制解调器控制信号CTS,RTS,DSR,DTR,RI和DCD;

2.系统框图

3.  ZYNQ串口简介


      ZYNQ PS端有两个串口,uart0和uart1。两个串口基本一样,只要学会了其中一个串口的配置,另一个串口也就照搬程序了。串口的硬件框图大致如下图所示:

如上图所展示的,一个串口有两个FIFO,接收和发送各用一个,FIFO的缓存能大大的提高串口的工作效率,并且减少CPU的干预。两个FIFO的宽度都为8bit,深度为64字节。

        当串口发送数据时,CPU/DMA通过总线将需要发送的数据写入TxFIFO中,硬件检测到FIFO中有数据或者数据到达一定数量就会往外发送数据直到TxFIFO为空。

        当串口接收数据时,硬件将数据缓存如RxFIFO中,当软件检测到RxFIFO有数据时CPU/DMA就通过总线去读取RxFIFO直到RxFIFO为空。对于串口发送,我们一个字节一个字节发送便可,已经足够我们日常使用。

这部分内容介绍比较少,请参考UG585文档

该应用笔记示例:中断实现串口接收不定长数

      接收的原理:中断实现串口接收不定长数

      第一种为RxFIFO阈值触发中断:这种中断首先是要给FIFO设置一个阈值,当RxFIFO中有效数据量大于等于阈值时,产生中断;

      第二种是接收数据超时(timeout)中断,使用过STM32的同学可能比较熟悉STM32中有一个串口的空闲中断,这里的接收数据超时中断和这个类似,如果在设定时间周期内没有接收到串口数据则产生超时中断。
 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值