KL25的SPI连接一个nor flash。该flash型号为FM25F04,支持SPI的模式0和模式3,要求高位先发送,在上升沿采集数据。

通常,SPI有4种模式,取决于CPOL与CPHA如何配置。

CPOL决定SPI总线空闲时的时钟恒定为高还是为低。CPHA决定是第一个时钟沿采样还是第二个时钟沿采样。

KL25单片机的数据手册有如下叙述:

翻译如下:

CPOL为0,SPI空闲时时钟为低;(等价意思是第一个跳变沿为上升沿)

CPOL为1,SPI空闲时时钟为高;(等价意思是第一个跳变沿为下降沿)

CPHA为0,第一个时钟沿时数据已经准备好了。(即第一个时钟沿采样)

CPHA为1,第一个时钟沿时数据刚启动。(即第二个时钟沿采样)

所以,如果想要上升沿采样,应该配置CPOL为0,CPHA为0。

强烈鄙视网上的KL25教学视频,居然说CPHA决定上升沿采样还是下降沿采样,说:CPHA为1时为上升沿采样,为0时是下降沿采样,误人子弟啊!擦!

KL25的SPI总线用同一名称寄存器传数据和接收数据,不过两者虽然同名,地址却不相同,这一点我们不用理会(网上视频教学这么讲)。SPI操作的显著特点是本身具有环路特征,所以想要得到从机的输出,主机必须输入,把从机的数据给挤出来。主机有多少输入,从机才会有多少输出,从机本身不具备输出能力,所以主机不能仅仅只输入控制命令,接着就等从机的输出,它必须接着输入冗余内容去挤从机的数据。

因为SPI总线的特点,所以存在着一定的总线效率浪费,比如当我们发送控制命令时,此时从机也有返回值,只不过对我们没意义,所以没有读取;当我们想要索取从机的寄存器值时,必须发送冗余字节给从机,此时也是在浪费总线效率。

下面给出我写的代码:

这里没有使用SPI总线的自动片选功能,而是使用GPIO来控制从机的片选,优点在于灵活。

下面的代码是操作nor flash的控制命令。要求先输入命令0xAB,然后写入三个冗余字节0x00(等待从机),接下来从机才会返回device id。这里要注意,主机要想得到从机的数据,不能仅仅只写三个冗余字节,因为从机是没有发送数据的能力的,它想发送必须是主机用数据将其挤出来。所以主机必须多发一个冗余的字节。

KL25用SPI操作nor flash的更多相关文章

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

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

  2. STM32学习笔记(八) SPI总线(操作外部flash)

    1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线:它工作在主从方式,常规需要至少4根线才能够正常工作.SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯 ...

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

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

  4. SPI操作flash MX25L64读写数据

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

  5. Am335x 应用层之SPI操作

    SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合.图1中表现了这四种时序, 时序与CPOL.CPHL的关系也可以从图中看出. 图1 CPOL是用来决定SCK时钟信号空闲时的电平 ...

  6. 玩转X-CTR100 l STM32F4 l W25Q64 SPI串行FLASH存储

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载FLA ...

  7. SPI接口的FLASH

    SPI flash W25Qxx: W25Q系列的spiflash.每页(Page)256B,每16个page为一个sector(扇区=4KB),每16个扇区为一个block(块=64KB) W25Q ...

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

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

  9. 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 4.Matlab版本:Matlab2014b/ ...

随机推荐

  1. Eclipse配置JDK的源代码的src.zip

    Eclipse配置JDK的源代码的src.zip包很简单.只需要简单的几个步骤. 1.点 “window”-> “Preferences” -> “Java” -> “Install ...

  2. GestureDetector和SimpleOnGestureListener的使用教程

    1. 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(Vi ...

  3. 【转】Linux下tar.xz结尾的文件的解压方法--不错

    原文网址:http://blog.csdn.net/silvervi/article/details/6325698 今天尝试编译内核,下载到了一份tar.xz结尾的压缩文件,网上解决方法比较少,不过 ...

  4. 【转】 i2c驱动调试经验

    原文网址:http://blog.csdn.net/cmm20071020/article/details/7179958 把一个i2c驱动从2.6.21升级到2.6.39 上网查到一篇帖子,讲了驱动 ...

  5. spring框架源码编译

    程序猿小菜一枚,最近从github上面下载下来一份spring各个项目的源码一份,但是弄了很长时间,因为网速和(fanqiang)的速度,希望大家不要再为这种无谓的时间花费时间,简单来说github上 ...

  6. Zoj3332-Strange Country II(有向竞赛图)

    You want to visit a strange country. There are n cities in the country. Cities are numbered from 1 t ...

  7. pyqt QTableView例子学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import  * from Py ...

  8. [HeadFirst-HTMLCSS学习笔记][第十三章表格]

    表格 -table 块 tr 行 table row th 表头 table head td 表数据 table data; caption 表格标题 <table> <captio ...

  9. HTML入门基础

    前言:学了一段时间的前端,一直没有写博客的习惯,趁着最近学校组织的实训,把知识重新梳理一遍.知识点大部分来自老师上课学习笔记. 1.HTML是什么? HTML 是用来描述网页的一种标记语言. 1)HT ...

  10. struts1面试题

    由于找了很久的工作都没有找的,只能四处收集那个面试题的.和看面试题的 还有那个记忆力也不是很好了的,而那些公司面试的时候总会有一个面试题的!   在这里分享给大家(那个本来是想上传文件的,但是找不到的 ...