APB协议学习

APB(Advanced Peripheral Bus)

1、APB的概述与特点

APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。

2、APB的组成部分

3、 APB的数据传输

APB上的传输可以用如下图所示的状态图来说明。

 

  1. 系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。
  2. 当有传输要进行时,PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP 状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE 状态。
  3. 系统进入ENABLE状态时,维持之前在SETUP 状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。
  4. 之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。

4、传输时序

4.1、Write

写传输分为不带等待信号的写,和带等待信号的写:

无等待状态

下图显示了一个基本的无等待状态的写传输。



  1. T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,拉高 PWRITE 表示进入写,同时拉高 PSEL,从 IDLE 进入 SETUP
  2. T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  3. T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

有等待状态

下图展示了 PREADY 信号是如何扩展了从器件的传输。

  1. T1 时刻 APB 将地址信息 PADDR 和写的数据 PWDATA 准备好,同时拉高 PSEL,从 IDLE 进入 SETUP
  2. T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  3. T3 时刻检测到 PREADY 为 0,也就是说 Slave 还没有接收完数据,所以在此刻,PADDR 地址信号、PWRITE 数据方向信号、PSEL 片选信号、PENABLE 使能信号以及PWDATA 数据必须保持,以便 Slave 能够继续采样。
  4. T4 时刻 PREADY 依然 为 0,所以还是保持不变
  5. T5 时刻,PREADY 为 1,说明 Slave 已经正确接收到数据,传输完成;PENABLE 拉低,PSEL 拉低

注意:即便是传输结束了,Address 和 data 信号也不会立即改变,直到下一次传输才会刷新新的地址和数据信号,这样做的原因是减少功耗;

4.2、Read

读数据和写的流程几乎差不多,也分为了等待和非等待

无等待状态
同非等待写一样,图示如下:

  1. T1 时刻 APB 将地址信息 PADDR 准备好,拉低 PWRITE 表示进入读,同时拉高 PSEL,从 IDLE 进入 SETUP
  2. T2 时刻也就是下一个时钟周期拉高 PENABLE,使得状态进入 ACCESS
  3. T3 时刻检测到 PREADY 被拉高,也就是说 Slave 已经完成收据发送,PRDATA 上就是来自 Slave 的数据,传输完成;PENABLE 拉低,PSEL 拉低

有等待状态
加等待的读时序如下:

时序过程和上述一样,只不过 PREADY 被拉低了两个周期,真正从 Slave 读的数据到 T5 时刻才真正有效;这里不在多说;

4.3、Error Respond

在读和写的过程,可能出现错误,错误通过 PSLVERR 信号来指明;

APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低

写失败后时序
下面这个是写失败后的时序:

可以看到,在写失败后,PSLERR 信号被拉高了

读失败后时序
下面这个是读失败后的时序:

读失败后,PRDATA 上的数据不再有效

5、对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

私有协议栈开发

通信协议从广义上区分,可以分为公有协议和私有协议。由于私有协议的灵活性,它往往会在某个公司或者组织内部使用,按需定制,也因为如此,升级起来会非常方便,灵活性好。绝大多数的私有协议传输层都基于TCP/IP…

制作NFS

最近学习NFS,用本地测试. 以下是我的测试过程 环境 ubuntu 10.4 vm 7.1 终端 ifconfig 得到 ubuntu资料 INET ADDR 192.168.0.4 BCAST 192.168.0.255 MASK 255.255.255.0 一 安装NFS $ sudo apt-get install nfs-kernel-server $ sudo apt-get install nfs…

【笔记篇】C#笔记2

返回目录:目录请戳这里~ C#数组 基本概念不提。。int[] a; bool[] b new bool[10]; float[] c {0.5, 57.0, 233.3, 12345.67 }; double[] d new double[/*3*/]{233.33, 1926.0817, 4396.0 }; 然后数组和指针有很大的不同。。。 Array类不会用…… 有多维数组和…

SFB 项目经验-51-某上市企业2千人Exchange 2013升级2016高可用之伤01

SFB 项目经验-51-某上市企业2千人Exchange 2013升级2016高可用之伤01(带病撰写项目实战笔记)问题描述:2000人企业使用Exchange 2013邮件服务器标准版,n年!1)问题1:标准版仅支持5个邮箱数据库。2&#xff09…

数字图像处理——2D降噪

图像降噪处理主要分为2D(空域)与3D降噪(时域/多帧),而2D降噪由于相关的实现算法丰富,效果各异,有着丰富的研究价值。理解2D降噪算法的流程,也对其他的增强算法有很大的帮助&#xff…

项目开发(Require + E.js)

