EDA365电子论坛网
标题:
基于S3C2440的Linux驱动 -- SPI子系统解读(四)(上)
[打印本页]
作者:
uperrua
时间:
2019-8-28 14:11
标题:
基于S3C2440的Linux驱动 -- SPI子系统解读(四)(上)
本系列文章对Linux设备模型中的SPI子系统进行讲解。SPI子系统的讲解将分为4个部分。
9 o( z: P+ h5 |6 G, n
5 b# k1 g& E/ H* j& Y7 Z
第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。
基于S3C2440的Linux驱动 -- SPI子系统解读(一)
. b( R1 O0 q! J% j+ v* k7 |
, f9 ]2 N/ W0 i% P" A. h
第二部分,该文将对SPI的主控制器(master)驱动进行描述。
基于S3C2440的Linux驱动 -- SPI子系统解读(二)(上)
和
基于S3C2440的Linux驱动 -- SPI子系统解读(二)(下)
E- K/ A7 |! |; l- {
第三部分,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。
基于S3C2440的Linux驱动 -- SPI子系统解读(三)
" t( I4 j( \' ^5 `# R% w! T
# | g3 r! e0 F8 k3 l2 a
第四部分,即本篇文章,通过SPI设备驱动留给用户层的API,我们将从上到下描述数据是如何通过SPI的protocol 驱动,由bitbang 中转,最后由master驱动将数据传输出去。
) ^2 z) A- {/ l; R! {' R0 f
9 P- T( p" ]! C7 U; G
本文属于第四部分(上)。
4 s$ `0 D6 c. h) B
% R6 e& y6 o: O: r+ R& c
7. write,read和ioctl综述
" z7 S4 p$ a; W, H
5 n* D L7 |$ Y
在spi设备驱动层提供了两种数据传输方式。一种是半双工方式,write方法提供了半双工读访问,read方法提供了半双工写访问。另一种就是全双工方式,ioctl调用将同时完成数据的传送与发送。
: Z' |+ e( [# D7 f1 w$ S
% u* o0 {8 `/ m4 D( X
在后面的描述中,我们将对write和ioctl方法做出详细的描述,而read方法和write极其相似,将不多做介绍。
: R) C% y* T8 w. e9 g
3 m9 ]# T1 b$ L+ V
接下来首先看看write方法是如何实现的。
( g1 j8 H5 v D' p; `- i
' d/ @9 @/ Q0 S7 I% E" D8 F% t
8. write方法
% U! n9 y. X, @% }" s9 A
- T5 W m0 x0 h- ]9 b) H
8.1 spidev_write
Y) J8 W) ]" J9 n' Z( x2 j7 }* Y
. a0 w( H7 o1 P+ E% l1 \% L) C
$ v3 Z, k* @; b$ E2 R0 P
$ {: H* @+ `- J5 J& `
* L' x r+ V5 G+ O4 U2 Z
作者:
artic
时间:
2019-8-28 18:02
好东东,谢谢楼主分享。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2