store uint32_t data in sd card by using fatf for xmc4500 relax kit

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User17048
Level 2
Level 2
First like received
Hi there,
I am using xmc4500 relax kit with sd card to store the matrix form of touch value of tft. now i can save the data but when i read the data first three values dosnot come.

void SaveTouchMatrix(void)
{
uint8_t count = 0;uint8_t i =0;uint8_t read[1];
uint32_t data = 0; //int data3;
char data1[4]; UINT bw,br; /* Bytes written */
FRESULT res; /* API result code */
uint32_t address = REG_TOUCH_TRANSFORM_A + RAM_G;
MCU_Delay_20ms();
res = f_mount(&fs, "0:", 1);
if (res == FR_OK){
res = f_mkdir("XMC4500");
}
if ((res == FR_OK) || (res == FR_EXIST))
{
res = f_open(&fil, "XMC4500/hello.txt",FA_CREATE_ALWAYS | FA_WRITE | FA_READ);
}
if (res == FR_OK){
res = f_lseek(&fil, 0);}
do
{
data = EVE_MemRead32(address + (count * 4));
data1[0] = (data & 0x000000ff);
data1[1] = ((data & 0x0000ff00) >> 8);
data1[2] = ((data & 0x00ff0000) >> 16);
data1[3] = ((data & 0xff000000) >> 24);
SEGGER_RTT_printf(0,"%sindata =%d\r\n",RTT_CTRL_BG_BRIGHT_RED,data,RTT_CTRL_RESET);
if (res == FR_OK)
{
res = f_write(&fil,&data1, 4, &bw);
if(res == FR_OK)
{
res = f_read(&fil, &read, 4, &br);
}
MCU_Delay_20ms();
SEGGER_RTT_printf(0,"%sdatain =%d\r\n",RTT_CTRL_BG_BRIGHT_RED,read,RTT_CTRL_RESET);

res = f_lseek(&fil, i);
}
i = (count * 32);
DIGITAL_IO_SetOutputHigh(&LED);
SEGGER_RTT_printf(0,"%sdata1 =%d\r\n",RTT_CTRL_BG_BRIGHT_GREEN,data1[0],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sdata1 =%d\r\n",RTT_CTRL_BG_BRIGHT_GREEN,data1[1],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sdata1 =%d\r\n",RTT_CTRL_BG_BRIGHT_GREEN,data1[2],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sdata1 =%d\r\n",RTT_CTRL_BG_BRIGHT_GREEN,data1[3],RTT_CTRL_RESET);
count++;
}while(count < 6);
if (res == FR_OK)
{
f_close(&fil);
}
}

// Read the touch digitizer calibration matrix values from a file and write them to the Eve.
bool LoadTouchMatrix(void)
{
uint8_t count = 0; uint32_t data = 0;uint8_t i =0;
uint8_t data1[4]; UINT br;uint8_t b=0;
uint32_t address = REG_TOUCH_TRANSFORM_A + RAM_G;

res = f_mount(&fs, "0:", 1);
if (res == FR_OK){
res = f_mkdir("XMC4500");
}
if ((res == FR_OK) || (res == FR_EXIST)){
res = f_open(&fil, "XMC4500/hello.txt",FA_READ);
if ((res == FR_OK) || (res == FR_EXIST)){
res = f_lseek(&fil, 0);}}
do
{
for (b=0;b<4;b++){
res = f_read(&fil, &data1, 1,&br);}
res = f_lseek(&fil, i);
i = (count * 32);
SEGGER_RTT_printf(0,"%sDATAOUT8bit =%d\r\n",RTT_CTRL_BG_BRIGHT_BLUE,data1[0],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sDATAOUT8bit =%d\r\n",RTT_CTRL_BG_BRIGHT_BLUE,data1[1],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sDATAOUT8bit =%d\r\n",RTT_CTRL_BG_BRIGHT_BLUE,data1[2],RTT_CTRL_RESET);
SEGGER_RTT_printf(0,"%sDATAOUT8bit =%d\r\n",RTT_CTRL_BG_BRIGHT_BLUE,data1[3],RTT_CTRL_RESET);
data = data1[0] | (data1[1] << 8 )| (data1[2] << 16) | (data1[3] << 24);
EVE_MemWrite32(address + (count * 4),data);
SEGGER_RTT_printf(0,"%sDATAOUT =%d\r\n",RTT_CTRL_BG_BRIGHT_BLUE,data,RTT_CTRL_RESET);
count++;
}while(count < 6);
if (res == FR_OK)
{
f_close(&fil);
}
return true;

}
0 Likes
0 Replies