首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请问SPI包模式读取时为什么需要先虚写两次??

本帖最后由 jiaotao1983 于 2010-4-26 13:52 编辑

哦!谢谢斑竹。

我现在有些想通了。

我看版主说,SPI的读和写是同时进行的,在SPI的主端进行数据读取的时候,发出地址后,会进行虚写,一方面提供时钟,另一方面,随着虚写的字节发了过去,要读的字节也就传了过来。

那么我想再问一下,由于读和写同时进行,那么主端向从端写数据的时候,虽然不再需要向从端提供时钟,那么是不是也会收到从端传递过来的dummy数据?也就是进行虚读??

之所以这么问,是因为我看SPI驱动程序,SPI主端写数据的时候,判断数据是不是发送完毕,是看寄存器SPRF位是否置一,而SPRF是主端的数据buffer收到数据后才置一的。而且,每次数据发送完毕,主端都要清空自己的SPI1D的。如果是仅仅发送数据,数据移出buffer后,SPI1D应该就已经空了。所以我猜测主端向从端写数据的时候,也会收到从端发送过来的数据吧?

版主,我的猜测对吗?
本帖最后由 jiaotao1983 于 2010-4-26 22:34 编辑

呵呵,我理解了,SPI整个是个大循环,主端这边数据要想出来进到从端,从端那边数据必然也要出去进到主端。

所以主端向从端写数据的话,主端的接收buffer也必然收到从端挤压出来的数据。

我理解的对吗,版主大大!
返回列表