历史上的今天
返回首页

历史上的今天

今天是:2025年04月27日(星期日)

正在发生

2019年04月27日 | stm32的SPI总结

2019-04-27 来源:eefocus

引脚介绍

SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为

——SS 、SCK、MOSI、MISO。它们的作用介绍如下 :

1)SS ( Slave Select):片选信号线,当有多个 SPI 设备与 MCU 相连时,每个设备

的这个片选信号线是与 MCU 单独的引脚相连的,而其他的 SCK、MOSI、MISO线则为多个设备并联到相同的 SPI 总线上,见图 15- 1。当 SS 信号线为低电平时,片选有效,开始SPI 通信。

2)SCK (Serial Clock):时钟信号线,由主通信设备产生,不同的设备支持的时钟

频率不一样,如 STM32 的 SPI 时钟频率最大为 f PCLK /2。

3)MOSI (MasterOutput, Slave Input):主设备输出 / 从设备输入引脚。主机的数据

从这条信号线输出,从机由这条信号线读入数据,即这条线上数据的方向为主机到从机。

4)miso主设备输入/ 从设备输出引脚。主机从这条信号线读入数据,从机的数据则由这条信号线输出,即在这条线上数据的方向为从机到主机。


GPIO配置

硬件连接

编程要点

初始化了 SPI1 复用到的 GPIO 引脚,启动了 GPIO 及 SPI1 外设

的时钟,并初始化了 SPI 的模式


1)SPI_Mode :STM32 的 SPI 设 备 可 以 工 作 于 主 机 模 式(SPI_Mode_Master)

或 从 机 模 式(SPI_Mode_Slave),这两个模式的最大区别为 SPI 的 SCK 信号线的时序,SCK 的时序是由通信中的主机产生的。若被配置为从机模式,STM32 的 SPI 模块将接受外来的 SCK 信号。本实验中 STM32 作为 SPI 通信中的主机,我们向这个成员赋值为主机模式(SPI_Mode_Master)。

2)SPI_DataSize :这个成员可以选择 SPI 每次通信的数据大小(称为数据帧)为8 位

还是 16 位。从 Flash 的数据手册我们可以查到,本 Flash 通信的数据帧大小为 8 位,

STM32 的 SPI 模块设置要与之相同。

3)SPI_CPOL 和 SPI_CPHA :这 两 个 成 员 即 配 置 SPI 的 时 钟 极 性(CPOL) 和

时 钟 相 位(CPHA),这两个配置影响到 SPI 的通信模式,该设置要符合将要互相通信的设备的要求。CPOL 分别可以取 SPI_CPOL_High(SPI 通信空闲时 SCK 为高电平)和

SPI_CPOL_Low(SPI 通信空闲时 SCK 为低电平)。CPHA则可以取 SPI_CPHA_1Edge

(在 SCK 的奇数边沿采集数据) 和 SPI_CPHA_2Edge (在 SCK 的偶数边沿采集数

据) 。

查阅本 Flash 的使用手册,见图 15- 6。可以了解到这个 Flash 支持以 SPI 的模式 0 和模式 3通信。即在 SPI 空闲时,SCK 为低电平,奇数边沿采样(模式 0);也可以在 SPI 空闲时,SCK 为高电平,偶数边沿采样(模式 3)。即无论 CPOL 的状态是什么,Flash的数据采样时刻为 SCK 的上升沿。我们在本实验配置使用它的模式 3,即把 CPOL 赋值为

SPI_CPOL_High ;


2)4 ) SPI_NSS : 本 成 员 配 置 NSS 引 脚 的 使 用 模 式 , 可 以 选 择 为 硬 件 模 式(SPI_NSS_Hard )与软件模式(SPI_NSS_Soft),在硬件模式中的 SPI 片选信号由硬件自动产生,而软件模式则需要我们亲自把相应的 GPIO 端口拉高或置低产生非片选和片选信

号。如果外界条件允许,硬件模式还会自动将 STM32 的 SPI 设置为主机。本实验使用软件模式,向这个成员赋值为 SPI_NSS_Soft 。

5)SPI_BaudRatePrescaler :本成员设置波特率分频值,分频后的时钟即为 SPI 的 SCK

信号线的时钟频率。这个成员参数可设置为 f PCLK 的 2、4、6、8、16、32、64、128、

256 分频。本实验向这个成员赋值为 SPI_BaudRatePrescaler_4,即 f PCLK 的 4 分频。

6)SPI_FirstBit :所有串行的通信协议都会有 MSB 先行(高位数据在前)还是 LSB

先行(低位数据在前)的问题,而 STM32 的 SPI 模块可以通过这个结构体成员,对这个特性 编 程 控 制 。 据 Flash 的 通 信 时 序 , 我 们 向 这 个 成 员 赋 值 为 MSB 先 行

(SPI_FirstBit_MSB)。

7)SPI_CRCPolynomial :这是 SPI 的 CRC 校验中的多项式,若我们使用 CRC 校验

时,就使用这个成员的参数(多项式)来计算 CRC 的值。由于本实验的 Flash 不支持 CRC校验,所以我们向这个结构体成员赋值为7 实际上是没有意义的。

配置完这些结构体成员后,我们要调用SPI_Init() 函数把这些参数写入寄存器中,实现

SPI 的初始化,然后调用


推荐阅读

史海拾趣

Circuit Technology Inc公司的发展小趣事

随着市场竞争的加剧,CTI意识到品质管理对于企业发展的重要性。于是,公司开始引进先进的品质管理体系,从原材料采购到生产流程控制,再到产品检测,每一个环节都严格把关。同时,CTI还加大了品牌宣传力度,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。这些举措不仅提高了产品的品质稳定性,也赢得了客户的信赖和支持。

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

