SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。图1中表现了这四种时序,
时序与CPOL、CPHL的关系也可以从图中看出。

图1

CPOL是用来决定SCK时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1时,

空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,

CPHA=1,在每个周期的第二个时钟沿采样。

经由上面我们就可以比对实际设备的时序来对SPI的MODE进行配置了。

找到头文件里的SPI mode的一定义如下:

    1.     #define SPI_CPHA 0x01 /* clock phase */ 
    2.     #define SPI_CPOL 0x02 /* clock polarity */ 
    3.     #define SPI_MODE_0 (0|0) /* (original
      MicroWire) */
    4.     #define SPI_MODE_1 (0|SPI_CPHA) 
    5.     #define SPI_MODE_2 (SPI_CPOL|0) 
    6.     #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
    7. 大家很容易可以分析出SPI四种模式的配置了吧,后面的速率,字节数就都很好配置了。
    8.     int Spi0Mode = SPI_MODE_2; //配置模式
    9.     ioctl(Spi0Handle, SPI_IOC_WR_MODE, &Spi0Mode);
    10.     ioctl(Spi0Handle, SPI_IOC_RD_MODE, &Spi0Mode);

    11.     struct spi_ioc_transfer sSpi0TR;
    12.     sSpi0TR.speed_hz = 6000000; //配置速率6M
      1.    ioctl(Spi0Handle, SPI_IOC_WR_MAX_SPEED_HZ, &sSpi0TR.speed_hz);
      2.    ioctl(Spi0Handle, SPI_IOC_RD_MAX_SPEED_HZ, &sSpi0TR.speed_hz);
    13.      sSpi0TR.bits_per_word =16;  //配置字节数
    14.      sSpi0TR.len = 2;
      1.    ioctl(Spi0Handle, SPI_IOC_WR_BITS_PER_WORD, &sSpi0TR.bits_per_word);
      2.    ioctl(Spi0Handle, SPI_IOC_RD_BITS_PER_WORD, &sSpi0TR.bits_per_word);
      配置好了后,就是读写了,读写需要注意的参数有两个地方:
      1,tx_buf,rx_buf这两个参数决定了SPI的读写,如果只读或只写的情况下,就把另一个不用的参数=NULL。
      2,SPI_IOC_MESSAGE(N)这里的N决定了SPI操作的次数,如果你想连接读写几次SPI就改变N就是了

Am335x 应用层之SPI操作的更多相关文章

  1. KL25用SPI操作nor flash

    KL25的SPI连接一个nor flash.该flash型号为FM25F04,支持SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,SPI有4种模式,取决于CPOL与CPHA如何配置. ...

  2. STM32F10X SPI操作flash MX25L64读写数据(转)

    源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...

  3. SPI操作flash MX25L64读写数据

    STM32F10X SPI操作flash MX25L64读写数据 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,flash芯片 ...

  4. Mini2440 通过 SPI 操作 OLED (裸板下使用 SPI 控制器)

    在裸板下使用 SPI 的话,有两种方法可选: 使用 IO 口模拟 SPI 进行操作 使用 SPI 控制器进行操作 这里我们选用控制器的方式,简单方便. 初始化 SPI static void SPIC ...

  5. spi数据KL25用SPI操作nor flash

    最近研究spi数据,稍微总结一下,以后继续补充: KL25的SPI连接一个nor flash.该flash型号为FM25F04,支撑SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,S ...

  6. am335x gpio 模拟 spi 驱动添加

    kernel 内 make menuconfig // make menuconfig Device Drivers ---> [*] SPI support ---> <*> ...

  7. Linux应用层直接操作GPIO

    Linux应用层直接操作GPIO 在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低.这个大大地提高了灵活性,官方的文档有GPIO Sysfs Inter ...

  8. ADXL345经验总结,采用SPI和I2C总线操作

    一. ADXL345简介       ADXL345是ADI公司推出的三轴(x,y,z)iMEMS数字加速度计(digital accelerometer),具有在16G下高分辨率(13Bit)测量能 ...

  9. spi flash 操作

    W25Q16V 是华邦出的一颗 spi flash. 25系列是比较通用的一个系列. 后面的数字 16 跟容量有关, 16 表示 16Mbits, 相当于 2MB. 与此类似的还有 W25Q128V ...

随机推荐

  1. Hive配置与操作实践

    Hive配置与操作实践 @(Hadoop) 安装hive hive的安装十分简单,只需要在一台服务器上部署即可. 上传hive安装包,解压缩,将其配入环境变量. mysql的设置 在要作为元数据库的m ...

  2. Codeforces Round #250 (Div. 1) D. The Child and Sequence

    D. The Child and Sequence time limit per test 4 seconds memory limit per test 256 megabytes input st ...

  3. (剑指Offer)面试题13:在O(1)时间内删除链表结点

    题目: 在给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间内删除该结点.链表结点与函数的定义如下: struct ListNode{ int val; ListNode* next; } ...

  4. cocos2dx坐标系

    原文转载:http://blog.csdn.net/ejet_shen/article/details/17327223 cocos2dx坐标系 支持下面几种坐标系: 1.屏幕坐标系 原点在左上角,X ...

  5. html中嵌入flvplayer.swf播放器,播放视频

    只需要改动红色的代码: <object classid='clsid:D27CDB6E-AE6D-11cf-96B8-4445535411111' codebase='http://downlo ...

  6. alibaba dexposed初步解析

    alibaba新出了一个非侵入的aop库,感觉不错.那么楼主这次就来学习一下这个库的详细应用,原理以及能够达到的效果. 这里先给出相应的githubproject传送门:https://github. ...

  7. 〖Android〗CM10.2编译错误解决

    错误1: hardware/samsung/exynos4/hal/libhdmi/SecHdmi/SecHdmiV4L2Utils.cpp: In function 'int android::hd ...

  8. 理解HTTP/304响应

    理解HTTP/304响应 原文:http://www.telerik.com/automated-testing-tools/blog/eric-lawrence/12-11-06/understan ...

  9. Quercus-基于 Java 的 PHP 框架

    Quercus是Caucho公司采用纯Java开发的一个PHP5引擎.基于开源授权协议GPL发布.Quercus自带很多个PHP模块和扩展如 PDF,PDO,MySQL和JSON.可以利用这个引擎在一 ...

  10. Centos6 安装 Redis 和集群配置

    Redis安装 先确认gcc和tcl已经安装 sudo yum install gcc-c++ sudo yum install tcl 解压, 编译和安装 .tar.gz /usr/src/ cd ...