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. Android -- 再来一发Json

    之前写过一篇Json的博客,当时用的是Gson包来解析的,这次来此自带的org.json来解析.传送门:<Gson解析复杂Json数据> JSON的结构 (1) Name/Value Pa ...

  2. spring autowired还需要在xml中申明bean ?

    如果未自动扫描spring管理的类,则需要在xml中申明.如果自动扫描包下的类,则不需要 (如果配置了自动扫描,还是不行还需要进行手动在xml中声明,则就是工程建立的有问题,包的路径等问题)

  3. TabHost随着输入法软键盘出现而上浮的问题

    解决办法: 在androidMenifest.xml中的TabHost对应的activity中添加如下代码: android:screenOrientation="portrait" ...

  4. 解决 同时安装 python3,python2环境时,用pip安装 python3 包

    应用场景 默认mac上已经安装了 python2; 而我又安装了 python3,并使用 python3; 安装了 pip 默认,pip安装的包安装在了 python2上了: 但是我想用 pip把安装 ...

  5. Log4j配置文件例子

    Log4j配置文件例子: # Define somedefault values that can be overridden by system properties hbase.root.logg ...

  6. JSP生成静态html网页

    /** * jsp生成静态html网页 */ public class ToHtml extends HttpServlet { public void service(HttpServletRequ ...

  7. UML学习(一)-工具介绍

    这里用于学习UML的工具是StarUML,没有什么原因为什么要用它,或许仅仅是有人说好用和比较小. 首先介绍下这个工具,来张图. 1.菜单栏(最上面) 2.快捷工具栏(菜单栏下面) 3.工具项(Too ...

  8. JavaWeb request对象常用操作

      JavaWeb request对象常用操作 CreateTime--2018年6月1日16点47分 Author:Marydon 一.前提 import javax.servlet.http.Ht ...

  9. JDBC 滚动和分页

    public class ScrollTest {     /**      * @param args      * @throws SQLException      */     public ...

  10. JS应用(资料很全)

    http://www.cnblogs.com/meil/archive/2007/02/06/642559.html 如果你找的javascript的东西的话,建议你 ctrl+F  直接在这个页上找 ...