linux下spi有哪些函数,linux下怎么快速的使用 SPI 驱动。

ek_spi_devices 数组就在本文件内。

/*

* SPI devices.

*/

static struct spi_board_info ek_spi_devices[] = {

#if !(defined(CONFIG_MMC_ATMELMCI) || defined(CONFIG_MMC_AT91))

{/* DataFlash chip */

.modalias= "mtd_dataflash",

.chip_select= 1,

.max_speed_hz= 15 * 1000 * 1000,

.bus_num= 0,

},

#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)

{/* DataFlash card */

.modalias= "mtd_dataflash",

.chip_select= 0,

.max_speed_hz= 15 * 1000 * 1000,

.bus_num= 0,

},

#endif

#endif

};

看起来还是很简单,后来网上查了一下,得出了进一步的信息:

struct spi_board_info {

char modalias[SPI_NAME_SIZE];

const void * platform_data;

void * controller_data;

int irq;

u32 max_speed_hz;

u16 bus_num;

u16 chip_select;

u8 mode;

};

Members

modalias[SPI_NAME_SIZE]

Initializes spi_device.modalias; identifies the driver.

platform_data

Initializes spi_device.platform_data; the particular data stored there is driver-specific.

controller_data

Initializes spi_device.controller_data; some controllers need hints about hardware setup, e.g. for DMA.

irq

Initializes spi_device.irq; depends on how the board is wired.

max_speed_hz

Initializes spi_device.max_speed_hz; based on limits from the chip datasheet and board-specific signal quality issues.

bus_num

Identifies which spi_master parents the spi_device; unused by spi_new_device, and otherwise depends on board wiring.

chip_select

Initializes spi_device.chip_select; depends on how the board is wired.

mode

Initializes spi_device.mode; based on the chip datasheet, board wiring (some devices support both 3WIRE and standard modes), and possibly presence of an inverter in the chipselect path.

Description

When adding new SPI devices to the device tree, these structures serve as a partial device template. They hold information which can't always be determined by drivers. Information that probe can establish (such as the default transfer wordsize) is not included here.

These structures are used in two places. Their primary role is to be stored in tables of board-specific device descriptors, which are declared early in board initialization and then used (much later) to populate a controller's device tree after the that controller's driver initializes. A secondary (and atypical) role is as a parameter to spi_new_device call, which happens after those controller drivers are active in some dynamic board configuration models.

于是自己仿照着写了一个:

/*

* SPI devices.

*/

static struct spi_board_info ek_spi_devices[] = {

{

.modalias       = "HCMS-29xx",

.chip_select    = 0,              // choice PB3

.max_speed_hz   = 1*1000*1000,

.bus_num        = 1,              // SPI1

},

};

这样,硬件部分这样基本就完成了。至于 .modalias  = "HCMS-29xx"。 后面我会将到,这个参数的值不能随便取。

后面要做的就是驱动了。这个网上有很多资料,大家看看就可以了,我主要说明一下,我们在SPI的驱动里需要自己实现probe函数。 因为在内核将我们的驱动和刚刚我们

申请的SPI 设备匹配成功后就需要调用这个函数。 写驱动时,大家要注意了,我们需要申明一个名为  spi_driver 的结构体。下面是我申请的结构体:

static struct spi_driver hcms29xx_spi_driver = {

.driver = {

.name   ="HCMS-29xx",

.owner  =   THIS_MODULE,

},

.probe  =hcms29xx_spi_probe,

.remove =hcms29xx_spi_remove

};

注意里面有一个 .name 的成员。 它是设备和驱动匹配的关键。 想想我们在前面初始化SPI设备后,它是怎么和我们写的驱动挂上勾的呢? 就是它! 这个结构体里面的.name.

就是靠他和前面设备里 那个 modalias  成员。 所以我们在给他们赋值时。他们的取值要相等,这样才能匹配成功。

剩下的就是写驱动和调试驱动了,这些就不必说了吧,会C语言的基本上都会,

524bbc790290d6bff1c59e86d5fe1a13.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL 查询横表变竖表

首先是三张表, CNo对应的是课程,在这里我就粘贴了。 主表 人名表 按照常规查询 SELECT s.SName, c.CName,s2.SCgrade FROM S s INNER JOIN SC s2 ON s2.SNo s.SNo INNER JOIN C c ON c.CNo s2.CNo 那么结果是这样的 但是这是横表 不是我想…

东芝笔记本linux系统安装驱动,笔记本驱动,详细教您东芝笔记本无线网卡驱动怎么安装...

在品牌的笔记本电脑中,使用东芝笔记本的用户都知道,东芝笔记本电脑具有十分鲜明的特色,其产品十分注重细节与工艺,为用户带去了不错的使用体验。那么如果要下载安装无线网卡驱动,该怎么操作呢?下面&#xf…

asp.net页面绑定数据的方式-----未完待续

**方式一 **方式二转载于:https://www.cnblogs.com/wgx0428/archive/2012/05/10/2493953.html

红帽企业版linux 7.3,红帽推企业Linux 7.3 新功能特性一览

原标题:红帽推企业Linux 7.3 新功能特性一览【IT168 云计算】日前红帽宣布推出企业Linux 7.3版本,作为Linux平台的最新版本,红帽方面透漏本次更新的版本在网络与存储功能两方面做到了强化。同时,该版本还引入了关于Linux容器和物联…

Android游戏开发系统控件-Dialog

