一、前言
在之前的文章中我们已经对AMBA总线协议进行了一个简单的介绍,这篇文章我们来详细介绍AHB,APB,AXI协议的信号。对于AMBA总线协议有一个初步直观的认识。
二、AMBA信号
三、AHB信号
AHB的信号前缀都是H
| 名称 | 来源 | 描述 | 
|   HCLK 总线时钟  | 时钟源 |  
     
      时钟为所有总线传输提供时基。所有信号时序都和 
      
    
      HCLK 的 
     上升沿相关。 
       | 
|  
     
      HRESETn 
      
    
      复位信号 
       | 复位控制器 |  
     
      总线复位信号低有效并用来复位系统和总线。这是唯 
      
    
      一的低有效的信号。 
       | 
|  
     
       HADDR[31:0] 
      
    
      地址总线  
       | 主机 | 32 位系统地址总线。 | 
|  
     
        HTRANS[1:0] 
      
    
      传输类型   
       | 主机 |  
     
        表示当前传输的类型,可以是不连续、连续、空闲和忙。   
       | 
|  
     
      HWRITE 
      
    
      传输方向   
       | 主机 | 读写操作,1-写;0-读 | 
|  
     
      HSIZE[2:0] 
      
    
      传输大小   
       | 主机 | 表示传输的大小,典型情况是字节(8 位)、半字(16位)或者是字(32 位)。协议允许最大的传输大小可以达到 1024 位。 | 
|  
     
        HBURST[2:0] 
      
    
      突发类型   
       | 主机 | 表示传输是否组成了突发的一部分。支持四个、八个或者 16 个节拍的突发传输并且突发传输可以是增量或者是回环。 | 
|  
     
      HPROT[3:0] 
      
    
      保护控制   
       | 主机 | 提供总线访问的附加信息并且主要是打算给那些希望执行某种保护级别的模块使用的。这个信号指示当前传输是否为预取指或者数据传输,同时也表示传输是保护模式访问还是用户模式访问。对带存储器管理单元的总线主机而言这些信号也用来指示当前传输是高速缓存的(cache)还是缓冲的(buffer)。 | 
|  
     
        HWDATA[31:0] 
      
    
      写数据总线   
       | 主机 | 写数据总线用来在写操作期间从主机到总线从机传输数据。建议最小的数据总线宽度为 32 位。然而,在要求高带宽运行时扩展(数据总线)还是很容易的。 | 
|  
     
      HSELx 
      
    
      从机选择   
       | 译码器 |    
      
     S  
     选择信号:表示当前哪个 S 被选择在传送 
     .  
     地址选择就是地址译码出来的 
     S  
     选择信号HSELx 
      
      | 
|  
     
        HRDATA[31:0] 
      
    
      读数据总线   
       | 从机 | 读数据总线用来在读操作期间从总线从机向总线主机传输数据。建议最小的数据总线宽度为 32 位。然而,在要求高带宽运行时扩展(数据总线)还是很容易的。 | 
|  
     
      HREADY 
      
    
      传输完成   
       | 从机 |  
     
        当 HREADY 为高时表示总线上的传输已经完成。在扩展传输时该信号可能会被拉低。 
      
    
      注意:总线上的从机要求 HREADY 作为输入输出信号。   
       | 
|  
     
        HRESP[1:0] 
      
    
      传输响应   
       | 从机 | 传输响应给传输状态提供了附加信息。提供四种不同的响应:OKEY、ERROR、RETRY 和 SPLIT。 | 
四、APB信号
| 名称 | 来源 | 描述 | 
|   PCLK 总线时钟  | 时钟源 | PCLK 的上升沿用作所有 APB 传输的时基。 | 
|  
       
      PRESETn  
       
      
      APB 复位 
        | 复位控制器 | APB 总线复位信号为低有效并且通常将该信号直接连接到系统总线复位信号。 | 
|  
      
         
      PADDR[31:0]  
       
      
      APB 地址总线  
        | 主机 | 这是 APB 地址总线,可高达 32 位宽度并由外设总线桥接单元驱动。 | 
|  
       
       PSELx  
       
      
      APB 选择  
        | 译码器 |  
       
       来自二级译码器的信号,从外设总线桥接单元内到每个外设总线从机 x。  
       
      
      该信号表示从机设备被选中并且要求一次数据传输。每个总线从机都有  
       
      
      一个 PSELx 信号。  
        | 
|  
       
       PENABLE  
       
      
      APB 选通  
        | 主机 |  
       
       这个选通信号用来给外设总线上的所有访问提供时间。使能信号用来表  
       
      
      示一次 APB 传输的第二个周期。 
      PENABLE  
      的上升沿出现在 APB 传输  
       
      
      的中间。  
        | 
|  
       
       PWRITE  
       
      
      APB 传输方向  
        | 主机 | 读写操作,1-写;0-读 | 
|  
       
       PRDATA  
       
      
      APB 读数据总线  
        | 从机 |  
       
       读数据总线由被选中的从机在读周期(PWRITE 为低)期间驱动。读数  
       
      
      据总线可达到 32 位宽度。  
        | 
|  
       
       PWDATA  
       
      
      APB 写数据总线  
        | 主机 |  
       
       写数据总线由外设总线桥接单元在写周期(PWRITE 为高)期间驱动。  
       
      
      写数据总线可达到 32 位宽度。  
        | 
