⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iar-

📁 IAR_example_EasyARM8962.zip
💻
字号:
/****************************************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 + -