|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。1 A. q5 {7 K1 y5 c" y
8 n6 U. E3 H& l+ L8 v0 f" a 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的Linux驱动 -- SPI子系统解读(一)
- c( J5 v8 z2 H. _' t) c* D$ s1 h% {" y9 N! g% X/ [
第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的Linux驱动 -- SPI子系统解读(二)(上)和基于S3C2440的Linux驱动 -- SPI子系统解读(二)(下)
. F. E* W: N: ?& Z# S' M" \& r 第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的Linux驱动 -- SPI子系统解读(三)5 c* T2 I; g1 V* Z# _
/ L O+ j; J& h( {' `& x- S
第四部分,即本篇文章,通过SPI设备驱动留给用户层的API,我们将从上到下描述数据是如何通过SPI的protocol 驱动,由bitbang 中转,最后由master驱动将数据传输出去。
1 U0 X5 x& U; r1 l8 H" e% U2 R
2 g! G* C/ b; C9 n$ r6 e; ^2 c本文属于第四部分(上)。. x/ t1 E. {6 s- ?. L
; r! B6 E3 M6 h s' T
7. write,read和ioctl综述
- Q' Q# G: _: ]) m' L' g5 j2 O/ q0 ]) o0 A9 n
在spi设备驱动层提供了两种数据传输方式。一种是半双工方式,write方法提供了半双工读访问,read方法提供了半双工写访问。另一种就是全双工方式,ioctl调用将同时完成数据的传送与发送。
9 K& c8 [/ k4 s* E3 \' ~
2 m0 i' L" B% C( E2 G% P0 L \. U 在后面的描述中,我们将对write和ioctl方法做出详细的描述,而read方法和write极其相似,将不多做介绍。# j( i* F# g0 ~
! {: Y+ ^; a. V- T
接下来首先看看write方法是如何实现的。
" h: r( `, `+ Q" B- G
1 X- G( f! M3 H0 e, p8. write方法
% g- Z8 r9 v+ c S* M6 g) t
7 [: A, O3 B' u% V% B8.1 spidev_write" _ t$ p7 F! S+ m, i& S- E" n
+ y$ w! A1 h; \1 E/ i# W, H6 o( I+ j- y5 z( u; W! k# a' _
$ h6 F. S) h; t0 l
3 s" L4 M0 v: Z1 a/ B; Z4 l
|
|