最近在做的几个项目,分别用了不同的框架跟方式,有个H5的项目,用了vue框架, 这个项目我还没有正式加入进去, 等手头的这个项目完成就可以去搞vue了, 现在手头的这个项目是一个招聘的项目, 用到了…

五个常用的Linux监控脚本代码

bash中 2>&1 & 的解释 1、首先,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准…

AHB协议学习

1. 简介 AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、A…

jquery lazy load

LazyLoad是一个Js编写的Jq插件,它可以延迟加载页面中的图片,在浏览器可视范围中的图片会被加载。如何使用&#xff1a;LazyLoad依赖于Jquery&#xff0c;在html的结尾处 ,就是在</body>前。<script type"text/javascript" src"jquery.js"><…

linux内核中的循环缓冲区

Linux内核中的循环缓冲区&#xff08;circular buffer&#xff09;为解决某些特殊情况下的竞争问题提供了一种免锁的方法。这种特殊的情况就是当生产者和消费者都只有一个&#xff0c;而在其它情况下使用它也是必须要加锁的。 循环缓冲区定义在include/linux/kfifo.h中&#xf…

js的规范写法ES5(自己以后按照这样写)

1、引号的使用&#xff0c;单引号 优先&#xff08;如果不是引号嵌套&#xff0c;不要使用双引号&#xff09; 正常情况&#xff1a;console.log(hello there) 双引号转码&#xff1a; $("<div classbox>") 2、空格的使用问题&#xff1a;&#xff08…

删除本地git的远程分支和远程删除git服务器的分支

在项目中使用git管理代码后&#xff0c;有些时候会创建很多不同名称的分支&#xff0c;以此区分各个分支代码功能。 而随着代码的合并&#xff0c;以前的分支就可能不再需要保存了&#xff0c;所以就要对没有用的分支进行删除&#xff0c;包括紧急回滚时从中抽取某一个版本记录…

数字图像处理——引导滤波

一、概述 引导滤波是由何恺明等人于2010年发表在ECCV的文章《Guided Image Filtering》中提出的&#xff0c;后续于2013年发表。引导过滤器根据局部线性模型原理&#xff0c;通过考虑引导图像的内容来计算过滤输出&#xff0c;引导图像可以是输入图像本身或另一个不同的图像。具…

Ubuntu 18.04换国内源

2019独角兽企业重金招聘Python工程师标准>>> 参考文档&#xff1a; https://blog.csdn.net/zhangjiahao14/article/details/80554616 https://blog.csdn.net/xiangxianghehe/article/details/80112149 1.复制源文件备份&#xff0c;以防万一 我们要修改的文件是sour…

video4linux简介

Video4linux&#xff08;简称V4L),是linux中关于视频设备的内核驱动,现在已有Video4linux2&#xff0c;还未加入linux内核&#xff0c;使用需自己下载补丁。在Linux中&#xff0c;视频设备是设备文件&#xff0c;可以像访问普通文件一样对其进行读写&#xff0c;摄像头在/dev/v…

动态DPC算法学习

造成坏点的原因 感光元件芯片自身工艺技术瑕疵造成;光线采集存在缺陷;制造商产品差异;坏点分类 hot pixel: 固定保持较高的像素值,一般呈现为画面高亮的点;dead pixel: 固定保持较低的像素值,一般在画面中呈现为暗点;noise pixel:信号强度随光照呈现的变化规律不符合正…

windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...

邮槽创建在服务程序内&#xff0c;可以创建成功&#xff0c; 但外部客户端连接时 m_hMailslot CreateFile("\\\\.\\mailslot\\zdpMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);GetLastError返回错误 5 &#xff0c;无权…

递归下降分析

对于给定的文法G[E] : E→ET|E-T|TT→T*F| T/F|FF→(E)|i 消除左递归后的文法是&#xff1a;E→TE E→TE|-TE|∑ T→FT T→*FT|/FT|∑ F→(E)|i 是否是LL(1)文法&#xff1f; select(E→TE)first(TE){(,i}select(E→TE)first(TE){}select(E→-TE)first(-TE){-}select(E→∑)fol…

SYS简介

"sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel data structures, their attributes, and the linkages between them to userspace.” --- documentation/filesystems/sysfs.txt 可以先把documentation/filesystems/…

数字后端——布图规划

布图规划&#xff08;floorplan&#xff09;与布局&#xff08;place&#xff09;在芯片设计中占据着重要的地位&#xff0c;它的合理与否直接关系到芯片的时序收敛、布线通畅、电源稳定以及良品率。所以在整个芯片设计中&#xff0c;从布图规划到完成布局一般需要占据整个物理…