• 大小: 926B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: STM32  ARM  SPI  IO  

资源简介

使用GPIO端口模拟SPi协议,可以根据端口设置,自行修改宏定义,修改引脚时钟

资源截图

代码片段和文件信息

#include “bsp_spi.h“
#include “delay.h“


void SPI_Gpio_Init(void)
{
GPIO_InitTypeDef  GPIO_InitStruct;
RCC_AHBPeriphClockCmd(SPI_RCC  ENABLE);

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType =  GPIO_OType_PP;
GPIO_InitStruct.GPIO_Pin = SPI_CS_PIN | SPI_CLK_PIN | SPI_MOSI_PIN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(SPI_GPIOx &GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin = SPI_MISO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(SPI_GPIOx &GPIO_InitStruct);

GPIO_SetBits(SPI_GPIOxSPI_CS_PIN);
GPIO_SetBits(SPI_GPIOxSPI_MISO_PIN);
GPIO_ResetBits(SPI_GPIOx  SPI_CLK_PIN);
}

void SPI_Send_Data(uint8_t data)
{
uint8_t i=0;

for(i=0 ; i<8 ; i++)
{
if(data & 0x80)
{
GPIO_SetBits(SPI_GPIOx  SPI_MOSI_PIN);
}
else
{
GPIO_ResetBits(SPI_GPIOx  SPI_MOSI_PIN);
}
data <<=1;
GPIO_SetBits(SPI_GPIOx  SPI_CLK_PIN);
delay_us(1);
GPIO_ResetBits(SPI_GPIOx  SPI_CLK_PIN);
delay_us(1);
}
}

uint8_t SPI_Get_Data(void)
{
uint8_t i=0;
uint8_t redata=0;
for(i=0 ; i<8 ; i++)
{
GPIO_SetBits(SPI_GPIOx  SPI_CLK_PIN);
if(GPIO_ReadInputDataBit(SPI_GPIOx  SPI_MISO_PIN))
{
redata |= (0x01<<(7-i));
}
delay_us(1);
GPIO_ResetBits(SPI_GPIOx  SPI_CLK_PIN);
delay_us(1);
}
return redata;
}

void SPI_CS_Status(uint8_t status)
{
if(status ==1)
GPIO_SetBits(SPI_GPIOx  SPI_CS_PIN);
else if(status ==0)
GPIO_ResetBits(SPI_GPIOx  SPI_CS_PIN);
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        537  2019-05-22 19:44  bsp_spi.h

     文件       1645  2019-05-22 19:44  bsp_spi.c

----------- ---------  ---------- -----  ----

                 2182                    2


评论

共有 条评论