|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。
' b' Y' S. O) p7 }* A' M$ e% P6 z# v, `' w. Q
第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的Linux驱动 -- SPI子系统解读(一)
" |" ]2 |8 a1 Y0 B
9 d$ ]9 Q. ^/ C ]! G# |4 u! d 第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的Linux驱动 -- SPI子系统解读(二)(上)和基于S3C2440的Linux驱动 -- SPI子系统解读(二)(下)
1 g% ^: [: i& z1 O 第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的Linux驱动 -- SPI子系统解读(三)
5 A' v: o0 M( V6 v \
% c0 s# a+ `0 l* Z/ D" i* R1 t0 P 第四部分,即本篇文章,通过SPI设备驱动留给用户层的API,我们将从上到下描述数据是如何通过SPI的protocol 驱动,由bitbang 中转,最后由master驱动将数据传输出去。
' Y9 u+ ^' f; ^
9 B# c% S3 v( F" i- [/ e+ O ~本文属于第四部分(上)。
* o+ Z/ _+ E: V7 C2 C
! z; A |3 m$ W6 }) j! p( B7. write,read和ioctl综述
) V7 A) ^, N1 [- D# j! e' v g: r! Y& v Q2 ^
在spi设备驱动层提供了两种数据传输方式。一种是半双工方式,write方法提供了半双工读访问,read方法提供了半双工写访问。另一种就是全双工方式,ioctl调用将同时完成数据的传送与发送。( p3 z3 p( \9 g, |# m
+ s6 m# ]% Q; R, M" [ 在后面的描述中,我们将对write和ioctl方法做出详细的描述,而read方法和write极其相似,将不多做介绍。9 j! o! H1 s- M* b
: v$ e f" H* j 接下来首先看看write方法是如何实现的。
0 U# f3 G. u2 {. q
& K: ~, I# k6 h8. write方法
4 I3 m0 X, V4 V. p' r Y
) l7 D' \" v- X! _/ s) G( [# o8.1 spidev_write1 L6 s$ p+ A F4 w- U
! H5 K3 ~/ d) [ K$ F: h
; B# ^; B% V- G# |3 X6 A6 ?/ h2 P8 Q
8 q4 P' e+ t8 g2 K) Q5 Z |
|