资源简介
使用STM32L4xx芯片,LL库配置硬件SPI,包括初始化以及收发函数;
代码片段和文件信息
#include “SPI.h“
/***************************************************************************************
** 函数名称: SPI1_Init
** 功能描述: SPI1初始化
** 参 数: None
** 返 回 值: None
****************************************************************************************/
void SPI1_Init(void)//时钟为16MHz时输出波形有震荡
{
LL_SPI_InitTypeDef SPI_InitStruct;
LL_GPIO_InitTypeDef GPIO_InitStruct;
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI1);//使能SPI1时钟
/*SPI引脚配置
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
PA15 (JTDI) ------> SPI1_NSS
*/
GPIO_InitStruct.Pin = LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|LL_GPIO_PIN_15;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;//复用模式
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;//速率高
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;//推挽输出
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;//无上下拉
GPIO_InitStruct.Alternate = LL_GPIO_AF_5;//复用5
LL_GPIO_Init(GPIOA &GPIO_InitStruct);//SPI引脚初始化
//SPI1参数配置
SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;//全双工模式
SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;//主机模式
SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;//传输8位数据
SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH;//空闲时时钟为高
SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE;//第一个时钟转换是数据捕获的第一个边缘
SPI_InitStruct.NSS = LL_SPI_NSS_HARD_OUTPUT;//NSS输出模式
SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2;//波特率控制等于fpclk/2
SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;//数据首先发送\接收MSB位
SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;//CRC计算禁用
SPI_InitStruct.CRCPoly = 7;//用于CRC计算的多项式
LL_SPI_Init(SPI1 &SPI_InitStruct);//SPI1初始化
LL_SPI_SetStandard(SPI1 LL_SPI_PROTOCOL_MOTOROLA);//设置MOTOROLA模式
LL_SPI_EnableNSSPulseMgt(SPI1);//启用NSS脉冲管理
LL_SPI_Enable(SPI1);//使能SPI1
}
/***************************************************************************************
** 函数名称: SPI1_SendReadByte
** 功能描述: SPI1传输一个字节并读一个字节
** 参 数: Data 要发送的字节
** 返 回 值: ResData 读取的字节
****************************************************************************************/
uint8_t SPI1_SendReadByte(uint8_t Data)
{
uint8_t ResData=0;
while((SPI1->SR & LL_SPI_SR_TXE) == 0);//等待传输缓存区为空
SPI1->DR = Data;//待发数据写入
while((SPI1->SR & LL_SPI_SR_RXNE) == 0);//等待接收缓存区为空
ResData = SPI1->DR;//读取接收数据
return ResData;
}
/***************************************************************************************
** 函数名称: SPI1_SendByte
** 功能描述: SPI1传输一个字节
** 参 数: Data 要发送的字节
** 返 回 值: None
****************************************************************************************/
void SPI1_SendByte(uint8_t Data)
{
while((SPI1->SR & LL_SPI_SR_TXE) == 0);//等待传输缓存区为空
SPI1->DR = Data;//待发数据写入
}
/***************************************************************************************
** 函数名称: SPI1_ReadByte
** 功能描述: S
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3620 2019-10-18 10:33 STM32L4_硬件SPI配置_LL库版\SPI.c
文件 280 2019-10-18 11:04 STM32L4_硬件SPI配置_LL库版\SPI.h
目录 0 2019-10-19 08:22 STM32L4_硬件SPI配置_LL库版
----------- --------- ---------- ----- ----
3900 3
- 上一篇:基于74HC595串行数码管动态显示.rar
- 下一篇:今日头条注册登录流程图
相关资源
- STM32分别以串口硬件SPI模拟并口驱动
- QT生成DLL库文件的方法和使用方法详解
- STM32F103驱动7针OLED128x64实现方式:硬件
- stm32f103c8t6 OLED 硬件SPI
- BMP280 硬件SPI驱动程序 STM32F103C8T6
- 大漠插件重新封装为DLL库
- tesseract_lib_vs2010编译好的dll库和lib文件
- TFT彩屏硬件SPI
- stm32驱动AD7992/AD7993用硬件SPI和模拟方
- FM1702NL/FM1722硬件SPI读写程序
- 语音识别模块LD3320驱动程序stm32
- cuda 常用dll库
- log4cplus-1.2.1 winows的dll、lib库
- STM32F1 HAL库手册原版
- 遥感6sv2.1模型可执行程序,以及运行
- stm32硬件spi主从模式
- LL库使用手册 stm32L4xx 手册
- STM32F407,18电赛A题,非接触式电流检
- Keil.STM32L4xx_DFP.2.5.0.pack
- STM32(硬件SPI)+RC522读写卡源程序
- STM32F4HAL和LL库函数手册
- Keil.STM32L4xx_DFP.2.2.0.zip
- STM32LL库使用指南工程模板
- win10 dll库libcurl 64位
- 基于ti 的单片机msp430g2553的硬件spi控制
- STM32F10x_SPI硬件接口读写Flash25Q16.zip
- hal库硬件spi&模拟spi通信rn8209
- HAL库版本,硬件SPI驱动74HC595
- STM32L4xx_通过UART写FLASH_IAP更新程序_L
- VC通过FindPic.dll库 屏幕找图源代码
评论
共有 条评论