Linux下SPI驱动测试程序.doc

Linux下SPI驱动测试程序.doc

ID:56523278

大小:50.50 KB

页数:10页

时间:2020-06-27

Linux下SPI驱动测试程序.doc_第1页
Linux下SPI驱动测试程序.doc_第2页
Linux下SPI驱动测试程序.doc_第3页
Linux下SPI驱动测试程序.doc_第4页
Linux下SPI驱动测试程序.doc_第5页
资源描述:

《Linux下SPI驱动测试程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux下的SPI总线驱动(一) 2013-04-1215:08:46分类: LINUX所有,请说明转自 my.csdn.net/weiqing1981127一.SPI理论介绍SPI总线全名,串行外围设备接口,是一种串行的主从接口,集成于很多微控制器部。和I2C使用2根线相比,SPI总线使用4根线:MOSI(SPI总线主机输出/从机输入)、 MISO(SPI总线主机输入/从机输出)、SCLK(时钟信号,由主设备产生)、CS(从设备使能信号,由主设备控制)。由于SPI总线有专用的数据线用于数据的发送和接收,因此可以工作

2、于全双工,当前市面上可以找到的SPI外围设备包括RF芯片、智能卡接口、E2PROM、RTC、触摸屏传感器、ADC。SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数

3、据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。二.SPI驱动移植我们下面将的驱动的移植是针对Mini2440的SPI驱动的移植Step1 :在LinuxSourceCode中修改arch/arm/

4、mach-s3c2440/mach-mini2440.c文件,加入头文件:#include #include<../mach-s3c2410/include/mach/spi.h>然后加入如下代码:staticstructspi_board_infos3c2410_spi0_board[]= {         [0]={                 .modalias="spidev",  //设备的名称用来和驱动进行匹配               .bus_num=0,   

5、//总线的编号,实际指对应的SPI寄存器               .chip_select=0,  //反映了这个芯片是不是被连接到SPI上               .irq=IRQ_EINT9,   //设备的中断号               .max_speed_hz=500*1000,  //SPI的最大速率               }  };    staticstructs3c2410_spi_infos3c2410_spi0_platdata={        .pin_cs=S3C2410_

6、GPG(2),       .num_cs=1,    //所有的片选信号       .bus_num=0,   //SPI多对应的总线编号       .gpio_setup=s3c24xx_spi_gpiocfg_bus0_gpe11_12_13,  //引脚设置函数};  staticstructspi_board_infos3c2410_spi1_board[]= {      [0]={                .modalias="spidev",               .bus_num=1,

7、               .chip_select=0,                .irq=IRQ_EINT2,                .max_speed_hz=500*1000,                }  };  staticstructs3c2410_spi_infos3c2410_spi1_platdata={        .pin_cs=S3C2410_GPG(3),        .num_cs=1,        .bus_num=1,        .gpio_setup=

8、s3c24xx_spi_gpiocfg_bus1_gpg5_6_7, }; Step2:在mini2440_devices[]平台数组中添加如下代码:&s3c_device_spi0, &s3c_device_spi1,Step3:最后在mini2440_machine_init函数中加入如下代码:s3c_device_spi0.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。