一、SPI总线结构

SPI(Serial Peripheral Interface)串行外设接口,是一种高速的,全双工,同步的通信总线。采用主从模式(Master Slave)架构,支持多个slave,一般仅支持单Master。





SPI接口共有4根信号线,分别是:设备选择线(SS)、时钟线(SCK)、串行输出数据线(MOSI)、串行输入数据线(MISO)。



二、数据传输过程

主节点通过 MOSI 线输出数据,从节点在 SIMO 处从主节点读取数据。同时,也在通过 SOMI 输出 MSB(最高位),主节点会在 MISO处读取从节点的数据,整个过程将一直持续,直至交换完所有数据。





三、总线时序



CPOL极性:决定时钟空闲时为高电平还是低电平

CPOL=0:CLK空闲时是低电平,CLK有效时是高电平
CPOL=1: CLK空闲时是高电平,CLK有效时是低电平
CPHA相位:决定何时进行数据采样(读取)
CPHA=0:第一个边沿采样
CPHA=1:第二个边沿采样

根据CPOL和CPHA的不同组合,SPI被分为4种模式



其中一种情况:CPOL=0,CPHA=0 空闲时为低电平,第一个边沿采样





一、SPI控制器工作流程

2440SPI控制器包含2个SPI接口。

SPI有两个通道,分别为TX通道和RX通道,CPU要写数据到FIFO中,先写数据到SPI_TX_DATA寄存器中,这样此寄存器中的内容就会自动移动到发送FIFO中;

同样的道理,如果CPU要从接收FIFO中读取数据,就访问寄存器SPI_RX_DATA,紧接着,接收FIFO的数据就会自动移动到SPI_RX_DATA寄存器中。

RX部分箭头不应该反一反吗?



CPU访问的是TX数据寄存器和RX数据寄存器,而芯片自动的发送或接受数据从FIFO中。



二、6410裸机驱动分析 

6410芯片手册中有初始化流程:

29.6.1 SETTING SEQUENCE OF SPECIAL FUNCTION REGISTER

Special Function Register must be set in the following sequence. (nCS manual mode)
1. Set Transfer Type. (CPOL & CPHA set )
2. Set Clock configuration register.
3. Set SPI MODE configuration register.
4. Set SPI INT_EN register.
5. Set Packet Count configuration register if necessary.
6. Set Tx or Rx Channel on.
7. Set NSSOUT low to start Tx or Rx operation.
A. Set NSSOUT Bit to low, then start TX data writing.
B. If auto chip selection bit is set, should not control NSSOUT.

SPI软件复位

设置引脚(gpc0123)

设置CH_CFG寄存器中的接收和发送通道开关,设置CPOL,CPHA

MODE_CFG和CLK_CFG的设置

SPI总线介绍和裸机编程分析的更多相关文章

  1. [国嵌攻略][157][SPI总线介绍]

    SPI总线架构 SPI(serial peripheral interface)串行外设接口,是一种高速,全双工,同步的通信总线.采用主从模式(master slave)架构,支持多个slave,一般 ...

  2. SPI总线介绍

    1. 简介 SPI, Serial Peripheral Interface, 串行外设接口, 是一种高速的.全双工.同步的通信总线SPI在芯片的管脚上只占用四根线 SPI接口主要用于MCU与各种外围 ...

  3. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  4. Linux内核中SPI总线驱动分析

    本文主要有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程): 另一个是SPI总线驱动的编写(不用研究具体的实现过程). 1 SPI概述 SPI是英语Serial Peripheral ...

  5. linux内核SPI总线驱动分析(一)(转)

    linux内核SPI总线驱动分析(一)(转) 下面有两个大的模块: 一个是SPI总线驱动的分析            (研究了具体实现的过程) 另一个是SPI总线驱动的编写(不用研究具体的实现过程) ...

  6. SPI总线协议及SPI时序图详解

    SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...

  7. SPI总线协议及SPI时序图详解【转】

    转自:https://www.cnblogs.com/adylee/p/5399742.html SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接 ...

  8. GPIO裸机编程

    作者:李老师,华清远见嵌入式学院讲师. GPIO控制技术是接口技术中最简单的一种.本章通过介绍S5PV210芯片的GPIO控制方法,让读者初步掌握控制硬件接口的方法.本章的主要内容: GPIO功能介绍 ...

  9. SPI总线(同步)

    一.SPI总线简介 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口.SPI 用 于CPU与各种外围器件进行全双工. ...

随机推荐

  1. HttpClient之EntityUtils工具类

    今天看到tttpclient-tutorial上面有这样一句话-----非常的不推荐使用EntityUtils,除非知道Entity是来自可信任的Http Server 而且还需要知道它的最大长度.文 ...

  2. springMVC接收请求参数的几种方式

    1.  用注解@RequestParam绑定请求参数 用注解@RequestParam绑定请求参数a到变量a,当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,例如: ...

  3. SpringMVC的 ModelAndView

    使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图. public class ModelAndView { /** View instance or view name ...

  4. 写出高性能SQL语句的十三条法则

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记 ...

  5. LYOI2016 Summer 一次函数 (线段树)

    题目描述 fqk 退役后开始补习文化课啦,于是他打开了数学必修一开始复习函数,他回想起了一次函数都是 f(x)=kx+b的形式,现在他给了你n个一次函数 fi(x)=kix+b,然后将给你m个操作,操 ...

  6. xshell如何传输文件【转】

    1.打开xshell工具,连接到服务器. 2.yum安装一款工具. #yum install  lrzsz -y 3.检查是否安装成功. #rpm -qa |grep lrzsz 4.上传文件的执行命 ...

  7. js练习题之图片背景轮播

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. jsp的课设1

    记这个为了巩固整个网站的开发流程,java开发太昂贵基本上很少有公司用,不知道学校怎么想的用这个.基本流程适用于任何后台的开发. JDK的安装不提了,Tomcat和Mysql都是用的最新版的,由于是w ...

  9. (转)Docker network命令

    转:https://blog.csdn.net/gezhonglei2007/article/details/51627821 原文地址:https://docs.docker.com/engine/ ...

  10. 小程序 js 判断 字符串 为空 null

    判断字符串是否为空 1 2 3 4 5 var strings = ''; if (string.length == 0) { alert('不能为空'); } 判断字符串是否为“空”字符即用户输入了 ...