init
This commit is contained in:
@@ -1,81 +1,164 @@
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// <20><>ǰ<EFBFBD>汾: V1.0
|
||||
// <20><>ʷ<EFBFBD>汾:
|
||||
// - V1.0: (2018-08-04)LED IO <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
|
||||
// ˵ <20><>:
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// ͷ<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
#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>
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPIģ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
//SPI<EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>SPI5<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
void SPI5_Init(void)
|
||||
SPI_HandleTypeDef SPI_Handler; // SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
|
||||
//-----------------------------------------------------------------
|
||||
// void SPI_Init(void)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: <20><>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
void SPI_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λ֡<EFBFBD>ṹ
|
||||
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>
|
||||
SPI_Handler.Instance=SPIx; // SP4
|
||||
SPI_Handler.Init.Mode=SPI_MODE_MASTER; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ģʽ
|
||||
SPI_Handler.Init.Direction=SPI_DIRECTION_2LINES; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ:SPI<50><49><EFBFBD><EFBFBD>Ϊ˫<CEAA><CBAB>ģʽ
|
||||
SPI_Handler.Init.DataSize=SPI_DATASIZE_8BIT; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С:SPI<50><49><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>16λ֡<EFBFBD>ṹ
|
||||
SPI_Handler.Init.CLKPolarity=SPI_POLARITY_HIGH; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ʱ<EFBFBD>ӵĿ<EFBFBD><EFBFBD><EFBFBD>״̬Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
|
||||
SPI_Handler.Init.CLKPhase=SPI_PHASE_2EDGE; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>ʱ<EFBFBD>ӵĵڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI_Handler.Init.NSS=SPI_NSS_SOFT; // NSS<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>NSS<EFBFBD>ܽţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>SSIλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>ڲ<EFBFBD>NSS<53>ź<EFBFBD><C5BA><EFBFBD>SSIλ<49><CEBB><EFBFBD><EFBFBD>
|
||||
SPI_Handler.Init.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4;//<2F><><EFBFBD>岨<EFBFBD><E5B2A8><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƶ<EFBFBD><C6B5>ֵ:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>ƵֵΪ2,<2C><><EFBFBD><EFBFBD>Ϊ45Mʱ<4D><CAB1>,<2C><><EFBFBD><EFBFBD>ģʽ
|
||||
SPI_Handler.Init.FirstBit=SPI_FIRSTBIT_MSB; // ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSBλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>LSBλ<EFBFBD><EFBFBD>ʼ:<3A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>MSBλ<42><CEBB>ʼ
|
||||
SPI_Handler.Init.TIMode=SPI_TIMODE_DISABLE; // <EFBFBD>ر<EFBFBD>TIģʽ
|
||||
SPI_Handler.Init.CRCCalculation=SPI_CRCCALCULATION_DISABLE;// <EFBFBD>ر<EFBFBD>Ӳ<EFBFBD><EFBFBD>CRCУ<EFBFBD><EFBFBD>
|
||||
SPI_Handler.Init.CRCPolynomial=7; // CRCֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>ʽ
|
||||
|
||||
if (HAL_SPI_Init(&SPI_Handler) != HAL_OK) //<2F><>ʼ<EFBFBD><CABC>
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
__HAL_SPI_ENABLE(&SPI_Handler); // ʹ<><CAB9>SPI4
|
||||
|
||||
}
|
||||
|
||||
//SPI5<EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻHAL_SPI_Init()<29><><EFBFBD><EFBFBD>
|
||||
//hspi:SPI<50><49><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
// void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SPI<50>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: SPI_HandleTypeDef *hspi<70><69>SPI<50><49><EFBFBD><EFBFBD>
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ᱻHAL_SPI_Init()<29><><EFBFBD><EFBFBD>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_Initure;
|
||||
|
||||
__HAL_RCC_GPIOF_CLK_ENABLE(); //ʹ<><CAB9>GPIOFʱ<EFBFBD><EFBFBD>
|
||||
__HAL_RCC_SPI5_CLK_ENABLE(); //ʹ<><CAB9>SPI5ʱ<EFBFBD><EFBFBD>
|
||||
|
||||
//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);
|
||||
GPIO_InitTypeDef GPIO_Initure;
|
||||
|
||||
SPI_MISO_GPIO_CLK_ENABLE(); // ʹ<EFBFBD><EFBFBD>SPI_MISO<EFBFBD><EFBFBD>GPIOʱ<EFBFBD><EFBFBD>
|
||||
SPI_MOSI_GPIO_CLK_ENABLE(); // ʹ<EFBFBD><EFBFBD>SPI_MOSI<EFBFBD><EFBFBD>GPIOʱ<EFBFBD><EFBFBD>
|
||||
SPI_CLK_GPIO_CLK_ENABLE(); // ʹ<><CAB9>SPI_CLK<4C><4B>GPIOʱ<4F><CAB1>
|
||||
SPI_CS_GPIO_CLK_ENABLE(); // ʹ<><CAB9>SPI_CS<43><53>GPIOʱ<4F><CAB1>
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE(); // ʹ<><CAB9>PD11
|
||||
|
||||
SPI_CLK_ENABLE(); // ʹ<><CAB9>SPI4ʱ<EFBFBD><EFBFBD>
|
||||
|
||||
GPIO_Initure.Pin = SPI_CS_PIN; //PE4 -> SPI4_CS
|
||||
GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull = GPIO_NOPULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
HAL_GPIO_Init(SPI_CS_GPIO_PORT, &GPIO_Initure);
|
||||
|
||||
GPIO_Initure.Pin = GPIO_PIN_11; //PD11 -> SPIʹ<49><CAB9><EFBFBD>źţ<C5BA><C5A3><EFBFBD>fpga<67>˵<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull = GPIO_PULLUP; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH; //<2F><><EFBFBD><EFBFBD>ģʽ
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_Initure);
|
||||
|
||||
GPIO_Initure.Pin=SPI_MISO_PIN; // PE5 -> SPI4_MISO
|
||||
GPIO_Initure.Mode=GPIO_MODE_AF_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull=GPIO_PULLUP; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Speed=GPIO_SPEED_HIGH; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Alternate=SPI_MISO_AF; // <20><><EFBFBD><EFBFBD>ΪSPI4
|
||||
HAL_GPIO_Init(SPI_MISO_GPIO_PORT,&GPIO_Initure);
|
||||
|
||||
GPIO_Initure.Pin=SPI_MOSI_PIN; // PE6 -> SPI4_MOSI
|
||||
GPIO_Initure.Mode=GPIO_MODE_AF_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull=GPIO_PULLUP; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Speed=GPIO_SPEED_HIGH; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Alternate=SPI_MOSI_AF; // <20><><EFBFBD><EFBFBD>ΪSPI4
|
||||
HAL_GPIO_Init(SPI_MOSI_GPIO_PORT,&GPIO_Initure);
|
||||
|
||||
GPIO_Initure.Pin=SPI_CLK_PIN; // PE2 -> SPI4_SCK
|
||||
GPIO_Initure.Mode=GPIO_MODE_AF_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Pull=GPIO_PULLUP; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Speed=GPIO_SPEED_HIGH; // <20><><EFBFBD><EFBFBD>
|
||||
GPIO_Initure.Alternate=SPI_CLK_AF; // <20><><EFBFBD><EFBFBD>ΪSPI4
|
||||
HAL_GPIO_Init(SPI_CLK_GPIO_PORT,&GPIO_Initure);
|
||||
|
||||
//<2F><>ʼ<EFBFBD>ߵ<EFBFBD>ƽ
|
||||
HAL_GPIO_WritePin(SPI_CS_GPIO_PORT, SPI_CS_PIN, GPIO_PIN_SET);
|
||||
|
||||
}
|
||||
|
||||
//SPI<EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>
|
||||
//SPI<EFBFBD>ٶ<EFBFBD>=fAPB1/<2F><>Ƶϵ<C6B5><CFB5>
|
||||
//@ref SPI_BaudRate_Prescaler:SPI_BAUDRATEPRESCALER_2~SPI_BAUDRATEPRESCALER_2 256
|
||||
//fAPB1ʱ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ϊ45Mhz<EFBFBD><EFBFBD>
|
||||
void SPI5_SetSpeed(u8 SPI_BaudRatePrescaler)
|
||||
//-----------------------------------------------------------------
|
||||
// void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SPI<50>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: u8 SPI_BaudRatePrescaler<65><72>SPI_BAUDRATEPRESCALER_2~SPI_BAUDRATEPRESCALER_2 256
|
||||
// <20><> <20><> ֵ: <20><>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SPI<50>ٶ<EFBFBD>=fAPB1/<2F><>Ƶϵ<C6B5><CFB5><EFBFBD><EFBFBD>fAPB1ʱ<31><CAB1>һ<EFBFBD><D2BB>Ϊ45Mhz
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
void SPI1_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
|
||||
|
||||
assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler)); // <EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
||||
__HAL_SPI_DISABLE(&SPI_Handler); // <EFBFBD>ر<EFBFBD>SPI
|
||||
SPI_Handler.Instance->CR1&=0XFFC7; // λ3-5<><35><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI_Handler.Instance->CR1|=SPI_BaudRatePrescaler; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SPI<EFBFBD>ٶ<EFBFBD>
|
||||
__HAL_SPI_ENABLE(&SPI_Handler); // ʹ<EFBFBD><EFBFBD>SPI
|
||||
}
|
||||
|
||||
//SPI5 <20><>дһ<D0B4><D2BB><EFBFBD>ֽ<EFBFBD>
|
||||
//TxData:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:<3A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
u8 SPI5_ReadWriteByte(u8 TxData)
|
||||
//-----------------------------------------------------------------
|
||||
// u8 SPI1_ReadWriteByte(u8 TxData)
|
||||
//-----------------------------------------------------------------
|
||||
//
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SPI1<49><31>дһ<D0B4><D2BB><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>: u8 TxData<74><61> Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
// <20><> <20><> ֵ: u8 Rxdata<74><61><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
||||
// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
uint16_t SPI1_ReadWriteByte(uint16_t 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>
|
||||
u8 rx_data[2];
|
||||
u8 tx_data[2];
|
||||
u16 Rxdata;
|
||||
|
||||
tx_data[0] = (TxData >> 8) & 0xFF;
|
||||
tx_data[1] = TxData & 0xFF;
|
||||
|
||||
HAL_SPI_TransmitReceive(&SPI_Handler,tx_data,rx_data,2, 1000);
|
||||
|
||||
Rxdata = (rx_data[0] << 8) | rx_data[1];
|
||||
|
||||
return Rxdata; // <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// End Of File
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
@@ -1,22 +1,67 @@
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
||||
// <20><> <20><>: <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>
|
||||
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 2018-08-04
|
||||
// <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:
|
||||
// <20><>ǰ<EFBFBD>汾: V1.0
|
||||
// <20><>ʷ<EFBFBD>汾:
|
||||
// - V1.0: (2018-08-04)LED IO <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>: <20><><EFBFBD><EFBFBD>STM32F429+CycloneIV<49><56><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>塢LZE_ST_LINK2
|
||||
// ˵ <20><>:
|
||||
//
|
||||
//-----------------------------------------------------------------
|
||||
#ifndef __SPI_H
|
||||
#define __SPI_H
|
||||
#include "sys.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>ѧϰʹ<EFBFBD>ã<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD>;
|
||||
//ALIENTEK STM32F429<32><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>@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
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stm32f429_winner.h"
|
||||
#include "main.h"
|
||||
//-----------------------------------------------------------------
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
extern SPI_HandleTypeDef SPI_Handler; // SPI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
extern SPI_HandleTypeDef SPI5_Handler; //SPI<50><49><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
// SPI<50><49><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
#define SPIx SPI4
|
||||
#define SPI_CLK_ENABLE() __HAL_RCC_SPI4_CLK_ENABLE()
|
||||
|
||||
#define SPI_CS_PIN GPIO_PIN_4
|
||||
#define SPI_CS_GPIO_PORT GPIOE
|
||||
#define SPI_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
|
||||
#define SPI_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
|
||||
|
||||
#define SPI_MISO_PIN GPIO_PIN_5
|
||||
#define SPI_MISO_GPIO_PORT GPIOE
|
||||
#define SPI_MISO_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
|
||||
#define SPI_MISO_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
|
||||
#define SPI_MISO_AF GPIO_AF5_SPI4
|
||||
|
||||
#define SPI_MOSI_PIN GPIO_PIN_6
|
||||
#define SPI_MOSI_GPIO_PORT GPIOE
|
||||
#define SPI_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
|
||||
#define SPI_MOSI_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
|
||||
#define SPI_MOSI_AF GPIO_AF5_SPI4
|
||||
|
||||
#define SPI_CLK_PIN GPIO_PIN_2
|
||||
#define SPI_CLK_GPIO_PORT GPIOE
|
||||
#define SPI_CLK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
|
||||
#define SPI_CLK_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
|
||||
#define SPI_CLK_AF GPIO_AF5_SPI4
|
||||
|
||||
#define SPI_FPGA_CS_LOW() HAL_GPIO_WritePin(SPI_CS_GPIO_PORT, SPI_CS_PIN, GPIO_PIN_RESET);
|
||||
#define SPI_FPGA_CS_HIGH() HAL_GPIO_WritePin(SPI_CS_GPIO_PORT, SPI_CS_PIN, GPIO_PIN_SET);
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-----------------------------------------------------------------
|
||||
extern void SPI_Init(void);
|
||||
extern void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler);
|
||||
extern u16 SPI1_ReadWriteByte(u16 TxData);
|
||||
|
||||
void SPI5_Init(void);
|
||||
void SPI5_SetSpeed(u8 SPI_BaudRatePrescaler);
|
||||
u8 SPI5_ReadWriteByte(u8 TxData);
|
||||
#endif
|
||||
//-----------------------------------------------------------------
|
||||
// End Of File
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user