硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1317|回复: 5
收起左侧

[FatFs] FATFS U盘保存ADC采集的数据异常

[复制链接]

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
发表于 2024-9-11 12:12:01 | 显示全部楼层 |阅读模式

下面是我的源码,我是用ADC+DMA采集的数据保存到缓冲区(g_adc3_dma_data1【1024】),然后我单独测试了一下ADC采集然后打印是没问题的,但是我插上U盘就有问题了,求大佬帮忙看一下 微信截图_20240911120731.png








extern ApplicationTypeDef Appli_state;

void SystemClock_Config(void);
static void MPU_Config(void);
void MX_USB_HOST_Process(void);

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{       
        if(hadc->Instance==ADC3)
        {       
                g_adc3_dma_complete_flag = 2;//采集完成标志       
                HAL_ADC_Stop_DMA(&hadc3);
        }
}
int main(void)
{
        unsigned int counter;
  MPU_Config();
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_UART4_Init();
  MX_FATFS_Init();
  MX_ADC3_Init();
        MX_USB_HOST_Init();
        HAL_ADC_Start_DMA(&hadc3,(uint32_t *)g_adc3_dma_data1,ADC_DATA_LENGTH);
USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS);
USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS);
USBH_Start(&hUsbHostFS);        
  HAL_PWREx_EnableUSBVoltageDetector();
  while (1)
  {
//    /* USER CODE END WHILE */
    MX_USB_HOST_Process(); //可以识别U盘
                if (Appli_state == APPLICATION_READY)
                        break;
        }               
                if(g_adc3_dma_complete_flag == 2)
                                        {       
                        FRESULT res = f_mount(&USBHFatFS,"0:",1);// 挂载USB
                        if(res != FR_OK)
                                                {                printf("MOUNT Error!");}
                        FRESULT res1 = f_open(&USBHFile,"0:/TEST.txt",FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS);
                                        if(res1 != FR_OK)
                                                {                printf("OPEN Error!");}
                        FRESULT res2 = f_write(&USBHFile,g_adc3_dma_data1,sizeof(g_adc3_dma_data1),&br);
                                        if(res2 != FR_OK)
                                                {                printf("WRITE Error!");}
                                                else        
                                                {printf("WRITE Successful!");}
                                                       
                        f_close(&USBHFile);// 关闭源文件
                                               
                                memset(g_adc3_dma_data1,0,ADC_DATA_LENGTH);//清除数据
                                g_adc3_dma_complete_flag = 0;                       
                                                                               
                                        }
}

回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
 楼主| 发表于 2024-9-11 12:13:11 | 显示全部楼层
这是我前面先打印的数组里面的数据,然后保存到U盘 QQ截图20240911121249.png
回复

使用道具 举报

0

主题

118

回帖

118

积分

初级会员

积分
118
发表于 2024-9-11 14:50:00 | 显示全部楼层
楼主这个要字符串方式写入,电脑端txt文件才可以正常识别使用
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
 楼主| 发表于 2024-9-11 15:25:29 | 显示全部楼层
我改成了        FRESULT res2 = f_puts((const TCHAR *)g_adc3_dma_data1,&USBHFile); 也不行
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
 楼主| 发表于 2024-9-11 16:49:59 | 显示全部楼层
Vxworks 发表于 2024-9-11 14:50
楼主这个要字符串方式写入,电脑端txt文件才可以正常识别使用

谢谢建议,我自己改写成字符串可以正常读写了。
122.png
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
 楼主| 发表于 2024-9-11 16:51:17 | 显示全部楼层
本帖最后由 不吃鱼的猫大人 于 2024-9-11 17:21 编辑
Vxworks 发表于 2024-9-11 14:50
楼主这个要字符串方式写入,电脑端txt文件才可以正常识别使用
122.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:46 , Processed in 0.043923 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表