`
anlx27
  • 浏览: 496142 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

STM32 SPI 主模式下配置(神州三号开发板spi.c解析上)

阅读更多
#include "spi.h"

#include <STM32F10X_SPI.h>
#include <STM32F10X_GPIO.h>
#include <STM32F10X_RCC.h>//包含头文件


 
//串行外设接口SPI的初始化,SPI配置成主模式  
//本例程选用SPI1对W25X16进行读写操作,对SPI1进行初始化
void SPIx_Init(void)
{
    /*定义结构体,下面NSS配置时也要用到GPIO所以这里一起定义*/
SPI_InitTypeDef  SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

/* 使能 SPI1 & GPIOA 时钟 */
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|RCC_APB2Periph_AFIO, ENABLE);

/* Configure SPI1 pins: NSS, SCK, MISO and MOSI */
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

//SPI1 NSS for   W25X16                   
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
         GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_SetBits(GPIOC, GPIO_Pin_4);

    //SPI1 NSS for Ethernet
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
          GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_SetBits(GPIOA, GPIO_Pin_4);  

/* SPI1 configuration */
          SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPI1设置为两线全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                    //设置SPI1为主模式
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                  //SPI发送接收8位帧结构
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //串行时钟在不操作时,时钟为高电平
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                //第二个时钟沿开始采样数据
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSS信号由软件(使用SSI位)管理
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; //定义波特率预分频的值:波特率预分频值为8
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;    //数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial = 7;    //CRC值计算的多项式
SPI_Init(SPI1, &SPI_InitStructure);
/* Enable SPI1  */
SPI_Cmd(SPI1, ENABLE);   //使能SPI1外设
}  
分享到:
评论

相关推荐

    STM32神舟开发板用户手册及源码(完整版)

    2. **硬件资源**:详细列出开发板上的各种外设,如ADC、DAC、GPIO、SPI、I2C、UART、USB、CAN、PWM等,并解释如何访问和配置这些外设。 3. **软件支持**:提供配套的固件库、开发环境、示例代码等信息,帮助开发者...

    STM32 神州开发板原理图

    根据提供的信息,我们可以推断出这是一份关于STM32神州开发板的原理图文档。虽然描述部分没有提供太多有用的信息,但从标题、标签以及部分内容中可以提炼出多个与STM32开发板相关的知识点。 ### STM32简介 STM32...

    stm32神州3号ov7670.rar

    STM32神州3号OV7670项目是基于意法半导体(STMicroelectronics)的STM32微控制器,结合OV7670 CMOS摄像头传感器进行图像处理和显示的一个典型应用实例。这个项目旨在帮助开发者了解如何在嵌入式系统中集成图像采集和...

    STM32神舟3号用户手册

    - **开发板基础信息**:神舟III号是一款基于STM32F103ZET6微控制器的开发板,该MCU具有高性能、低功耗等特点,适用于多种嵌入式应用场景。 - **特色功能**:配备3.2" TFT触摸彩屏,支持多点触控操作,增强了人机交互...

    神舟四号开发板最全资料

    《神舟四号开发板最全资料》是一个包含丰富的STM32F107芯片相关资源的压缩包,其中涵盖了神舟四号开发板的设计原理、编程实例以及学习指南。以下是对这些知识点的详细解析: 1. **STM32F107芯片**:STM32F107是意法...

    ALIENTEK战舰STM32开发板资料

    《ALIENTEK战舰STM32开发板:深入解析原理图与PCB设计》 ALIENTEK战舰STM32开发板是一款专为嵌入式系统开发者设计的高性能开发工具,它基于意法半导体(STMicroelectronics)的STM32系列微控制器。STM32家族是基于...

    STM32F407开发板资料

    在“STM32F407开发板资料”这个压缩包中,我们可以找到一系列关于使用神州STM32F407开发板进行项目开发的重要资源。这个开发板通常配备丰富的外围接口和硬件资源,如GPIO、ADC、DAC、UART、SPI、I2C、CAN、USB、...

    STM32F107开发板原理图(官方+金牛+神舟IV)

    通过研究这份官方文档,开发者可以了解STM32F107的标准配置,例如GPIO、UART、SPI、I2C、ADC、DAC、定时器等的使用方法,以及如何接入外部设备,如LCD、键盘、无线模块等。 金牛开发板用户手册.pdf和金牛开发板原理...

    基于神州III号STM32开发板的MP3播放器源码

    神州III号开发板是专为STM32设计的硬件平台,通常包含了所有必要的外围设备,如模拟数字转换器(ADC)、串行通信接口(SPI/I2C/UART)、电源管理模块、以及音频输出接口等,用于帮助开发者快速进行原型设计和系统...

    STM32神舟1号例程源码

    3. **硬件驱动**:例程会包含STM32的各种外设驱动,如GPIO、串口、ADC、SPI、I2C等,这些驱动使得开发者能够控制开发板上的各种硬件资源。 4. **应用任务**:源码中会包含几个示例任务,展示如何在UCOS-II环境下...

    stm32神州IV号用户手册

    ### STM32神州IV号用户手册关键知识点解析 #### 一、STM32神州IV号简介 - **产品概述**:STM32神州IV号是一款专为初学者设计的嵌入式开发板,旨在帮助用户快速掌握STM32微控制器的应用开发。 - **主要特性**: - *...

    神州III开发板TFT显示屏程序

    含在指定座标显示一个8x16点阵的ascii字符;在指定座标范围显示一副图片;将屏幕填充成指定的颜色等诸多...神舟III号标配的2.8/3.2寸LCD模块还包含了SPI接口的触摸芯片,可以将触摸采样到的数据在LCD屏上进行进行显示。

    STM32的315M无线模块扫描(STM32神舟IV号-库函数版)程序,亲测能用

    3. **初始化设置**:在程序启动时,需要对STM32进行初始化,包括时钟配置、GPIO配置(设置为输入/输出模式)、中断设置等。对于315M无线模块,还需要设置波特率、数据格式等通信参数。 4. **无线模块扫描**:扫描...

    神舟III号stm32集合版

    【神舟III号stm32集合版】是一个针对STM32微控制器的综合资源包,主要包含神舟III号开发板相关的源代码和库文件。这个集合版为开发者提供了在不同IDE(集成开发环境)下工作的可能性,如Keil和IAR。下面将详细介绍这...

    stm32+神舟III号+3.2寸+SD+fats+bmp+bin

    在这个项目中,“神舟III号”的STM32开发板展示了如何成功地在3.2寸TFT液晶显示屏上实现SD卡文件系统,能够读取并显示BMP格式的图像文件(.bmp)。这是一个涉及硬件接口、操作系统、文件系统以及图像处理等多个领域...

    MPU6050( STM32(神舟IV) V107 以测试

    2. 在STM32上集成和测试了MPU6050的库函数,这些函数可能包括初始化、数据读取、DMP配置和数据解析等。 3. 使用DMP功能进行姿态解算,获取角度数据,如俯仰角、滚转角和偏航角。 4. 可能还进行了滤波处理,例如使用...

    TFT-LCD.rar_stm32 tft_stm32-

    在这个项目中,我们关注的是如何在STM32(特别是STM32神州4号开发板)上实现TFT-LCD(薄膜晶体管液晶显示器)的驱动与显示功能。对于初学者来说,这是学习嵌入式系统和图形界面设计的一个重要环节。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics