#include "mmc_sd.h"
#include "delay.h"
uint8_t SD_Type = 0; //SD卡的类型
/// 移植修改区函数 //
/**
* SD卡SPI接口读写一个字节
* @param TxData 待写入的字节
* @return 来自SPI的接收
*/
uint8_t SD_SPI_ReadWriteByte(uint8_t TxData)
{
int i = 0;
uint8_t RxData = 0;
HAL_GPIO_WritePin(SPI_CLK_GPIO_Port, SPI_CLK_Pin, GPIO_PIN_RESET);
for(i = 7; i >= 0; i--)
{
HAL_GPIO_WritePin(SPI_CLK_GPIO_Port, SPI_CLK_Pin, GPIO_PIN_RESET);
if(TxData & (1 << i))
{
HAL_GPIO_WritePin(SPI_MOSI_GPIO_Port, SPI_MOSI_Pin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(SPI_MOSI_GPIO_Port, SPI_MOSI_Pin, GPIO_PIN_RESET);
}
delay_us(1);
HAL_GPIO_WritePin(SPI_CLK_GPIO_Port, SPI_CLK_Pin, GPIO_PIN_SET);
RxData <<= 1;
RxData |= HAL_GPIO_ReadPin(SPI_MISO_GPIO_Port, SPI_MISO_Pin);
delay_us(1);
}
HAL_GPIO_WritePin(SPI_CLK_GPIO_Port, SPI_CLK_Pin, GPIO_PIN_RESET);
return RxData;
}
|