急求一份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,并没有成功,所以我怀疑是还有部分需要修改的代码我没有找到,所以麻烦您指导一下,谢谢。