Android游戏开发系统控件-Dialog Dialog(对话框)在Android应用开发中经常用到,下面是学习《Android游戏编程从零开始》一书,关于Dialog的初步学习。 创建项目:DialogProject 作者:wwj 日期:2012/5/13 功能&#xff1a…

步进电机编写单4拍或4-8拍方式的汇编或c语言控制程序.,基于SCM和PLC的两种步进电机控制方法...

引 言步进电机位移与输入脉冲信号数相对应,精度高、响应特性好、可靠性高、速度可在较宽范围内平滑调节,是控制系统中一种重要的自动化执行元件。SCM(Single Chip Microcomputer,单片机)是把组成微型计算机的中央处理器、存储器、输入输出接口…

在网上找到一个CSS hack列表,记录在这里以分析css的浏览器兼容性

另外摘抄一份目前的css浏览器兼容问题汇总,记录在这里自己好好学习一下 CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,…

c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码

c语言编写贪吃蛇源代码,简单易懂,文件为VC源代码。如果你正在学习c语言,就来下载吧。很经典的C语言贪吃蛇代码部分#include #include #include#include#define SX 50#define SY 25#define Length 10#define Xnub 50#define Ynub …

android webview 图表,Android WebView 无法正常显示网页图表

1、Android项目中,使用了一个WebView,加载的页面是一个使用百度echart和canvas写的统计图表,现在网页版和IOS版都能正常显示,Android无法正常显示:2、ios和web端:3、android 端:4、Android控制台…

在Windows XP下,安装VS 2010 Express For Windows Phone .

在安装Windows Phone SDK 的系统环境要求中,只支持windows vista、windows 7,不支持winXP,暂时不想升级win7的用户,想要在XP系统开发WP应用程序,就多了一种限制,多次在网上搜索,会发现在XP下也能…

荣耀v40pro可以用鸿蒙系统,荣耀V40Pro快来了!麒麟9000+120Hz+鸿蒙系统,价格感人...

原标题:荣耀V40Pro快来了!麒麟9000120Hz鸿蒙系统,价格感人苹果将于10月14日凌晨1点召开秋季第二场新品发布会,iPhone12系列将正式登场。华为Mate40系列的发布日期将会在国庆假期过后公布,不出意外就是10月15日&#xf…

html 鼠标图标做成动画效果,纯css3实现的鼠标悬停动画按钮

今天给大家带来一款纯css3实现的鼠标悬停动画按钮。这款按钮鼠标经过前以正方形的形式,当鼠标经过的时候以动画的形式变成圆形。效果图如下:实现的代码。html代码:复制代码代码如下:css3代码:复制代码代码如下:body{background-co…

联想乐Pad_A1获取root权限

1、下载root包:参考http://bbs.anzhi.com/thread-4786308-1-1.html 里面的root包,共两个,到电脑。2、将tf卡,置入平板电脑,通过大存储方式连接电脑,以fat或者fat32方式将tf卡格式化,然后将下载的…

html表单不允许修改,[问题]如何在表单里定义(form)仅仅可读,不可修改的列?

经过我不懈努力的寻找及测试,现在有一个解决方案可以解决typeform表单里设置只读字段。只需要覆写columns中的renderFormItem字段即可。下面以设置用户名只读为例:pro-table版本:"ant-design/pro-table": "^2.9.16"colum…

html如何查看文档,查看文档

设计步骤(返回正文)一、绘制表格1、在手动设计Html模板之前,我们先需要一个模板的样式,这个样式我们可以拿原来的纸质的样式,也可以在Excel表格中画一个样式,如图1所示,我们后面的设计都要根据这个表格来进行设计。图1…

父亲的忠告:把孩子培养成普通人

现在你用不到,将来你肯定用的到。你一定会做个好爸爸。 转自:http://luo.bo/25512/转载于:https://www.cnblogs.com/webcc/archive/2012/06/01/2531207.html

U盘装XP系统(含截图,2012最新原创超简单方法)

U盘装XP系统(含截图,2012最新原创超简单方法)首先准备好3样必备东西 1.U盘2.XP系统(推荐GhostXP SP3 2012统一论坛最新版;迅雷快传下载地址:http://kuai.xunlei.com/d/BMLHLZHXVGKT)3.制作U盘WINPE软件(推荐UltraISO&a…

推到重做

自己做到太差了,完全是在1.16的基础上进行了少量的修改,和自己当初的想法完全不一样,推到重新做!!! 先找下思路,复习下自己的系统以及uboot烧写过程。 自带Uboot烧写过程 硬件检测结果&#xff…

广东省2021年普通高考成绩复查结果查询,广东省2021年普通高考英语听说考试成绩可以查询啦!...

广东省2021年普通高考英语听说考试评卷工作已经结束。现将考试成绩发布的有关事项通知如下。一、考试成绩发布广东省2021年普通高考英语听说考试成绩将于4月28日统一发布。高考英语听说考试成绩按考生卷面成绩(满分60分)3,四舍五入取整数后计得。英语听说考试成绩与…

2021辽宁大洼高中高考成绩查询,2021大洼高中最后一跑——励志高考,逆袭人生...

六月的天,湛蓝六月的风,不燥六月的日子,激情四溢六月里的故事,总是以青春为主题六月里的大洼高中高三学子们迎来了人生重要的里程碑——高考2021年6月5日,是大洼高中高三学子们热情饱满准备出征高考、逆袭人生的日子。…