The Firest Version
This commit is contained in:
81
HARDWARE/SPI/spi.c
Normal file
81
HARDWARE/SPI/spi.c
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "spi.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
||||
//ALIENTEK STM32F429<32><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/16/16
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
||||
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
||||
//All rights reserved
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
SPI_HandleTypeDef SPI5_Handler; //SPI<50><49><EFBFBD><EFBFBD>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPIģ<49><C4A3><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
//SPI<50>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>SPI5<49>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
void SPI5_Init(void)
|
||||
{
|
||||
SPI5_Handler.Instance=SPI5; //SP5
|
||||
SPI5_Handler.Init.Mode=SPI_MODE_MASTER; //<2F><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ģʽ
|
||||
SPI5_Handler.Init.Direction=SPI_DIRECTION_2LINES; //<2F><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ:SPI<50><49><EFBFBD><EFBFBD>Ϊ˫<CEAA><CBAB>ģʽ
|
||||
SPI5_Handler.Init.DataSize=SPI_DATASIZE_8BIT; //<2F><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С:SPI<50><49><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>8λ֡<CEBB>ṹ
|
||||
SPI5_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH; //<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʱ<EFBFBD>ӵĿ<D3B5><C4BF><EFBFBD>״̬Ϊ<CCAC>ߵ<EFBFBD>ƽ
|
||||
SPI5_Handler.Init.CLKPhase=SPI_PHASE_2EDGE; //<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʱ<EFBFBD>ӵĵڶ<C4B5><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI5_Handler.Init.NSS=SPI_NSS_SOFT; //NSS<53>ź<EFBFBD><C5BA><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>NSS<53>ܽţ<DCBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>SSIλ<49><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>ڲ<EFBFBD>NSS<53>ź<EFBFBD><C5BA><EFBFBD>SSIλ<49><CEBB><EFBFBD><EFBFBD>
|
||||
SPI5_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256;//<2F><><EFBFBD>岨<EFBFBD><E5B2A8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƶ<EFBFBD><C6B5>ֵ:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>ƵֵΪ256
|
||||
SPI5_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>MSBλ<42><CEBB><EFBFBD><EFBFBD>LSBλ<42><CEBB>ʼ:<3A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>MSBλ<42><CEBB>ʼ
|
||||
SPI5_Handler.Init.TIMode=SPI_TIMODE_DISABLE; //<2F>ر<EFBFBD>TIģʽ
|
||||
SPI5_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;//<2F>ر<EFBFBD>Ӳ<EFBFBD><D3B2>CRCУ<43><D0A3>
|
||||
SPI5_Handler.Init.CRCPolynomial=7; //CRCֵ<43><D6B5><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>ʽ
|
||||
HAL_SPI_Init(&SPI5_Handler);
|
||||
|
||||
__HAL_SPI_ENABLE(&SPI5_Handler); //ʹ<><CAB9>SPI5
|
||||
SPI5_ReadWriteByte(0Xff); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//SPI5<49>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ᱻHAL_SPI_Init()<29><><EFBFBD><EFBFBD>
|
||||
//hspi:SPI<50><49><EFBFBD><EFBFBD>
|
||||
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_Initure;
|
||||
|
||||
__HAL_RCC_GPIOF_CLK_ENABLE(); //ʹ<><CAB9>GPIOFʱ<46><CAB1>
|
||||
__HAL_RCC_SPI5_CLK_ENABLE(); //ʹ<><CAB9>SPI5ʱ<35><CAB1>
|
||||
|
||||
//PF7,8,9
|
||||
GPIO_Initure.Pin=GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
|
||||
GPIO_Initure.Mode=GPIO_MODE_AF_PP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull=GPIO_PULLUP; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Speed=GPIO_SPEED_FAST; //<2F><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Alternate=GPIO_AF5_SPI5; //<2F><><EFBFBD><EFBFBD>ΪSPI5
|
||||
HAL_GPIO_Init(GPIOF,&GPIO_Initure);
|
||||
}
|
||||
|
||||
//SPI<50>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
//SPI<50>ٶ<EFBFBD>=fAPB1/<2F><>Ƶϵ<C6B5><CFB5>
|
||||
//@ref SPI_BaudRate_Prescaler:SPI_BAUDRATEPRESCALER_2~SPI_BAUDRATEPRESCALER_2 256
|
||||
//fAPB1ʱ<31><CAB1>һ<EFBFBD><D2BB>Ϊ45Mhz<68><7A>
|
||||
void SPI5_SetSpeed(u8 SPI_BaudRatePrescaler)
|
||||
{
|
||||
assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//<2F>ж<EFBFBD><D0B6><EFBFBD>Ч<EFBFBD><D0A7>
|
||||
__HAL_SPI_DISABLE(&SPI5_Handler); //<2F>ر<EFBFBD>SPI
|
||||
SPI5_Handler.Instance->CR1&=0XFFC7; //λ3-5<><35><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI5_Handler.Instance->CR1|=SPI_BaudRatePrescaler;//<2F><><EFBFBD><EFBFBD>SPI<50>ٶ<EFBFBD>
|
||||
__HAL_SPI_ENABLE(&SPI5_Handler); //ʹ<><CAB9>SPI
|
||||
|
||||
}
|
||||
|
||||
//SPI5 <20><>дһ<D0B4><D2BB><EFBFBD>ֽ<EFBFBD>
|
||||
//TxData:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:<3A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
u8 SPI5_ReadWriteByte(u8 TxData)
|
||||
{
|
||||
u8 Rxdata;
|
||||
HAL_SPI_TransmitReceive(&SPI5_Handler,&TxData,&Rxdata,1, 1000);
|
||||
return Rxdata; //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
22
HARDWARE/SPI/spi.h
Normal file
22
HARDWARE/SPI/spi.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef __SPI_H
|
||||
#define __SPI_H
|
||||
#include "sys.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
||||
//ALIENTEK STM32F429<32><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/16/16
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
||||
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
||||
//All rights reserved
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern SPI_HandleTypeDef SPI5_Handler; //SPI<50><49><EFBFBD><EFBFBD>
|
||||
|
||||
void SPI5_Init(void);
|
||||
void SPI5_SetSpeed(u8 SPI_BaudRatePrescaler);
|
||||
u8 SPI5_ReadWriteByte(u8 TxData);
|
||||
#endif
|
||||
Reference in New Issue
Block a user