📄 iar-
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name: sd_SPI.c
** Last modified Date: 2007.10.20
** Last Version: v1.0
** Description: 对SD卡的操作测试
**
**--------------------------------------------------------------------------------------------------------
** Created By: zhou hai xin
** Created date: 2007.10.20
** Version: v1.0
** Descriptions: 初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by: kang qinhua
** Modified date: 2007.11.13
** Version: v1.1
** Description: 对sdhal.c中的SPI的频率设定做了修改
** 原来采用寄存器修改分频值(主频修改后可能导致SPI不可用)
** 现在采用库函数配置SPI速率(可适用于不同的系统时钟下)
** 在sd_SPI.h中修改SD卡的工作波特率
**
**--------------------------------------------------------------------------------------------------------
** Modified by: Kang qinhua
** Modified date: 2008.01.13
** Version: v1.2
** Description:
**
*********************************************************************************************************/
#include "SDMMC\myhfile.h"
static unsigned char sdbuf[512] = {0};
/*********************************************************************************************************
** Function: SSIInit
** Descriptions: 初始化SSI
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void SSIInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI); /* 使能SSI */
SSIConfig(SSI_BASE,SSI_FRF_MOTO_MODE_0, /* 配置SSI */
SSI_MODE_MASTER, BitRate, DataWidth);
SSIEnable(SSI_BASE); /* 使能SSI */
GPIODirModeSet(GPIO_PORTA_BASE, /* 配置GPIO口 */
(GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5),
GPIO_DIR_MODE_HW);
}
/*********************************************************************************************************
** Function name: GPIO_SET
** Descriptions: 对各个GPIO口进行配置驱动强度和结构类型。
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void GPIO_SET (void)
{
GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_SCK, /* 设置SPI_SCK的驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_MISO, /* 设置SPI_MISO的驱动强度和类型*/
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_MOSI, /* 设置SPI_MOSI的驱动强度和类型*/
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTA_BASE, SPI_CS, /* 设置SPI_CS的驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTG_BASE, SD_POWER, /* 设置SD_POWER的驱动强度和类型*/
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTG_BASE, SD_INSERT, /* 设置SD_INSERT驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
GPIOPadConfigSet(GPIO_PORTE_BASE, SD_WP, /* 设置SD_WP的驱动强度和类型 */
GPIO_STRENGTH_4MA, /* 4mA的输出驱动强度 */
GPIO_PIN_TYPE_STD); /* 设置为推挽管脚 */
}
/*********************************************************************************************************
** Function name: main
** Descriptions: 对SD卡进行初始化、读、写和擦除等操作
** input parameters: 无
** output parameters: 无
** Returned value: 0:失败
*********************************************************************************************************/
int main(void)
{
int ret = 0;
int i = 0;
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC |
SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ); /* 系统时钟6M */
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); /* 使能GPIOE */
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); /* 使能GPIOG */
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); /* 使能GPIOA */
GPIO_SET(); /* 设置GPIO口 */
SSIInit(); /* 初始化SSI */
for (i = 0; i < 511; i++) { /* 对sdbuf数组进行赋初值 */
sdbuf[i] = i;
}
ret = SD_Initialize(); /* 初始化SD卡 */
ret = SD_WriteBlock(0, sdbuf); /* 写SD卡 */
for (i = 0; i < 511; i++) { /* 清零sdbuf数组 */
sdbuf[i] = 0;
}
ret = SD_ReadBlock(0, sdbuf); /* 读SD卡 */
ret = SD_EraseBlock(0, 128); /* 擦除SD卡 */
ret = SD_ReadBlock(0, sdbuf); /* 读SD卡 */
if (ret != 0) { /* 判断返回值 */
while(1) {
;
}
}
while(1) {
;
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -