历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-04-23 来源: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等 是一种高速全双工,同步的通信总线


推荐阅读

史海拾趣

大毅科技公司的发展小趣事

为了进一步提升产品质量和竞争力,大毅科技积极申请并获得了多项国际品质认证,如ISO9001、ISO14001、TS16949等。这些认证不仅证明了大毅科技在品质管理方面的卓越能力,还为公司打开了通往国际市场的大门。随着认证的不断增多,大毅科技的产品开始出口到全球各地,与索尼、雅马哈等知名企业建立了长期合作关系。

Chips And Technologies Inc公司的发展小趣事

在创立初期,C&T就展现出了强大的技术创新能力。公司不断推出新产品,这些产品不仅性能卓越,而且具有高度的集成性和稳定性,深受市场欢迎。此外,C&T还积极与业界合作,推动技术标准的制定和完善,为整个行业的发展做出了重要贡献。

FINTEK公司的发展小趣事

FINTEK公司深知技术创新是企业持续发展的核心动力。因此,公司不断加大研发投入,建立了完善的研发体系和激励机制。通过与国内外知名高校和研究机构的合作,FINTEK在人工智能、物联网、5G通信等前沿领域取得了多项重要技术突破。这些创新成果不仅提升了公司的核心竞争力,也为电子行业的未来发展贡献了重要力量。

American Custom Components公司的发展小趣事

American Custom Components公司自创立之初,就致力于电子元器件的创新研发。在一次技术研讨会上,公司的研发团队发现了一种新型的半导体材料,具有出色的导电性和稳定性。经过数月的实验和验证,团队成功地将这种材料应用于新产品中,推出了一款性能卓越的集成电路。这一创新技术不仅提升了公司的产品质量,还赢得了市场的广泛认可,为公司的发展奠定了坚实基础。

FOX [Fox Electronics]公司的发展小趣事

在20世纪90年代初,Fox Electronics凭借其创新的温补晶体振荡器(TCXO)技术,在竞争激烈的电子行业中脱颖而出。该技术通过自动调节晶体振荡频率以补偿温度变化,极大地提高了电子设备的稳定性和可靠性。这一创新不仅为Fox Electronics赢得了众多高端客户的青睐,还推动了整个行业对高精度时钟源的需求增长。随着通信和计算机技术的快速发展,Fox Electronics不断迭代其TCXO技术,持续引领市场潮流。

安森德(Ascend)公司的发展小趣事

在快速发展的过程中,安森德公司始终注重品牌建设和文化塑造。公司坚持以客户为中心的服务理念,不断提升产品质量和服务水平。同时,安森德还积极参与各类行业活动和公益事业,提升公司的社会形象和品牌价值。在内部管理方面,公司倡导创新、协作、担当的企业文化,为员工提供了一个良好的工作环境和发展平台。这些举措不仅增强了员工的归属感和凝聚力,也为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

基于TMS320F2812的中低压线路保护装置的研制

基于TMS320F2812的中低压线路保护装置的研制…

查看全部问答>

猎头急招!!知名公司(笔记本底层开发)

熟练掌握C / C++ /VS 的编程,并参与过大型软件的开发 具备Windows APP 和 Driver的产品开发经验和一定的硬件、固件知识 请联系 QQ :  314404285       email: lxd198409@163.com…

查看全部问答>

一个基于WLAN的嵌入式系统开发项目外包

一个基于无线局域网的远程控制系统项目,欢迎个人、团队参与,详细情况请参见以下说明 项目说明: 该项目由个人操作终端和远程接收控制终端构成,可利用ARM7或ARM9在linux下完成。 要求: 该项目要求开发者(或团队)熟悉ARM CPU, 熟悉无 ...…

查看全部问答>

屏幕录像专家V7.5 Build20080428破解版

感觉挺好用的 网上做视频就是这个郭天祥的51的视频就是用的屏幕录像专家   内有使用文档,可以参考。    …

查看全部问答>

关于ADC的参数,我一直很费解!

###################################################################手册介绍:● ADC 转换时间:− STM32F103xx 增强型产品:ADC 时钟为56MHz 时为1μs(ADC 时钟为72MHz 为1.17μs)−& ...…

查看全部问答>

请教2407中的乘法问题!急。谢谢!

向老师请教: 在2407中实现卷积的计算,用到了乘法器,指令是MAC。 其中相乘的两个数据一个是小数0.4830,一个是整数34 在汇编语言编写时,我将小数写成Q8格式:4830*256/10000;整数写成0022h。不理解的是,两个数是怎么相乘的?是不是DSP会将0 ...…

查看全部问答>

TI原装MSP430 MSP430F5529 USB Exp Board 开发板

TI原装MSP430 MSP430F5529 USB Exp Board 开发板 TI原装MSP430 MSP430F5529 USB Exp Board 开发板 原价1064,全新,现在500元转让,有意者可以上淘宝看看 搜“TI原装MSP430 MSP430F5529 USB Exp Board 开发板”,价格是500元的那个就是了! 其 ...…

查看全部问答>

程序移植

如何把这个程序移植到这个电路上? #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include #define DataPort P1 //定义数据端口 程序中遇到DataPort 则用P1 替换 unsigned char code dofly_DuanMa[10]={0x3f,0 ...…

查看全部问答>