(6)APB总线协议 —— 逻辑梳理(0.1认知)

本文介绍了APB总线协议在片内低速设备间通信的作用,通过ARM的AMBA总线系列进行了解析。内容包括APB总线的 idle 和 DATATRANS 两个主要阶段,以及协议中 psel、penable、pready、plock、pwrite 和 prdata 等信号的关键作用,详细阐述了数据传输的流程和控制逻辑。

        1)背景——我们前面学习了UART/SPI这类的低速串口通信协议,片内到设备到设备间的传输要怎么实现,要遵从什么样的协议呢?如果,master和slave都是这样的低速串口。咋办???

        2)解决办法——ARM->AMBA->APB:ARM公司推出的AMBA总线系列之APB总线。它主要解决的是片内低速设备间的数据传输。先来看一个经典的图,稍等一下,我去偷一张。。。


        你注意看图的右侧,APB就是一个公共的数据传输通道。通道是个什么概念呢?就像高速公路一样,有车道,也有收费站。通道里的线路对应着高速公路的车道,通道里的功能寄存器和存储器对应着高速公路的收费站。我们先看看有哪些基础的线路和寄存器。

信号名 含义 描述
APB(Advanced Peripheral Bus)总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)总线架构中的一部分,主要用于连接低带宽、不需要高性能流水线接口的外设模块。它以其简单性和高效性在嵌入式系统设计中得到了广泛应用。 ### 架构 APB总线协议的架构主要包括主设备(Master)、从设备(Slave)以及仲裁器(Arbiter)。主设备负责发起数据传输请求,而从设备响应这些请求。仲裁器负责决定哪个主设备可以获得总线使用权,从而避免多个主设备同时访问总线导致的数据冲突。APB总线协议定义了一组信号线来实现这些功能,包括地址/数据复用线、控制信号线等。 ### 工作原理 APB总线协议的工作原理基于简单的握手机制,确保数据传输的可靠性和有序性。当主设备想要访问从设备时,首先需要通过仲裁过程获得总线的控制权。一旦获得控制权,主设备就会发送地址和控制信息给从设备,接着从设备根据接收到的信息做出响应。整个过程中,通过特定的信号线(如PREADY、PSEL等)实现主从设备之间的握手,确保数据传输的正确完成。 ### 使用场景 APB总线协议适用于那些对数据传输速率要求不高但对成本敏感的应用场景。例如,在微控制器系统中,用于连接定时器、UART、ADC/DAC等外围设备。由于其简单的设计降低了硬件实现的复杂度,使得APB成为许多嵌入式系统设计中的首选总线协议之一。 ```c // 示例代码:APB总线协议的基本操作流程示意 void apb_transfer(uint32_t *address, uint32_t *data, uint8_t direction) { // 设置地址 APB_ADDRESS = *address; // 设置方向 if (direction == READ) { APB_CONTROL |= APB_READ; } else { APB_CONTROL &= ~APB_READ; APB_DATA_OUT = *data; } // 启动传输 APB_CONTROL |= APB_START; // 等待传输完成 while (!(APB_STATUS & APB_READY)); // 检查错误 if (APB_STATUS & APB_ERROR) { // 处理错误 } else { if (direction == READ) { *data = APB_DATA_IN; } } } ``` 以上代码片段展示了APB总线协议中一次基本的数据传输流程,包括设置地址、确定读写方向、启动传输、等待传输完成以及处理可能的错误情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少卿不在大理寺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值