spi master spi driver spi device

本文详细解析了SPI通信系统的三个核心层次:SPI核心管理层、SPI控制器驱动与SPI设备驱动,并阐述了它们之间的交互方式及作用。同时介绍了如何通过SPI管理层协调master与slave设备间的通信,以减少耦合度。
为了更好的将各个层次划分开来,互不影响。所以抽像出来了3个层次:
1、spi核心管理层
2、spi控制器驱动(作为spi master)
3、spi设备驱动(作为spi slave)
本来,master与slave之间可以直接进行通信,但是这样耦合程序就很大。
更改一点就得全改,因为spi的时钟有不同的极性以及空闲时时间线的定义包括,master提供
的时钟的最大频率都受到限制。所以引入了spi管理层,这样的话,双方通过中间件进行通信。
互不影响。需要修改的仅是一边的代码。
  例如,imx6处理器就包括了物理的spi控制器,所以做平台BSP时FSL的开发人员就必须为spi控制器
做好spi控制器驱动,而我们可以使用这个spi总线接口多个spi接口的外设,如e2prom,传感器等。
现在,虽然内核中已经有了FSL提供的spi master,但是那只是总线的驱动,只是负责总线的读写,
实际上外设还没有驱动起来。所以我们必须再添加spi device即spi设备驱动,这个设备驱动可以
调用spi master,将数据的读写交给spi master来进行,这样实现了有效的分离。
内核中定义了spi master的结构体,其中包括了3个最主要的函数指针:
1、setup:该函数将在初始化时调用,即初始化spi控制器的时钟频率,相位等配置。
2、transfer:该函数实现数据的读写,在后面的spi device最终将调用这个函数实现数据的读写。通过消息队列的方式。
3、cleanup:注销总线。
为了更好的管理多个相同的设备,如一个spi master(SPI总线)上接了N个相同的设备,他们使用相同的驱动
程序,通过不同的片选来选择。
如imx6接了3片e2prom通过SPI总线,其中规定:
第1片:存储系统配置参数等。
第2片:存储系统采集到的数据。
第3片:存储系统运行日志。
所以系统了抽像出来设备驱动和设备体两个不同的结构体,如下:
1.系统中的spi总线由spi master进行管理。
2.系统中的spi设备驱动由 spi driver进行管理。
3.系统中的spi设备由spi device进行管理。
在这里,imx6只就必须要有
1个spi master(SoC).
1个spi driver(由它来驱动多个相同的设备)
3上spi device(他们使用相同的spi driver,所以只要有一个spi driver即可)。

总结:
spi driver是为spi device服务的,但是spi driver又必须得通过spi master进行通信,
spi driver中提供了probe(),remove()函数,
在spi driver注册时会扫描spi bus上的spi device,依赖id进行driver与slave的绑定。
spi driver只是为了完成绑定,而spi device的真正通信必须通过spi master进行。
所以 spi driver的结构本中包括了spi master的指针,就是为了调用spi master。






下面是最最重要平台设备,原来SoC一类就归为平台设备呀。





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值