登录/注册

stm32f103 spi2初始化

更多

以下是STM32F103系列中SPI2模块的初始化步骤及代码示例(基于标准外设库):


SPI2初始化步骤

  1. 使能时钟

    • 开启SPI2和GPIOB的时钟(SPI2挂载在APB1总线,GPIOB在APB2)。
  2. 配置GPIO

    • 将PB13(SCK)、PB14(MISO)、PB15(MOSI)设置为复用推挽输出模式。
  3. 设置SPI参数

    • 配置SPI模式(主/从)、数据格式、时钟极性与相位、波特率等。
  4. 使能SPI2

    • 最后启用SPI2外设。

代码示例(标准库)

#include "stm32f10x.h"

void SPI2_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct;
    SPI_InitTypeDef SPI_InitStruct;

    // 1. 使能时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   // GPIOB时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);    // SPI2时钟

    // 2. 配置GPIO:SCK(PB13), MOSI(PB15)
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;           // 复用推挽输出
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    // MISO(PB14)配置为浮空输入
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    // 3. 配置SPI2参数
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 全双工
    SPI_InitStruct.SPI_Mode = SPI_Mode_Master;                      // 主模式
    SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;                   // 8位数据
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;                         // 时钟极性:低电平空闲
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;                       // 第1个边沿采样
    SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;                          // 软件控制NSS
    SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;// 波特率预分频
    SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;                  // MSB先行
    SPI_Init(SPI2, &SPI_InitStruct);

    // 4. 使能SPI2
    SPI_Cmd(SPI2, ENABLE);
}

关键参数说明


注意事项

  1. NSS(片选)引脚

    • 若使用硬件NSS,需额外配置引脚(如PB12),并设置SPI_NSS_Hard
    • 通常建议使用软件控制(SPI_NSS_Soft),手动操作GPIO控制片选。
  2. 时钟源

    • 默认SPI时钟源为APB1总线时钟(STM32F103为72 MHz时,APB1时钟为36 MHz)。
  3. 调试工具

    • 使用逻辑分析仪或示波器观察SCK、MOSI/MISO波形,确认通信参数正确。

根据实际外设要求调整CPOLCPHA和波特率等参数即可。

stm32f105是有otg功能的,其对USB初始化stm32f103有什么区别?

1.在网上找到了一些例程,其中有些包含USB的cdc库,有些不包含 2.stm32f105是有otg功能的,其对USB初始化与stm32f103

2024-05-09 07:08:24

STM32F103系统的SPI波特率控制

以STM32F103为例,经过system_stm32f10x.c文件中的SystemInit()函数之后,这里是指的默认时钟配置如下图所示:STM32F10

2022-02-17 06:14:51

STM32F103系列芯片简介

目录一、STM32F103系列芯片地址映射和寄存器映射原理以及GPIO端口初始化设置二、STM点亮流水灯一、STM32F103系列芯片地址映射和

2022-02-10 07:08:59

STM32F103的映射的介绍、GPIO端口初始化设置和点流水灯详细操作

文章目录一、STM32F103的映射介绍1.地址映射介绍2.寄存器映射的介绍二、GPIO端口的初始化设置1.GIPO简介一、

资料下载 李鸿洋 2021-12-31 19:15:34

STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化

文章目录一、STM32F103系列芯片的地址映射和寄存器映射原理1.寄存器2.地址映射和寄存器映射原理二、GPIO端口的初始化1.GPIO简介

资料下载 佚名 2021-12-05 14:21:08

STM32F103STM32F030 SPI-miso配置不同点

在调试STM32F103和STM32F030的SPI时,发现两者的MISO配置不同,S

资料下载 张强 2021-12-02 16:06:14

STM32F103输入捕获--按键

STM32F103输入捕获–按键文章目录STM32F103输入捕获--按键一、输入捕获二、定义初始化所需结构体三、时钟使能四、GPIO

资料下载 刘伟 2021-11-30 13:51:12

stm32f103系列单片机串口初始化

stm32f103系列单片机串口初始化 这篇文章是本人从小白到熟悉这个单片机的过程,本在使用过程中主要是针对的64为单片机,但是其它引脚位数的单片机应该也是比较实用,由于篇幅较长,废话不多

资料下载 20762 2021-11-19 11:06:03

为什么对STM32F103芯片的引脚进行初始化其引脚会被拉低呢

为什么对STM32F103芯片的引脚进行初始化其引脚会被拉低呢?如何解决?

2021-12-14 06:55:57

如何去实现基于STM32F103SPI通信读写数据呢

基于STM32F103的SPI功能有哪些?初始化SPI接口主要步骤有哪些

2021-12-08 06:33:32

如何对STM32F103芯片的串口进行初始化

STM32F103系列单片机共有几个串口呢?如何对STM32F103芯片的串口进行初始化呢?

2021-12-06 06:59:37

stm32f103单片机串口初始化的过程是怎样的?

stm32f103单片机串口初始化的过程是怎样的?

2021-12-06 06:04:09

如何对STM32SPI1、SPI2以及SPI3进行初始化

如何对STM32的SPI1、SPI2以及SPI3进行

2021-10-29 07:26:49

STM32SPI1、SPI2SPI3初始化及RF1101的应用

STM32的SPI1、SPI2、SPI3

2021-08-05 07:53:33

为什么我在STM32F103上操作SPI2数据发送不出去?

STM32F103的SPI2问题,求救在STM32F103,系统时钟72M,SPI

2019-07-11 23:24:20
7天热门专题 换一换
相关标签