472666316 发表于 2010-11-29 11:16:46

关于书中spi缓冲区的概念问题

书中有一句话是使用串行通信并不是产生缓冲区的必然原因,.........。这句话很是让我费解老师弄不懂我感觉使用串行通讯就必须用缓冲

Gorgon_Meducer 发表于 2010-11-29 14:01:58

串行通讯只要足够快,就不需要缓冲……
比如,你用串口发送9600个字节,结果你的串口波特率是115200……那么很可能就可以不需要缓冲区……

这句话我记得我说完整了:
串行通讯不是使用缓冲区的必然原因,速度的瓶颈才是使用缓冲区的必然原因。我在书里面还罗嗦了一下,说如果车道够宽敞,就不用排队,如果卖票系统吞吐量够大,就不会出现排队的长龙。

472666316 发表于 2010-11-29 14:38:03

说如果车道够宽敞,就不用排队,如果卖票系统吞吐量够大,就不会出现排队的长龙。这样的话不就成了并行传输了么   就和spi一样速度再快也得把8bit的数据拆分开传输因为传输数据的就一根线 除非一次性把8bit数据传输完毕 那不需要缓冲区但是这样的话就是并行传输了

Gorgon_Meducer 发表于 2010-11-29 15:19:24

你在钻牛角尖啊……
比如,就拿SPI来说,如果你要求的速率低于SPI的带宽,缓冲区就没有用啊……

你刚才陈述的概念有一个前提:
就是你认定了——只有并行才不需要缓冲。这就好比你杯子是满的,别人的水倒不进去。

另外,即便是并行传输,在速率不匹配的时候,仍然需要缓冲区。比如,接受方只有250K的数据吞吐能力(接口可以满足更大的传输率),那么当发送方以更高的速度发送数据的时候,缓冲区就是必须的了。

所以,是否使用缓冲区要看速率,而不是看传输方式。

472666316 发表于 2010-11-29 15:49:12

比如,就拿SPI来说,如果你要求的速率低于SPI的带宽,缓冲区就没有用啊…… //   就拿这个来说吧 就是N小时传送一位这个速度够慢的吧那也得一字节个数据拆成8个位一位一位的传输 对吧这样就不需要缓冲区?比如一个字节传了一位剩下的7位放在什么地方呢

Gorgon_Meducer 发表于 2010-11-29 22:28:52

如果钻牛角尖,我认输——我没有把移位寄存器看作缓冲区……
这里也折射一个问题,就是讨论并行还是穿行,要看基本单位了……

gliet_su 发表于 2010-11-30 00:23:02

LZ应该了解一下fifo的知识。

472666316 发表于 2010-11-30 09:21:06

如果移位寄存器不算的话那我就懂了 但是avr的官方资料 把移位寄存器看成缓冲区了谢谢傻孩子!   fifo我了解过第一个进第一个出 先进先出 傻孩子的书讲过

Gorgon_Meducer 发表于 2010-12-1 10:53:37

一般情况下,我们只关心需要编写软件来处理的缓冲区。对于硬件已经实现的缓冲,我们都是视作黑盒子的。
因为一旦写入这些缓冲区,硬件就能给与保证一定的带宽,而这部分带宽我们可以视作是“并行”的。当硬
件保证的这一带宽小于我们的瞬时最大要求时,缓冲区就是必须的;当带宽大于我们的瞬时最大带宽需求时,
缓冲区就是可以省略的。
页: [1]
查看完整版本: 关于书中spi缓冲区的概念问题