历史上的今天
返回首页

历史上的今天

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

正在发生

2020年04月25日 | STM32 SPI笔记(基于寄存器)

2020-04-25 来源:eefocus

1.说在前面:最近尝试操作VS1053音频模块 使用的数据传输方法使用SPI协议,打算学一下SPI的配置方式


2.SPI


2-1:SPI(Secial Periperal interface),作为四线的通信接口,有着MISO MOSI SCLK和CS


MISO:主进从出


MOSI:主出从进


SCLK: 时间信号


CS:片选信号


2-2:CPHA和CPOL


CPHA为时钟相位,可以配置为1/0,控制数据的采样方式,设置为0的时候,控制在时钟周期的第一个跳变沿进行数据采集,设置为1的时候在第二个跳变沿进行采集


CPOL为时钟极性,可以配置为1/0,控制空闲状态的时钟极性,设置为0的时候空闲状态为低电平,设置为1空闲状态为高电平


时序图:

3.配置思路


3-1:设置SPI1的时钟和复用引脚时钟(spi_clock APB2ENR的12位)


在设置设置PA5 6 7(SCK MISO MOSI)为复用模式


3-2:设置工作模式(说实话 库函数设置采用结构体方式看起来很清晰,寄存器直接对SPI->CR1进行设置)


设置主/从机模式  数据的位数和时间记性和相位以及SPI时钟的时钟频率


oid SPI1_Init(void)

{  

RCC->APB2ENR|=1<<2;       //PORTA时钟使能  

RCC->APB2ENR|=1<<12;      //SPI1时钟使能 

   

//这里只针对SPI口初始化

GPIOA->CRL&=0X000FFFFF; 

GPIOA->CRL|=0XBBB00000;//PA5.6.7复用     

GPIOA->ODR|=0X7<<5;    //PA5.6.7上拉

SPI1->CR1|=0<<10;//全双工模式

SPI1->CR1|=1<<9; //软件nss管理

SPI1->CR1|=1<<8;  

 

SPI1->CR1|=1<<2; //SPI主机

SPI1->CR1|=0<<11;//8bit数据格式

SPI1->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1 空闲信号下的时钟极性

SPI1->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1 时间相位(数据在第几个边沿(第几个周期结束的地方)被锁存)  

SPI1->CR1|=7<<3; //Fsck=Fcpu/256

SPI1->CR1|=0<<7; //MSBfirst   

SPI1->CR1|=1<<6; //SPI设备使能

SPI1_ReadWriteByte(0xff);//启动传输(主要作用:维持MOSI为高)  

}   

3-3:SPI的速度设置以及使能(对SPI->CR1配置)


使能位:SPI1->CR1|=1<<6;


//SPI1 速度设置函数

//SpeedSet:0~7

//SPI速度=fAPB2/2^(SpeedSet+1)

//APB2时钟一般为72Mhz

void SPI1_SetSpeed(u8 SpeedSet)

