用GPIO模拟实现SPI通信,已在STM32平台验证通过,适用于各种MCU平台,源代码如下:
spi.h
#ifndef __SPI_H
#define __SPI_H
#include "stm32l0xx.h"
#ifdef SPI_GLOBALS
#define SPI_EXT
#else
#define SPI_EXT extern
#endif
#define M_CS_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET)
#define M_CS_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET)
#define S_CS_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)
#define S_CS_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)
#define SCLK_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET)
#define SCLK_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET)
#define MOSI_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET)
#define MOSI_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET)
#define MISO HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7)
SPI_EXT uint32_t spi_