增加协议 发送队列 50ms发送数据
“ ”
This commit is contained in:
150
BSP/Src/spi1.c
Normal file
150
BSP/Src/spi1.c
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* FILE : spi1.c
|
||||
* DESCRIPTION : This file is iCore3 driver demo.
|
||||
* Author : XiaomaGee@Gmail.com
|
||||
* Copyright :
|
||||
*
|
||||
* History
|
||||
* -------------------
|
||||
* Rev : 0.00
|
||||
* Date : 12/20/2015
|
||||
*
|
||||
* create.
|
||||
* -------------------
|
||||
*/
|
||||
//-----------------Include files-------------------------//
|
||||
|
||||
#include "spi1.h"
|
||||
#include "w5500.h"
|
||||
|
||||
//---------------- Function Prototype ------------------//
|
||||
|
||||
static int initialize_spi(void);
|
||||
static int write(int number, uint8_t * buf);
|
||||
static uint8_t send_data(uint8_t data);
|
||||
|
||||
//-----------------Variable-----------------------------//
|
||||
SPI1_T spi1 = {
|
||||
.initialize = initialize_spi,
|
||||
.write = write,
|
||||
.send_data = send_data
|
||||
};
|
||||
//-----------------Function-----------------------------//
|
||||
|
||||
/*
|
||||
* Name : initialize_spi1
|
||||
* Description : ---
|
||||
* Author : XiaomaGee.
|
||||
*
|
||||
* History
|
||||
* -------------------
|
||||
* Rev : 0.00
|
||||
* Date : 12/20/2015
|
||||
*
|
||||
* create.
|
||||
* -------------------
|
||||
*/
|
||||
|
||||
static int initialize_spi(void) /*spi1*/
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_uInitStructure;
|
||||
SPI_InitTypeDef SPI_InitStructure;
|
||||
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_SPI1);
|
||||
|
||||
GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;;
|
||||
GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
|
||||
GPIO_Init(GPIOA,&GPIO_uInitStructure);
|
||||
SPI1_CS_ON;
|
||||
|
||||
GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
|
||||
GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;;
|
||||
GPIO_Init(GPIOA,&GPIO_uInitStructure);
|
||||
|
||||
GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_5;
|
||||
GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;;
|
||||
GPIO_Init(GPIOA,&GPIO_uInitStructure);
|
||||
|
||||
SPI_Cmd(SPI1,DISABLE);
|
||||
|
||||
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex ;
|
||||
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
||||
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
|
||||
SPI_InitStructure.SPI_CPOL = 0x00;
|
||||
SPI_InitStructure.SPI_CPHA = 0x00;
|
||||
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
||||
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
|
||||
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
||||
SPI_InitStructure.SPI_CRCPolynomial = 7;
|
||||
SPI_Init(SPI1,&SPI_InitStructure);
|
||||
|
||||
SPI_Cmd(SPI1, ENABLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Name : initialize_spi1
|
||||
* Description : ---
|
||||
* Author : XiaomaGee.
|
||||
*
|
||||
* History
|
||||
* -------------------
|
||||
* Rev : 0.00
|
||||
* Date : 12/20/2015
|
||||
*
|
||||
* create.
|
||||
* -------------------
|
||||
*/
|
||||
|
||||
static uint8_t send_data(uint8_t data)
|
||||
{
|
||||
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == 0);
|
||||
|
||||
SPI_I2S_SendData(SPI1,data);
|
||||
|
||||
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE) == 0);
|
||||
return SPI_I2S_ReceiveData(SPI1);
|
||||
}
|
||||
/*
|
||||
* Name : write
|
||||
* Description : ---
|
||||
* Author : XiaomaGee.
|
||||
*
|
||||
* History
|
||||
* -------------------
|
||||
* Rev : 0.00
|
||||
* Date : 12/20/2015
|
||||
*
|
||||
* create.
|
||||
* -------------------
|
||||
*/
|
||||
|
||||
static int write(int number, uint8_t * buf)
|
||||
{
|
||||
int i;
|
||||
SPI1_CS_OFF;
|
||||
for (i = 0; i < number; i++){
|
||||
buf[i] = send_data(buf[i]);
|
||||
}
|
||||
SPI1_CS_ON;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user