【原创】【SPI】SPI通信协议介绍
1、这是个什么玩意
接上篇接着介绍,协议主要就是保证双方能够正常的通信并理解对方的“话”。而本篇介绍的这个SPI协议是为了保证SPI接口的两头双方能够正常通信。具体的说,就是针对那几根物理线如何操作,物理线无非就是涉及高低电平,两条(及两条以上的)线之间需要配合的时序,具体看下面。
2、有毛用啊
不多说了,如上。
3、怎么用啊
SPI有四种工作模式,取决于两个参数:(这两个参数其实就是控制了CLK这一根线,SPI通信不像UART或IIC那样有专门的通信周期,有专门的通信起始信号和结束信号。所以SPI协议能够通过控制时钟信号线在没有数据交流的时候保持的状态,要么是高电平,要么是低电平)
SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
该图参考http://blog.csdn.net/guomutian911/article/details/72813067,在此感谢。
之前说过,由于SPI没有一个统一的规范,所以在时序上描述存在一定的差异,具体以datasheet为准。
还有就是这四种模式的优缺点目前我还未知,请大牛详解。
STM32系列芯片的很多SPI接口都是和GPIO共用,SPI的初始化分为2大块,就是SPI所使用的I/O口的初始化和SPI功能的初始化。对于SPI同步串口要用到的引脚,根据数据的方向,要设置GPIO_Mode_IN_FLOATING或者GPIO_Mode_AF_PP复用推免输出。其他的和GPIO引脚设置一样。
1.管脚因为复用的,故先配置好管脚、并打开spi时钟。下图参考于https://zhuanlan.zhihu.com/p/27489167,在此感谢,该篇写的也非常好,可以继续学习下。
2.设置spi的工作模式通过 SPI1_CR1 来设置,设置SPI1主机模式,设置数据格式8位,然后通过 CPOL 和 CPHA 位来设置 SCK时钟极性及采样方式。并设置 SPI1 的时钟频率(最大18Mhz),以及数据的格式(MSB 在前还是 LSB在前)。
3.使能SPI.
具体SPI主要配置项如下:
SPI_Direction:SPI通讯方向,可配置双线全双工、双线只接收、单线只接收、单线只发送模式;
SPI_Mode:SPI的工作模式,即工作在主机模式或从机模式。若工作在从机模式,则SCK信号由外部提供;
SPI_DataSize:通讯的数据帧大小,可选8位或16位;
SPI_CPOL:时钟极性,配置空闲状态时的SCK电平;
SPI_CPHA:时钟相位,配置数据采样时刻,可配置在每个时钟周期的第1个或第2个边沿进行采样;
SPI_NSS:配置NSS引脚的使用模式,可配置为硬件模式或软件模式。软件模式即是普通的GPIO口,人工拉高或置低其电平;
SPI_BaudRatePrescaler:波特率分频因子,分频后的时钟即为SPI的SCK信号线的时钟频率;
SPI_FirstBit:串行通讯中总会牵扯到MSB(高位)先行还是LSB(低位)先行的问题,可以用这个结构体成员进行配置;
SPI_CRCPolynomial:CRC校验,若使用CRC,则可计算CRC的值。
四,成为大神的用法
多调试,多解决问题,推荐博客http://blog.csdn.net/guomutian911/article/details/72813067,该博客记录了一些SPI的问题,在此推荐给大家。通常比较常见的问题是CLK的频率太快,导致接收数据不对或不完整。主器件时钟CLK主、从器件时钟CLK从和同步串行时钟SCK,其中SCK是对CLK主的分频,CLK从和CLK主是异步的。要使SCK无差错无遗漏地被从器件所检测到,从器件的时钟CLK从必须要足够快。
【原创】【SPI】SPI通信协议介绍相关推荐
- 计算机串口接spi,SPI串口模块-SPI接口详细介绍
SPI串口模块-SPI接口详细介绍 1. SPI串口模块-概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线.常规只占用四 ...
- UART SPI I2C 接口介绍 转载
UART SPI I2C 接口介绍@TOC 做单片机开发时UART,SPI和I2C都是我们最经常使用到的硬件接口,我收集了相关的具体材料对这三种接口进行了详细的解释. UART UART是一种通用串行 ...
- [原创]Paros工具培训介绍
[原创]Paros工具培训介绍 Paros Proxy工具介绍 Paros proxy是一个对Web应用程序的漏洞进行评估的代理程序,它支持动态地查看/编辑 HTTP/HTTPS信息,可以改变cook ...
- [原创]RedisDesktopManager工具使用介绍
[原创]RedisDesktopManager工具使用介绍 1 RedisDesktopManager简介 一款能够跨平台使用的开源性redis可视化工具.redis desktop manager主 ...
- 一篇简明的wifi通信协议介绍
原文:http://www.openwrt.pro/post-500.html 这一篇简明的wifi通信协议介绍,原作者写的非常棒,转载保存 这里对wifi的802.11协议中比较常见的知识做一个基本 ...
- SPI接口通信协议详解:SPI时序、2线、3线、4线SPI及4种常用工作模式
简介 SPI通信原理比I2C要简单,它主要是主从方式通信.这种模式通常只有一个主机和一个或者多个从机,标准的SPI是4根线,分别是SSEL(片选,也写作 SCS).SCLK(时钟,也写作SCK).MO ...
- 简述SPI总线通信协议笔记
一.SPI总线简介 SPI总线是串行.高速.全双工.同步通信总线.采用主从方式工作,一般有一个住设备和一个或多个从设备.SPI需要至少4根线,分别是MISO(主设备输入从设备输出).MOSI(主设备输 ...
- RK3399平台开发系列讲解(SPI子系统)4.32、SPI通信过程介绍
平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1
- 常见单片机通信协议介绍【CAN、LIN】【7000字】【详解】【原创】
文章目录 前言 一.先百度百科几个专业名词看看 1.单片机 2.通信 3.❤不能纸上谈兵,也不能眼高手低 二.32单片机代码 1.浅浅分析下32内核架构 2.浅浅分析下串/并行通信.同/异步通信 3. ...
最新文章
- 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
- 习题5-5 使用函数统计指定数字的个数 (15 分)
- 微信硬件平台智能路由行业解决方案
- python输入输出-6、Python 输入输出
- Flex前端与Java服务端交互,反射机制挑大旗
- 改变listview的每个item的背景色
- GoogLeNet代码解读
- Day3-----delayPrompt
- python之简单爬虫(爬取豆瓣出版社)
- ant 执行多个构建文件
- airtest web 录制滑块_Airtest之web自动化(一)
- C#中如何截取Windows消息来触发自定义事件
- 关闭tomcat报错Cannot allocate memory
- 【Python】Pandas DataFrame 一维表二维表的转换
- 9.12测试(二)——国际象棋
- song -接小球游戏1
- 【时间序列】IJCAI 2021丨时间序列相关研究论文汇总
- 基于Tofino2的64X100GE高性能可编程交换机MX7636-64X
- AU降噪 李兴兴
- Caché SQL 高性能优化