首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
飞思卡尔™半导体(Freescale Semiconductor)
» 请问SPI包模式读取时为什么需要先虚写两次??
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
请问SPI包模式读取时为什么需要先虚写两次??
发短消息
加为好友
nofaiture2004
当前离线
UID
810652
帖子
4
精华
0
积分
2
阅读权限
10
在线时间
0 小时
注册时间
2010-4-24
最后登录
2010-6-2
新手上路
UID
810652
1
#
打印
字体大小:
t
T
nofaiture2004
发表于 2010-4-24 08:05
|
只看该作者
请问SPI包模式读取时为什么需要先虚写两次??
SPI
,
模式
我看用包模式从RX_PKT_RAM里读数据时,先虚写两次,再进行数据的传输,这是为什么??
我看数据手册上有讲,包模式读取时,一开始的两个字节是无意义的,应该丢弃,所以应该先读两个字节??
可是,虽然虚写了,但是包模式SPI读取程序里却没有进行!读取。这样数据岂不是就停在SPI1D里了么?这样后后面的数据不就被丢掉了么??
不懂啊!
万望赐教!!
收藏
分享
评分
回复
引用
订阅
TOP
发短消息
加为好友
strongchen
当前离线
版主
UID
104380
帖子
7531
精华
0
积分
14828
阅读权限
90
在线时间
17 小时
注册时间
2005-2-28
最后登录
2012-5-17
论坛元老
UID
104380
性别
男
2
#
strongchen
发表于 2010-4-26 09:46
|
只看该作者
你说得对,如果一直不读的话,SPI1D里会保留最先接收到的数据,将后面的数据丢弃。但是,一旦主机开始读数据,就会马上开始接收新的数据。所以,从什么时候开始读数据,要根据实际情况,看从什么时候开始的数据是有效的。
海纳百川 有容乃大
回复
引用
TOP
发短消息
加为好友
jiaotao1983
当前离线
UID
809181
帖子
2
精华
0
积分
1
阅读权限
10
在线时间
1 小时
注册时间
2010-3-30
最后登录
2010-5-16
新手上路
UID
809181
3
#
jiaotao1983
发表于 2010-4-26 10:33
|
只看该作者
本帖最后由 jiaotao1983 于 2010-4-26 13:52 编辑
哦!谢谢斑竹。
我现在有些想通了。
我看版主说,SPI的读和写是同时进行的,在SPI的主端进行数据读取的时候,发出地址后,会进行虚写,一方面提供时钟,另一方面,随着虚写的字节发了过去,要读的字节也就传了过来。
那么我想再问一下,由于读和写同时进行,那么主端向从端写数据的时候,虽然不再需要向从端提供时钟,那么是不是也会收到从端传递过来的dummy数据?也就是进行虚读??
之所以这么问,是因为我看SPI驱动程序,SPI主端写数据的时候,判断数据是不是发送完毕,是看寄存器SPRF位是否置一,而SPRF是主端的数据buffer收到数据后才置一的。而且,每次数据发送完毕,主端都要清空自己的SPI1D的。如果是仅仅发送数据,数据移出buffer后,SPI1D应该就已经空了。所以我猜测主端向从端写数据的时候,也会收到从端发送过来的数据吧?
版主,我的猜测对吗?
回复
引用
TOP
发短消息
加为好友
jiaotao1983
当前离线
UID
809181
帖子
2
精华
0
积分
1
阅读权限
10
在线时间
1 小时
注册时间
2010-3-30
最后登录
2010-5-16
新手上路
UID
809181
4
#
jiaotao1983
发表于 2010-4-26 22:32
|
只看该作者
本帖最后由 jiaotao1983 于 2010-4-26 22:34 编辑
呵呵,我理解了,SPI整个是个大循环,主端这边数据要想出来进到从端,从端那边数据必然也要出去进到主端。
所以主端向从端写数据的话,主端的接收buffer也必然收到从端挤压出来的数据。
我理解的对吗,版主大大!
回复
引用
TOP
发短消息
加为好友
strongchen
当前离线
版主
UID
104380
帖子
7531
精华
0
积分
14828
阅读权限
90
在线时间
17 小时
注册时间
2005-2-28
最后登录
2012-5-17
论坛元老
UID
104380
性别
男
5
#
strongchen
发表于 2010-4-27 09:12
|
只看该作者
可以这么理解。SPI的发送和接收是同时进行的,即使从机此时并没有发送任何数据,主机也会接收到数据,可能是0xFF或0x00。
海纳百川 有容乃大
回复
引用
TOP
发短消息
加为好友
Hunter.Cheung
当前离线
UID
157947
帖子
17
精华
0
积分
109
阅读权限
20
在线时间
21 小时
注册时间
2007-4-15
最后登录
2010-12-2
注册会员
UID
157947
性别
男
6
#
Hunter.Cheung
发表于 2010-4-29 11:25
|
只看该作者
最近正在调SPI,此贴令我恍然大悟啊!膜拜下LZ和版主大大,顺便留爪
回复
引用
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议