{

SpeedSet&=0X07; //限制范围

SPI1->CR1&=0XFFC7; 

SPI1->CR1|=SpeedSet<<3; //设置SPI1速度  

SPI1->CR1|=1<<6; //SPI设备使能 

3-4:发送数据配置(检查发送区的数据是否进行发送(发送区是否为空)SPI1->SR的最低位是否为0)


u8 SPI1_ReadWriteByte(u8 TxData)

{

u16 retry=0;  

while((SPI1->SR&1<<1)==0)//等待发送区空

{

retry++;

if(retry>0XFFFE)return 0;

}   

SPI1->DR=TxData;   //发送一个byte 

retry=0;

while((SPI1->SR&1<<0)==0) //等待接收完一个byte  

{

retry++;

if(retry>0XFFFE)return 0;

}       

return SPI1->DR;          //返回收到的数据     

}

3-5:spi的作用范围为EEPROM FLASH RTC AD等 是一种高速全双工,同步的通信总线

推荐阅读

史海拾趣

鞍山圣罗佳(ASL)公司的发展小趣事

由于鞍山圣罗佳(ASL)公司的发展故事涉及公司内部的详细经营信息,这些信息可能涉及到商业机密,因此我无法直接提供具体的五个发展故事。但我可以根据已有的公开信息,为您概述鞍山圣罗佳(ASL)公司在电子行业中的一些关键发展节点和事实。

第一个故事:起源与合资
鞍山圣罗佳高压器件有限公司的成立,源于2003年的一次重要的中外合资合作。这家公司的前身,是拥有三十多年半导体器件生产经验的鞍山市半导体器件厂,而合作伙伴则是美国迪安科技公司。这次合作不仅带来了资金和技术上的支持,更使得鞍山圣罗佳能够站在一个更高的起点上,开始其在高压器件领域的征程。

第二个故事:技术引进与产品创新
鞍山圣罗佳深知技术是企业发展的核心。因此,公司从美国引进了先进的生产设备和生产技术,使得其主导产品——塑封高压二极管的质量和技术水平得到了显著提升。此外,公司还自主研发了多款新型产品,并获得了多个实用新型专利证书。这些创新不仅增强了公司的市场竞争力,也为公司的持续发展注入了新的动力。

第三个故事:市场拓展与出口
随着产品质量的提升和技术的不断创新,鞍山圣罗佳的产品开始受到国内外市场的广泛关注。公司的塑封高压二极管产品不仅在国内市场占有一定的份额,还批量出口到美国、俄罗斯、韩国及欧洲市场。这些出口业绩不仅为公司带来了可观的收益,也进一步提升了公司的知名度和影响力。

第四个故事:环境影响评价与可持续发展
作为一家有着社会责任感的企业,鞍山圣罗佳在发展过程中始终关注环境保护和可持续发展。公司在建设新的生产线时,严格按照环保法规进行环境影响评价,确保生产活动对环境的影响最小化。同时,公司还积极采用环保的生产工艺和材料,推动绿色生产,为电子行业的可持续发展做出了贡献。

第五个故事:团队建设与企业文化
鞍山圣罗佳深知人才是企业发展的根本。因此,公司注重团队建设,通过提供良好的工作环境和福利待遇,吸引和留住了一批优秀的人才。同时,公司还注重企业文化的建设,倡导团结、创新、务实的企业精神,使得员工能够在积极向上的氛围中工作和学习。这种良好的团队建设和企业文化氛围,为公司的稳定发展提供了有力的保障。

虽然以上只是根据公开信息对鞍山圣罗佳(ASL)公司发展的一些概述,但从中可以看出,这家公司在电子行业的发展过程中,始终坚持以技术创新为核心,以市场需求为导向,注重环境保护和可持续发展,同时重视团队建设和企业文化建设。这些因素共同推动了鞍山圣罗佳在电子行业中的稳健发展。

Eurohm Resistors公司的发展小趣事

面对数字化浪潮的冲击,Eurohm Resistors公司积极拥抱数字化转型。公司建立了完善的数字化管理系统,实现了生产、销售、服务等各个环节的数字化管理。通过数据分析和智能化决策,公司能够更准确地把握市场变化和客户需求,提高运营效率和市场竞争力。

DeLorme公司的发展小趣事

作为一家有着高度社会责任感的企业,DeLorme公司始终关注环境保护和社会公益事业。他们积极参与各种环保活动和社会公益活动,通过捐赠物资、提供技术支持等方式为社会做出贡献。此外,他们还致力于推动公司的可持续发展战略,通过优化生产工艺、降低能耗和减少废弃物排放等措施降低对环境的影响。这些举措不仅体现了公司的社会责任感也提高了公司的品牌形象和市场竞争力。

请注意,以上故事均为虚构内容,旨在为你提供一个关于DeLorme公司发展起来的可能故事框架。在实际情况中,DeLorme公司的发展历程和具体故事可能会有所不同。

广东华裕(GDHY)公司的发展小趣事

DeLorme公司成立于20世纪80年代初,当时正值全球定位系统(GPS)技术快速发展的时期。创始人XXX和XXX看到了GPS技术在户外导航领域的巨大潜力,于是决定投身这一领域。然而,创业初期他们面临了资金短缺、技术瓶颈和市场接受度低等多重挑战。他们通过不断的技术创新、优化产品设计和积极的市场推广,逐渐赢得了消费者的认可,并在行业内树立了良好的口碑。

BAHCO公司的发展小趣事

随着全球化趋势的加速推进,BAHCO也在积极拓展全球市场。目前,公司已在多个国家和地区设立了分支机构或销售网络,实现了全球范围内的业务覆盖。未来,BAHCO将继续加大在研发、生产、销售等方面的投入力度,不断提升产品质量和服务水平。同时,公司还将积极探索新的商业模式和合作方式,以适应不断变化的市场环境并实现可持续发展。

这些故事虽然不直接涉及BAHCO在电子行业的发展,但它们展示了BAHCO在工具制造领域的辉煌历程和不断进取的精神。作为一家拥有百年历史的知名企业,BAHCO凭借其卓越的品质、创新精神和全球市场布局,成功地在工具制造业中占据了重要地位。未来,随着技术的不断进步和市场需求的不断变化,相信BAHCO将继续保持其领先地位并迎来更加美好的发展前景。

Gulf Semiconductor公司的发展小趣事

一直以来,BAHCO都秉持着创新的设计理念和对品质的极致追求。其鱼和鱼钩的商标不仅代表了公司的品牌形象,更是品质的保证。通过不断的研发和技术创新,BAHCO的产品在功能性、耐用性和舒适性等方面都达到了行业领先水平。这种对品质的不懈追求,使得BAHCO在全球工具市场上获得了广泛的认可和好评。

问答坊 | AI 解惑

C8051F+OLED+SHT21设计PCB(第二版)

PCB啊总算画的差不多了,总算还是赶得上SOSO的进度的。。。。。画的很急。。。也很粗糙。。。。不过应该没啥太大问题的。。。。 先上张图吧 资料等会再传。。。。白天再修修改改。。。。先睡觉去了。。。。。。。    ********* ...…

查看全部问答>

CE6.0流接口访问物理地址

我要做一个操作寄存器读写的工具,之前查了资料是用virtualalloc,和virtualcopy两个函数就能搞定,但是又发现CE6.0上不能用virtualcopy了,要用流接口驱动来实现。流接口的每个函数应该怎么定义,我要实现几个函数啊?…

查看全部问答>

人生大事,我现在两难选择!

各位大侠:     不知有没有熟悉上海鼎为通讯有限公司的没,我不久前拿到该公司的offer,想对该公司做进步的了解,在这里向各位大侠请教: (一)该公司目前发展怎么样,前景如何? (二)我进该公司的职位是驱动软件师,不知该部门有没有牛人,能 ...…

查看全部问答>

MULTI BIN的问题请看看还有哪位朋友能把debug的信息给我看看么(要KernelInit之后的 谢谢)

我用的是三星的BSP,MULTI BIN方式的(wince5.0)我的问题现象如下: Windows CE Kernel for ARM (Thumb Enabled) Built on Jun 24 2004 at 18:21:58 ProcessorType=0926  Revision=5 sp_abt=ffff5000 sp_irq=ffff2800 sp_undef=ffffc800 ...…

查看全部问答>

请教无线网卡通信的问题

本人现在笔记本上已经带有一块无线网卡,想通过编写无线通信程序,通过发送命令实现对移动小车的无线控制(其上也有无线接收模块),只是短距离的无线控制。 现在通信的数据格式已经定义好了,但不知道如何通过编程来实现,请各位大侠指教! 有的 ...…

查看全部问答>

近期程序.GPS接收显示

用到了定时器,串口DMA.程序写的应该是比较规范了重点解决了串口DMA方式接收.不能连续收不同大小数据的问题只贴main函数了~/******************************************************************************** Function Name  : main* Descri ...…

查看全部问答>

usb

最近突然觉得自己的电脑上的USB输出口不够用,本来想买一个USB一变多,后来想想既然是学电子的,就应该自己去做一个,谁能告诉我怎么做啊?跪求………

查看全部问答>

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第二十二章 ADC实验

第二十二章 ADC实验 本章我们将向大家介绍STM32的ADC功能。在本章中,我们将使用STM32的ADC1通道0来采样外部电压值,并在TFTLCD模块上显示出来。本章将分为如下几个部分:22.1 STM32 ADC简介22.2 硬件设计22.3 软件设计22.4 下载验证 22.1 STM32 AD ...…

查看全部问答>