|
发表于 2024-5-8 17:13:20
|
显示全部楼层
本帖最后由 无限火力 于 2024-5-8 17:28 编辑
硬汉哥你好,我现在在做f407+ad7606的spi方式做数据采集,移植了你们代码,现在实现了数据采集部分,采样率在10k左右,需要将数据存储到sd卡里,现在我是将采集到的数据放到一个uint16_t这样一个类型的数组里,大小是4096,我用fwrite函数写入这个数组,在电脑端打开文件是乱码,请问这是怎么回事呢,代码在下面
void AD7606_ReadFifo(void)
{
uint32_t i;
if(g_tAD.FIFO1Full_flag == 1)
{
res = f_open(&fil, "0:/data101.txt", FA_OPEN_ALWAYS | FA_WRITE );
if (res != FR_OK) {
// 文件打开失败
printf("文件打开失败\r\n");
}
f_lseek(&fil, f_size(&fil));
res= f_write(&fil,(char *)g_tAD.usFIFO1Buf , sizeof(g_tAD.usFIFO1Buf), &bww);
printf("FIFO1写入%d字节\r\n",bww);
// for(i = 0; i < CA_SIZE; i++)
// {
// int_sampleVol = ((int32_t)50000)*((float)((short)g_tAD.usFIFO1Buf)/32768); //单位0.1mv
// sprintf(buf,"%0.1f\r\n", (float)int_sampleVol/10+15);
//// int_sampleVol = int_sampleVol/10+15+'0';
// res= f_write(&fil, buf, sizeof(buf), &bww);
// f_lseek(&fil, f_size(&fil));
// printf("FIFO1写入%d字节\r\n",bww);
// if(res != FR_OK)printf("写入数据失败\r\n");
// }
f_close(&fil);
/*************************************/
INTX_DISABLE();//关掉总中断
g_tAD.FIFO1Full_flag = 0;
INTX_ENABLE();//开启总中断
}
if(g_tAD.FIFO2Full_flag == 1)
{
res = f_open(&fil, "0:/data101.txt", FA_OPEN_ALWAYS | FA_WRITE );
if (res != FR_OK) {
// 文件打开失败
printf("文件打开失败\r\n");
}
f_lseek(&fil, f_size(&fil));
res= f_write(&fil,(char *)g_tAD.usFIFO1Buf , sizeof(g_tAD.usFIFO2Buf), &bww);
printf("FIFO2写入%d字节\r\n",bww);
// for(i = 0; i < CA_SIZE; i++)
// {
// int_sampleVol = ((int32_t)50000)*((float)((short)g_tAD.usFIFO2Buf)/32768); //单位0.1mv
// //
//// int_sampleVol = int_sampleVol/10+15+'0';
// sprintf(buf,"%0.1f\r\n", (float)int_sampleVol/10+15);
// res= f_write(&fil, buf, sizeof(buf), &bww);
// f_lseek(&fil, f_size(&fil));
// printf("FIFO2写入%d字节\r\n",bww);
// if(res != FR_OK)printf("写入数据失败\r\n");
// }
f_close(&fil);
/*************************************/
INTX_DISABLE();//关掉总中断
g_tAD.FIFO2Full_flag = 0;
INTX_ENABLE();//开启总中断
}
}
|
|