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. Windows 下 pip和easy_install 的安装与使用

    最简单的莫过于用vs 开发python 的程序,集成PTVS插件后,果然简单易用,调试也方便. 手工搭建的话: 官网:https://pypi.python.org/pypi/setuptools 主 ...

  2. 【转】Device Tree(三):代码分析

    原文网址:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入De ...

  3. UESTC_排名表 2015 UESTC Training for Graph Theory<Problem I>

    I - 排名表 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  4. Maven项目部署方案

    以xbank项目做为应用背景,简单说明一下Maven项目的部署方案: 1.项目说明 xbank基础服务端的11个子项目均采用Maven搭建: 其中各项目功能设计如下: froad-xbank-serv ...

  5. Android基础&进阶

    http://blog.csdn.net/liuhe688/article/details/9494411

  6. java 面向过程实现万年历

    public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-gener ...

  7. 海量路由表能够使用HASH表存储吗-HASH查找和TRIE树查找

    千万别! 非常多人这样说,也包括我. Linux内核早就把HASH路由表去掉了.如今就仅仅剩下TRIE了,只是我还是希望就这两种数据结构展开一些形而上的讨论. 1.hash和trie/radix ha ...

  8. [R语言画图]气泡图symbols

    绘制气泡图主要使用函数symbols(x,y,circle=r).当中x.y是坐标轴,r是每一个点的半径. x<-rnorm(10) y<-rnorm(10) r<-abs(rnor ...

  9. MVC View基础(转)

    View主要用于呈现数据.由于Controller和相关的Service已经处理完业务逻辑并将结果打包成model实体,View只需要怎么去获得model并将其转为Html 1选择需要渲染的视图 在上 ...

  10. Sql语句不能识别Go的解决办法(动态创建表的触发器)

    问题来源 用sqlserver直接打开sql文本,执行没问题,但是当用Sqlcommand类执行cmdtext命令文本时总是失败报错. 原因分析及解决 用数据库直接执行sql语句没问题,甚至还可以用G ...