|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。
2 _, S; M5 s3 L3 k _5 o! n. ^1 [+ N6 G& }1 l- l
第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。基于S3C2440的Linux驱动 -- SPI子系统解读(一)
. P* g2 h3 m- H2 _8 P! x3 r1 E, b/ M1 h
第二部分,该文将对SPI的主控制器(master)驱动进行描述。基于S3C2440的Linux驱动 -- SPI子系统解读(二)(上)和基于S3C2440的Linux驱动 -- SPI子系统解读(二)(下)
8 X0 z$ u/ c% j 第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。基于S3C2440的Linux驱动 -- SPI子系统解读(三)
( x% O D( x2 r$ ]
& h/ _/ ?) G. F 第四部分,即本篇文章,通过SPI设备驱动留给用户层的API,我们将从上到下描述数据是如何通过SPI的protocol 驱动,由bitbang 中转,最后由master驱动将数据传输出去。
/ h9 t8 |5 g9 _$ y
- j+ I0 ?& e9 o& l8 r4 T+ r: O; `本文属于第四部分(上)。9 g3 P! J6 W W9 K! ^' K1 }
0 ~" F4 `6 B) {9 H7 q" h3 j7 E+ O
7. write,read和ioctl综述
# @- x; z* _" E L$ V
( `% U' }; M# z' Q [4 w 在spi设备驱动层提供了两种数据传输方式。一种是半双工方式,write方法提供了半双工读访问,read方法提供了半双工写访问。另一种就是全双工方式,ioctl调用将同时完成数据的传送与发送。
! F7 j) X- s; D3 |. e1 E
( a2 f8 |! Q$ D9 b8 v7 j" l( k( _7 [# e 在后面的描述中,我们将对write和ioctl方法做出详细的描述,而read方法和write极其相似,将不多做介绍。
- f( T0 }5 N/ W7 E, Z0 I8 N ~# l( m& Q
接下来首先看看write方法是如何实现的。
$ |' n* R7 f# G- [% S
. p7 B& i$ E6 I: D. a5 _1 H" q! v; w8. write方法
& Q3 }: Q5 O0 X) j# U k7 C1 M* v
8.1 spidev_write
! v" L- I* z# g1 Z' D8 `# b
9 m# U/ _# v, J2 s- [/ u0 C; P$ z( e5 S2 z2 s; r$ h
: e, W. T9 W, X s& n; f- R, A' Q7 W' B" x# `# y5 `4 v+ W) m& M; p, V
|
|