Circuit Technology Inc(以下简称CTI)自创立之初,便致力于电路技术的研发与创新。在成立初期,公司凭借其独特的电路设计技术,成功开发出一款高效能、低成本的电路板,迅速在行业内崭露头角。随着技术的不断完善和市场的逐步认可,CTI的产品逐渐占据了市场份额,公司规模也逐渐扩大。为了进一步拓展市场,CTI积极与国内外知名企业合作,共同开发新产品,不断提升自身的技术水平和市场竞争力。

AURORA公司的发展小趣事

AURORA公司一直致力于提升自动驾驶技术的安全性和可靠性。通过不断研发和创新,AURORA在自动驾驶算法、传感器融合、数据处理等方面取得了显著进展。公司的技术团队不断攻克技术难题,推动自动驾驶技术向更高等级迈进。同时,AURORA还积极与高校和研究机构合作,共同推动自动驾驶技术的研发和应用。

敦泰(FOCALTECH)公司的发展小趣事
调节冰箱温度时,应根据季节和存放食物的需求进行调整。一般来说,冷藏室的温度应设置在2-8℃之间,冷冻室的温度应设置在-18℃以下。可以通过冰箱上的温度调节按钮或触摸屏进行设置。同时,注意避免将温度设置过低或过高,以免影响食物的保鲜效果和冰箱的能耗。
Blaze Display Technology Co Ltd公司的发展小趣事

随着技术的不断进步,Blaze公司意识到要想在激烈的市场竞争中立于不败之地,必须不断进行技术创新和品质升级。因此,公司加大了研发投入,引进了一批高端技术人才和先进设备,成功研发出了多项具有自主知识产权的核心技术。同时,公司还严格把控产品质量,确保每一块显示屏都达到行业领先水平。

CHINFA公司的发展小趣事

随着全球化进程的加速,CHINFA公司意识到必须走国际化发展道路。公司制定了详细的国际化战略,积极开拓海外市场。通过与国外知名企业的合作和交流,公司不断提升自身的技术水平和市场竞争力。同时,公司还积极参加国际电子展会和论坛,展示自身实力和产品优势,进一步提升了品牌知名度和影响力。

问答坊 | AI 解惑

电子元器件基础知识——集成电路

集成电路是一种采用特殊工艺,将晶体管、电阻、电容等元件集成在硅基片上而形成的具有一定功能的器件,英文为缩写为IC,也俗称芯片。集成电路是六十年代出现的,当时只集成了十几个元器件。 后来集成度越来越高,也有了今天的P-III。 集成电路根 ...…

查看全部问答>

面试时求完美还是求真实?

现在都大家都在找工作,找工作就面临着要面试,你面试时是追求完美还是真实性呢?…

查看全部问答>

每日无线词汇----射线跟踪模型 Ray Tracing Model(zt)

类比:每天有成千上万的人从北京出发去往全国各地,假若现在想知道每天有多少乘客从北京出发到上海。理论上我们只要把每天从北京到上海所有可能的交通工具包括飞机、火车、汽车所能运输的人加起来便可以了。但是你有可能少考虑一部分人,他们可能跑 ...…

查看全部问答>

触摸屏无法校准~~

大家好,     遇到新问题。触摸屏无法校准。就是校准之后又开始校准,反复校准。。。。。。     提示是Maximum Allowed Error 7: Maximum error 60890 exceeds calibration threshold 7     这段log应该是pubilc ...…

查看全部问答>

[急!]OV9650摄像头 视频传输问题

在程序的前面用 m_hled=CreateFile(_T(\"CIS1:\"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);//打开驱动 ret = DeviceIoControl(m_hled,CAM_IOCTL_SAMSUNG_PREVIEW_START,NULL,NULL,NULL,NULL,NULL,NULL); 在开发板上LCD已经实时显 ...…

查看全部问答>

求友善之臂SBC2410光盘资料包含vivi等内核源码

如题“ 求友善之臂SBC2410光盘资料包含vivi等内核源码” 在线等待,急用........ 哪个兄弟有, 恳请您给我发一个 ,在下不胜感激, 资料内容比较大,所以请您发到我的邮箱:804763993@qq.com 请注明您的eeworld号 我给你再追加100分 谢谢.....…

查看全部问答>

寻找WIN CE 开发人员

正在找人开发基于WIN CE平台的PDA应用程序,有意者请联系QQ40326822 …

查看全部问答>

wince6.0 R3 IE Data Abort

最近将wince6从 R2升级到了R3, 发现ie在打开网页后出现Data Abort. 网页还是能打开。但是CPU占用率变化很大。经常上升到%100. 从MS的官方论坛发现了打了R3 09年12月份的补丁是必然会出现Data Abort的, 但是我安装的是R3没有添加任何补丁的也会出现 ...…

查看全部问答>

上班的那点事2

工作中,方案的选定总不是那么完美,所以上班都免不了开会来解决诸如此类的问题; 如:LED T8灯管有长的120cm,也有短的60cm;为了方便库存,设计的时候 铝基板只设计成60公分的那一款,并用2块60公分的铝基板拼接成120公分的,同时共用; 但是 ...…

查看全部问答>

指示表全自动检定仪会用到MSP430的那一款单片机呀

各位大侠 ,有谁知道指示表全自动检定仪会用到MSP430的那一款单片机呀?   有知道的请联系我0755-28168418  QQ:754181079…

查看全部问答>