SPI协议简介
SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设
备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,
要求通讯速率较高的场合。

• 标号1处, NSS信号线由高变低,是SPI通讯的起始信号。 NSS是每个从机各
自独占的信号线,当从机检在自己的NSS线检测到起始信号后,就知道自己
被主机选中了,开始准备与主机通讯。
• 在图中的标号6处, NSS信号由低变高,是SPI通讯的停止信号,表示本次通
讯结束,从机的选中状态被取消。

为什么MOSI,MISO信号线是两根交叉呢?因为这样可以在采样时传递0或者1两种选择,而选择切换时就在触发情况下进行切换(交叉处),所以spi的通讯,到底属于4种模式中的哪种模式很重要。

• CS(NSS)信号线在空闲状态为低电平时, CPOL=0;空闲状态为高电平时, CPOL=1。
• CPHA=0, MOSI和MISO数据线的有效信号在SCK的奇数边沿保持不变,数据信号将在SCK奇数边沿时被采样,在非采样时刻, MOSI和MISO的有效信号才发生切换。

• CS(NSS)信号线在空闲状态为低电平时, CPOL=0;空闲状态为高电平时, CPOL=1。
• CPHA=1, MOSI和MISO数据线的有效信号在SCK的偶数边沿保持不变,数据信号将在SCK偶数边沿时被采样,在非采样时刻, MOSI和MISO的有效信号才发生切换。

编程要点:

上面的MISO,按照正常情况来说,这个引脚应该配置为输入模式,但是在SPI引脚复用的时候,配置成输出模式,也可以接收数据。

在复用模式的时候,配置成推挽或者开漏输出,也可以对输入数据寄存器访问,这样的复用情况下,可以输出也可以输入。但是要是你想配置成输入模式也具有输出功能,那就不切实际了,没有配置输出,肯定没有输出,没有配置输入,可我外部有输入时,在复用情况下,是可以接收输入的。

还要注意与MCU通信的SPI芯片手册对于SPI模式的描述,有的直接给出了模式,有的支持好几种,有的压根就不说,要你自己去看手册的时序图并自己判断。

比如:W25Q128 和ADS1256,都是SPI通信的,但是W25Q128的芯片手册比较人性化:

直接给出了支持模式0和模式3,而且我们知道,通信速率取决于速度更慢的一方,W25Q128也给出了:

但是,TI的ADS1256可没有那么人性化:

英文文档没有介绍关于4种模式的,只有通过时序,我们可以的知道是模式一。同样,速率也不是以时钟多少兆体现的,而是

SPS:每秒采样次数,sample per second。

经过这次项目对ADS1256的调试,对spi认识更加清楚了。

接收和发送函数在同一个函数中:

SPI是全双工的,所以可以在发送的时候接收,也可以在接收的时候发送。但是,我们的通信都是先写发送,再写接收,我在想可不可以先写接收,再写发送呢?这样去想为什么是很好的学习方式,但是经过思考之后,应该是不可行的,必须先写发送再写接收,因为你要通过SPI通信,作为SPI通信发起者,应该先发送,再接收。经测试,也确实如此。(这里是我的推论,如果没有更改,证明测试之后如我预期)。

SPI—读写串行 FLASH的更多相关文章

  1. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  2. 第24章 QSPI—读写串行FLASH

    本章参考资料:<STM32F76xxx参考手册>.<STM32F76xxx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<S ...

  3. JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用

    摘要:JEDEC标准(JESD216)Serial Flash Discoverable Parameter (SFDP)[1]是在串行Flash中建立一个可供查询的描述串行Flash功能的参数表.文 ...

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

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

  5. 第25章 串行FLASH文件系统FatFs—零死角玩转STM32-F429系列

    第25章     串行FLASH文件系统FatFs 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.c ...

  6. 【转载】IIC SPI UART串行总线

    一.SPISPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用. 接口SPI接口经常被称为4线串行 ...

  7. 串行FLASH文件系统FatFs---转自野火论坛

    为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper:这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这 ...

  8. 第25章 串行FLASH文件系统FatFs

    25.1  文件系统 即使读者可能不了解文件系统,读者也一定对“文件”这个概念十分熟悉.数据在PC上是以文件的形式储存在磁盘中的,这些数据的形式一般为ASCII码或二进制形式.在上一章我们已经写好了Q ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.2)- 在串行NOR Flash XIP调试原理

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK在串行NOR Flash调试的原理. 本文是i.MXRT硬件那些事系列第二篇的续集,在第二篇首集 ...

随机推荐

  1. @MySQL为表字段添加索引

    删除索引~ DROP INDEX `idx_dict_type` ON `article` 1.添加PRIMARY KEY(主键索引): ALTER TABLE `table_name` ADD PR ...

  2. [转]SSIS ConnectionManager.ConnectionString Property

    本文转自:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.connectionmanager.conne ...

  3. 完美解决“find: 路径必须在表达式之前:”

    使用find命令查找文件的时候会有如题的提示,只需略作修改即可.两种方法: ①可cd到其它目录再查找(当前目录下存在要查找的目标文件时会出现此类错误,换到其它目录下再执行相同的命令即可): ②如果目标 ...

  4. KISS

    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...

  5. scrapy爬虫框架实例二

    本实例主要通过抓取慕课网的课程信息来展示scrapy框架抓取数据的过程. 1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部 ...

  6. Leetcode--easy系列5

    #83 Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that e ...

  7. 爪哇国新游记之十三----XML文件读写

    /** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...

  8. NSData 转 bytes 字节数据

    NSData 转 bytes 字节数据 NSData *data = [NSData dataWithContentsOfFile:filePath]; NSUInteger len = [data ...

  9. xcode 修改 organization name 和 company identifier

    一:修改 organization name  在终端下 defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ORGA ...

  10. PHP安全:如何正确的取得使用者 IP?

    PHP安全:如何正确的取得使用者 IP? 很多网站都会有侦测用户 IP 的功能,不管是判断使用者来自哪边,或者是记录用户的位置.但是你知道吗?网络上大多数的教学全部都是「错误」的.正确的程序写法可以确 ...