TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123GH6PM的SD卡读写程序

急求一份TM4C123GH6PM的SD卡读写程序,谢谢。

hy wei:

回复 Maka Luo:

您好,请问我对例程里的显示部分做了如下注释是否有影响,如果没有影响,为何我在串口输入ls命令为何总是返回Command returned error code FR_NOT_READY,是我硬件连接的问题吗?我是按照spi接线接的。麻烦解答一下,谢谢。
int
main(void)
{int nStatus;FRESULT iFResult;
//tRectangle sRect;//// Enable lazy stacking for interrupt handlers.This allows floating-point// instructions to be used within interrupt handlers, but at the expense of// extra stack usage.//ROM_FPULazyStackingEnable();//// Set the system clock to run at 50MHz from the PLL.//ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);//// Enable the peripherals used by this example.//ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);//// Configure SysTick for a 100Hz interrupt.The FatFs driver wants a 10 ms// tick.//ROM_SysTickPeriodSet(ROM_SysCtlClockGet() / 100);ROM_SysTickEnable();ROM_SysTickIntEnable();//// Enable Interrupts//ROM_IntMasterEnable();//// Initialize the UART as a console for text I/O.//ConfigureUART();//// Initialize the display driver.//
//CFAL96x64x16Init();
//
////
//// Initialize the graphics context.
////
//GrContextInit(&g_sContext, &g_sCFAL96x64x16);
//
////
//// Fill the top part of the screen with blue to create the banner.
////
//sRect.i16XMin = 0;
//sRect.i16YMin = 0;
//sRect.i16XMax = GrContextDpyWidthGet(&g_sContext) - 1;
//sRect.i16YMax = 9;
//GrContextForegroundSet(&g_sContext, ClrDarkBlue);
//GrRectFill(&g_sContext, &sRect);
//
////
//// Change foreground for white text.
////
//GrContextForegroundSet(&g_sContext, ClrWhite);
//
////
//// Put the application name in the middle of the banner.
////
//GrContextFontSet(&g_sContext, g_psFontFixed6x8);
//GrStringDrawCentered(&g_sContext, "sd_card", -1,
//GrContextDpyWidthGet(&g_sContext) / 2, 4, 0);
//
////
//// Show some instructions on the display
////
//GrContextFontSet(&g_sContext, g_psFontFixed6x8);
//GrStringDrawCentered(&g_sContext, "Connect a", -1,
//GrContextDpyWidthGet(&g_sContext) / 2, 20, false);
//GrStringDrawCentered(&g_sContext, "terminal", -1,
//GrContextDpyWidthGet(&g_sContext) / 2, 30, false);
//GrStringDrawCentered(&g_sContext, "to UART0.", -1,
//GrContextDpyWidthGet(&g_sContext) / 2, 40, false);
//GrStringDrawCentered(&g_sContext, "115000,N,8,1", -1,
//GrContextDpyWidthGet(&g_sContext) / 2, 50, false);//// Print hello message to user.//UARTprintf("\n\nSD Card Example Program\n");UARTprintf("Type \'help\' for help.\n");

Maka Luo:

回复 hy wei:

屏蔽显示代码没有什么影响。

hy wei:

回复 Maka Luo:

// PA3–CS// PA2–clk// PA5–MOSI// PA4–MISO

您好,请问我这样接线是否有问题?如果没问题是否就是我SD卡硬件电路的问题,麻烦解答,谢谢。

Maka Luo:

回复 hy wei:

// GPIO for SSI pins#define SDC_GPIO_PORT_BASE GPIO_PORTA_BASE#define SDC_GPIO_SYSCTL_PERIPH SYSCTL_PERIPH_GPIOA#define SDC_SSI_CLK GPIO_PIN_2#define SDC_SSI_TX GPIO_PIN_5#define SDC_SSI_RX GPIO_PIN_4#define SDC_SSI_FSS GPIO_PIN_3#define SDC_SSI_PINS (SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK | \ SDC_SSI_FSS)

程序定义是如此,应该跟你定义是一样

hy wei:

回复 Maka Luo:

您好,硬件问题解决了,例程也跑通了。但如果我想改变SSI0为SSI3,除了对一下部分修改外,还需对什么地方修改么?还望解答,谢谢。

sd_card.c://
// Enable the peripherals used by this example.
//
//ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);-----------------------------------------------------------------------------------mmc-dk-tm4c123g.c:/* Peripheral definitions for DK-TM4C123G board */
// SSI port
//#define SDC_SSI_BASE SSI0_BASE
//#define SDC_SSI_SYSCTL_PERIPH SYSCTL_PERIPH_SSI0// GPIO for SSI pins
//#define SDC_GPIO_PORT_BASE GPIO_PORTA_BASE
//#define SDC_GPIO_SYSCTL_PERIPH SYSCTL_PERIPH_GPIOA
//#define SDC_SSI_CLK GPIO_PIN_2
//#define SDC_SSI_TX GPIO_PIN_5
//#define SDC_SSI_RX GPIO_PIN_4
//#define SDC_SSI_FSS GPIO_PIN_3
//#define SDC_SSI_PINS (SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK | \
SDC_SSI_FSS)/* Peripheral definitions for DK-TM4C123G board */
// SSI port
#define SDC_SSI_BASE SSI3_BASE
#define SDC_SSI_SYSCTL_PERIPH SYSCTL_PERIPH_SSI3// GPIO for SSI pins
#define SDC_GPIO_PORT_BASE GPIO_PORTD_BASE
#define SDC_GPIO_SYSCTL_PERIPH SYSCTL_PERIPH_GPIOD
#define SDC_SSI_CLK GPIO_PIN_0
#define SDC_SSI_TX GPIO_PIN_3
#define SDC_SSI_RX GPIO_PIN_2
#define SDC_SSI_FSS GPIO_PIN_1
#define SDC_SSI_PINS (SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK | \
SDC_SSI_FSS)

hy wei:

回复 Maka Luo:

您好,我之前不知道什么原因,修改端口成功了一次,之后又是异常,所以我觉得端口的修改还是有问题,所以还是麻烦您帮我解答一下SSI0改为SSI3代码更改的问题,谢谢。

Maka Luo:

回复 hy wei:

SSI0和SSI3模块是一样,应该是程序中配置哪些还有没有更改过来。先用SSI0调通,然后熟悉我们的代码再修改。

hy wei:

回复 Maka Luo:

您好,SSI0已经调通了,但是PA2-PA4这几个端口我已经用到别的模块了,所以需要改变到其他端口。我做如上修改,将SSI0改到SSI3,并没有成功,所以我怀疑是还有部分需要修改的代码我没有找到,所以麻烦您指导一下,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123GH6PM的SD卡读写程序
分享到: 更多 (0)