五、AXI信号
1、全局信号
|   信号  |   源  |   描述  | 
|   ACLK  |   Clock source  |   全局时钟信号  | 
|   ARESETn  |   Reset source  |   全局复位信号,低电平有效  | 
2、写地址通道信号
|   信号  |   源  |   描述  | 
|   AWID[3:0]  |   主机  |   写地址ID,这个信号是写地址信号组的ID tag。  | 
|   AWADDR[31:0]  |   主机  |   写地址。  | 
|   AWLEN[3:0]  |   主机  |   突发式写的长度。此长度决定突发式写所传输的数据的个数。  | 
|   AWSIZE[2:0]  |   主机  |   突发式写的大小。  | 
|   AWBURST[1:0]  |   主机  |   突发式写的类型。  | 
|   AWLOCK[1:0]  |   主机  |   锁类型。  | 
|   AWCACHE[3:0]  |   主机  |   Cache类型。这信号指明事务的bufferable、cacheable、write-through、write-back、allocate attributes信息。  | 
|   AWPROT[2:0]  |   主机  |   保护类型。  | 
|   AWVALID  |   主机  |   写地址有效。 1 = 地址和控制信息有效 0 = 地址和控制信息无效 这个信号会一直保持,直到AWREADY变为高。  | 
|   AWREADY  |   设备  |   写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。 1 = 设备准备好 0 = 设备没准备好  | 
3、写数据通道信号
|   信号  |   源  |   描述  | 
|   WID[3:0]  |   主机  |   写ID tag,WID的值必须与AWID的值匹配  | 
|   WDATA[31:0]  |   主机  |   写的数据。  | 
|   WSTRB[3:0]  |   主机  |   写阀门。WSTRB[n]标示的区间为WDATA[(8*n)+7:(8*n)] 
  | 
|   WLAST  |   主机  |   写的最后一个数据。  | 
|   WVALID  |   主机  |   写有效 1 = 写数据和阀门有效 0 = 写数据和阀门无效  | 
|   WREADY  |   设备  |   写就绪。指明设备已经准备好接受数据了 1 = 设备就绪 0 = 设备未就绪  | 
4、写响应通道信号
|   信号  |   源  |   描述  | 
|   BID[3:0]  |   设备  |   响应ID , 这个数值必须与AWID的数值匹配。  | 
|   BRESP[1:0]  |   设备  |   写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。  | 
|   BVALID  |   设备  |   写响应有效。 1 = 写响应有效 0 = 写响应无效  | 
|   BREADY  |   主机  |   接受响应就绪。该信号表示主机已经能够接受响应信息。 1 = 主机就绪 0 = 主机未就绪  | 
5、读地址通道信号
|   信号  |   源  |   描述  | 
|   ARID[3:0]  |   主机  |   读地址ID。  | 
|   ARADDR[31:0]  |   主机  |   读地址。  | 
|   ARLEN[3:0]  |   主机  |   突发式读长度。  | 
|   ARSIZE[2:0]  |   主机  |   突发式读大小。  | 
|   ARBURST[1:0]  |   主机  |   突发式读类型。  | 
|   ARLOCK[1:0]  |   主机  |   锁类型。  | 
|   ARCACHE[3:0]  |   主机  |   Cache类型。  | 
|   ARPROT[2:0]  |   主机  |   保护类型。  | 
|   ARVALID  |   主机  |   读地址有效。信号一直保持,直到ARREADY为高。 1 = 地址和控制信息有效 0 = 地址和控制信息无效  | 
|   ARREADY  |   设备  |   读地址就绪。指明设备已经准备好接受数据了。 1 = 设备就绪 0 = 设备未就绪  | 
6、读数据通道信号
|   信号  |   源  |   描述  | 
|   RID[3:0]  |   设备  |   读ID tag。RID的数值必须与ARID的数值匹配。  | 
|   RDATA[31:0]  |   设备  |   读数据。  | 
|   RRESP[1:0]  |   设备  |   读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR、DECERR。  | 
|   RLAST  |   设备  |   读事务传送的最后一个数据。  | 
|   RVALID  |   设备  |   读数据有效。 1 = 读数据有效。 0 = 读数据无效。  | 
|   RREADY  |   主机  |   读数据就绪。 1 = 主机就绪 0 = 主机未就绪  | 
7、低功耗接口信号
|   信号  |   源  |   描述  | 
|   CSYSREQ  |   CLOCK controller  |   系统低功耗请求。此信号来自系统时钟控制器,使外围设备进入低功耗状态。  | 
|   CSYSACK  |   外围设备  |   低功耗请求应答。  | 
|   CACTIVE  |   外围设备  |   Clock active 1 = 外围设备时钟请求 0 = 外围设备时钟无请求  | 


![[国产MCU]-W801开发实例-GPIO输入与中断](https://img-blog.csdnimg.cn/11706f63104d4d5cbcd8ed76a4bf459a.png#pic_center)














![STM8遇坑[EEPROM读取debug不正常release正常][ STVP下载成功单运行不成功][定时器消抖莫名其妙的跑不通流程]](https://img-blog.csdnimg.cn/31a1c8c09bdd488eb7a08b7431d2bd42.png)

