spi是一种高速的,全双工,同步的通信总线,原理和使用简单,占用引脚资源少,是一种常用的通信方式。stm32通常有2~3个spi接口。
使用spi控制器时,gpio引脚的模式配置就要改为复用功能了,复用为spi1功能。由于片选信号引脚没有连接到stm32中spi1的ncc引脚上,所以片选信号引脚仍要设置为通用输出模式。
配置完gpio口,接下来就要配置spi1功能了。
spi控制寄存器1(spi_cr1)
双向通信数据模式使能位bidimode(bidirectional data mode enable)在位15,置0为选择双线单向通信数据模式,置1为选择单线双向通信数据模式。
双向通信模式下的输出使能位bidioe (output enable in bidirectional mode)在位14,此位结合 bidimode 位,用于选择双向通信模式下的传输方向,置0为禁止输出(只接收模式),置1为使能输出(只发送模式)。
数据帧格式位dff (data frame format)在位11,置0为发送/接收选择8位数据帧格式,置1为发送/接收选择16为数据帧格式。为确保正确操作,只应在禁止spi时对此位执行操作。
软件从器件管理位ssm (software slave management)在位9,当ssm置1时,nss引脚输入替换为ssi位的值。
帧格式位lsbfirst (frame format)在位7,置0时先发送msb,置1时先发送lsb。正在通信时不应更改此位。
spi 使能位spe (spi enable)在位6,置0时关闭外设,置1时使能外设。
波特率控制位br(baud rate control)[2:0]在位3~5,000时为fpclk/2,001时为fpclk/4,010时为fpclk/8,011时为fpclk/16,100时为fpclk/32,101时为fpclk/64,110时为fpclk/128,111时为fpclk/256。正在通信时不应更改这些位。
主模式选择位mstr (master selection)在位2,置0时为从配置,置1时为主配置。正在通信时不应更改此位。
时钟极性位cpol (clock polarity)在位1,置0时,空闲状态时,sck保持低电平;置1时,空闲状态时,sck保持高电平。正在通信时不应更改此位。
时钟相位位cpha (clock phase)在位0,置0时从第一个时钟边沿开始采样数据,置1时从第二个时钟边沿开始采样数据。正在通信时不应更改此位。
//f_cs:pb14//spi1_sck:pb3//spi1_miso:pb4 - >输入//spi1_mosi:pb5void spi1_init(){ //1. 开端口时钟 rcc- >ahb1enr |= 1< moder &= ~(0x3< moder |= 1< moder &= ~(0x3f< moder |= 2< <6 | 2< <8 | 2< otyper &= ~(1< <14 | 1< <3 | 1< ospeedr &= ~(0x3< <28 | 0x3f< ospeedr |= 1< ospeedr |= 2< <6 | 2< <8 | 2< pupdr &= ~(0x3f< <6 | 0x3< afr[0] &= 0xff000fff; gpiob- >afr[0] |= 0x00555000; //复用为spi1 //6. 开spi1模块时钟 rcc- >apb2enr |= 1< cr1 = 0; spi1- >cr1 |= 0x3< cr1 |= 1< cr1 |= 1< cr1 |= 3< cr1 |= 1< sr & (1< dr = dat; //接收数据 while((spi1- >sr & (1< dr; return dat;}配置为spi控制器读写w25q64,只要更改以上两个函数就可以了。主函数仍为串口接收文件并保存。程序编译后烧入开发板,串口发送main.c文件并保存到w25q64,从w25q64读取并打印保存的内容,与main.c文件完全一致,spi控制器读写w25q64成功。
spi控制器读写w25q64与io口模拟spi读写w25q64相比,使用spi控制器时只需配置寄存器就可以由硬件自动产生时序,不需要stm32通过软件模拟构造,减少了对cpu资源的消耗。
采用DSP芯片ADV202的嵌入式视频压缩系统
莱迪思发布适用于宽带接入和视频等应用的ECP5 FPGA产品系列
机器学习:三张拉面图,就能识别出每碗拉面在哪家出品
海光三号产品提升公司毛利率 海光信息前三季度净利润增长38.27%
AI助推智能交通安检,每小时通过率提升66%
STM32的SPI控制器实现SPI
天津联通携手华为基于5G MR数据分析打造高质量5G精品共建共享网络
人工智能在网络安全中的四大主流应用
浅谈PSSuniversal 控制器
Vishay发布基于光敏二极管的环境光传感器的视频演示
传苹果汽车或将使用宁德时代的磷酸铁锂电池
如何理解SVPWM调制过程中的电压利用率?
诚邀报名 | OpenCloudOS城市行(北京站):基础软件新探索与最佳实践沙龙!
荣耀9什么时候上市?带你三分钟全面了解荣耀9看点,荣耀8的迭代之作
2017工业半导体产值Top20厂商公布 木林森、欧司朗等登榜
全球PC出货量连续下降_台湾双A呈现大幅衰退
轨至轨低噪声运算放大器LT6200/LT6201
技术干货|基于SD9315设计的血压计方案
一文了解汽车芯片产业
3U PXIe控制器 PXIe主板i7四代 CPU零槽机箱