STM32F1的AHB\APB\DMA

今天学习到SDIO,我第一件事就是去找这个SDIO的CLK是挂载在哪条线上的,我本来以为不是APB1就是APB2,结果发现居然是AHB。

我对于AHB的认识一直挺模糊的,正好就加深一下,然后突然了解到,AHB总线居然是32位的,从cpu过来的指令只需要一个时钟周期。
然而APB1和APB2的总线都是16位的。这我就挺好奇了,那按理说加入CPU一个时钟周期发送了一个32位的信号,控制APB外设上的一个GPIO寄存器,
那么APB接收到信息花费了多久呢?原来AHB会将CPU的数据暂存分割分发,花费两个APB时钟周期的时间。AHB上也有缓存,好像只能缓存一位,
也就是说如果CPU发送了两个数据过来,APB还没接收完第一个,那么CPU会暂停等待AHB将数据分发给APB之后才继续工作。简单来说就是AHB将32位数据
分成两个16位,分两个APB的时钟周期分发给APB上挂载的外设,当CPU向外设大量写入数据时,CPU的速度将被APB时钟拖慢,所以遇到这
种大量的数据写入APB总线的,就直接使用DMA,解放CPU。

posted @ 2026-04-20 21:46  青春猪头青年  阅读(9)  评论(0)    收藏  举报