电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

linuxSPI驱动框架源码分析VIP免费

linuxSPI驱动框架源码分析_第1页
1/31
linuxSPI驱动框架源码分析_第2页
2/31
linuxSPI驱动框架源码分析_第3页
3/31
SPI 协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式。相关通讯设备可工作于m/s 模式。主设备发起数据帧,允许多个从设备的存在。每个从设备 有独立的片选信号,SPI 一般来说是四线串行总线结构。 接口: SCLK——Serial Clock(output from master)时钟(主设备发出) MOSI/SIMO——Master Output, Slave Input(output from master)数据信号线 mosi(主设备发出) MISO/SOMI——Master Input,Slave Outpu(output from slave)数据信号线(从设备) SS——Slave Select(active low;output from master)片选信号 下面来看一下 Linux中的SPI 驱动。在 Linux设备驱动框架的设计中,有一个重要的主机,外设驱动框架分离的思想,如下图。 外设 a,b,c 的驱动与主机控制器 A,B,C 的驱动不相关,主机控制器驱动不关心外设,而外设驱动也不关心主机,外设只是访问核心层的通用的API 进行数据的传输,主机和外设之间可以进行任意的组合。如果我们不进行如图的主机和外设分离,外设 a,b,c 和主机 A,B,C 进行组合的时候,需要 9 种不同的驱动。设想一共有个主机控制器,n 个外设,分离的结构是需要 m+n 个驱动,不分离则需要 m*n 个驱动。 下面介绍 spi 子系统的数据结构: 在 Linux中,使用 spi_master 结构来描述一个 SPI 主机控制器的驱动。 view plain 1. struct spi_master { 2. struct device dev;/*总线编号,从 0 开始*/ 3. s16 bus_num;/*支持的片选的数量,从设备的片选号不能大于这个数量*/ 4. u16 num_chipselect; 5. u16 dma_alignment;/*改变 spi_device 的特性如:传输模式,字长,时钟频率*/ 6. int (*setup)(struct spi_device *spi);/*添加消息到队列的方法,这个函数不可睡眠,他的任务是安排发生的传送并且调用注册的回调函数complete()*/ 7. int (*transfer)(struct spi_device *spi,struct spi_message *mesg); 8. void (*cleanup)(struct spi_device *spi); 9. }; 分配,注册和注销的SPI 主机的API 由SPI 核心提供: view plain 1. struct spi_master *spi_alloc_master(struct device *host, unsigned size); 2. int spi_register_master(struct spi_master *master); 3. void spi_unregister_master(struct spi_master *master); 在Linux ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

linuxSPI驱动框架源码分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部