98|4

1533

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【复旦微车规MCU FM32FT0A测评】波形绘制与数据记录 [复制链接]

在数据检测系统中,数据的地位是十分重要的,为了便于后期的数据分析,需对数据加以保存。

要进行数据保存,既困难,也简单。困难在于要有存储监制来保存,而一般的系统是难以支撑文件系统的。

简单则在于有了数据记录模块的出现,借助串行通讯就可将数据保存到文件中。

为与数据记录模块进行通讯,这里使用的UART4,其引脚占用见图1所示。

 

图1 引脚占用

 

 

图2 连接与测试

 

由于数据记录模块工作时的波特率为9600bps,故在使用时要按此来设置波特率。

在满足这些条件后,即可如下的主程序来实现数据保存的测试。

int main(void)
{
	u16 i;  
    FL_Init();
    MF_Config_Init();
	MF_UART4_Init();
	i=0;
    while(1)
    { 
          GetVoltage = GetSingleChannelVoltage_POLL(FL_ADC_EXTERNAL_CH6);
		  printf("%d,%d \r\n",i,GetVoltage);
		  FL_DelayMs(500);
		  i=i+1;
    }
}

经程序的编译与下载,其测试效果如图3所示。

 

图3串口输出测试

 

在接入数据记录模块后,其数据被存入TF卡,其文件名是由“urc+数字串”构成,其记录文件的格式及内容如图4所示。

 

图4 记录形式

 

此外,通过与串口屏的配合还可绘制出采集数据的波形曲线。

依照串口屏的使用方式,显示采样值的指令被存放到数组中,其格式为:

uint8_t sj[15]={0x74,0x31,0x2E,0x74,0x78,0x74,0x3D,0x22,0x31,0x32,0x33,0x22,0xFF,0xFF,0xFF};

对于绘制波形曲线的指令也存放在数组中,其格式为:

uint8_t hz[15]={0x61,0x64,0x64,0x20,0x31,0x37,0x2C,0x30,0x2C,0x31,0x32,0x30,0xFF,0xFF,0xFF};

在使用时,只需用检测值替代数组中的数据部分即可。

在以串口测试输出时,其输出内容如图5所示。

 

图5 输出测试

 

实现检测数据显示与波形绘制的主程序为:

int main(void)
{
	    u16 i,v,u; 
        uint8_t hz[15]={0x61,0x64,0x64,0x20,0x31,0x37,0x2C,0x30,0x2C,0x31,0x32,0x30,0xFF,0xFF,0xFF};	
		uint8_t sj[15]={0x74,0x31,0x2E,0x74,0x78,0x74,0x3D,0x22,0x31,0x32,0x33,0x22,0xFF,0xFF,0xFF};
        /* 使能IWDT */
        IWDT_Init(FL_IWDT_PERIOD_4000MS); 
        /* Initialize FL Driver Library */
        /* SHOULD BE KEPT!!! */
        FL_Init();
        /* 使能SVD, 阈值4.157V(falling)~4.257V(rising) */
        SVD_Init(SVD_MONTIOR_VDD, FL_SVD_WARNING_THRESHOLD_GROUP11, FL_SVD_REFERENCE_1P0V);
        /* 确认SVD监测结果是否高于阈值,如否则持续等待 */
        while(false == SVD_Result_Confirmed(SVD_HIGHER_THRESHOLD, 2000U/*us*/));
        /* 使能BOR */
        RMU_BOR_Init(FL_RMU_BOR_THRESHOLD_2P00V);
        /* Initialize all configured peripherals */
        /* SHOULD BE KEPT!!! */
        MF_Config_Init();
  	    FL_IWDT_ReloadCounter(IWDT);
		MF_UART4_Init();
		i=0;
        FL_IWDT_ReloadCounter(IWDT);
		while(1)
        { 
            /* 清狗 */
            FL_IWDT_ReloadCounter(IWDT);
            /* 电源掉电监测处理 */
            PowerDownMonitoring();
            /* 功能执行 */
            GetVoltage = GetSingleChannelVoltage_POLL(FL_ADC_EXTERNAL_CH6);
			v=250-GetVoltage/20;  // =x/20
			u=GetVoltage/20;
			hz[9]=(v%1000)/100+0x30;
			sj[8]=(u%1000)/100+0x30;
			hz[10]=(v%100)/10+0x30;
			sj[9]=(u%100)/10+0x30;
			hz[11]=v%10+0x30;
			sj[10]=u%10+0x30;
		    for(i=0;i<15;i++)
		    {
			      FL_UART_WriteTXBuff(UART4, hz[i]);  //将发送数据写入发送寄存器
                  while(FL_UART_IsActiveFlag_TXBuffEmpty(UART4) != 0x01UL){};  // 等待发送完成
		    }
			FL_IWDT_ReloadCounter(IWDT);
			for(i=0;i<15;i++)
		    {
			      FL_UART_WriteTXBuff(UART4, sj[i]);  //将发送数据写入发送寄存器
                  while(FL_UART_IsActiveFlag_TXBuffEmpty(UART4) != 0x01UL){};  // 等待发送完成
		    }
			FL_DelayMs(500);
			FL_IWDT_ReloadCounter(IWDT);
    }
}

经程序的编译与下载,其测试效果如图6所示。这样就圆满地解决了开发板无法完成实现波形绘制的问题。

 

图6 显示效果

 

此帖出自汽车电子论坛

最新回复

强呀,可以一个屏来适配N款单片机,这不是爽歪歪?不用重复造轮子了。   详情 回复 发表于 昨天 15:13
点赞 关注

回复
举报

7035

帖子

11

TA的资源

版主

沙发
 
老师,你这屏很大呀,驱动占不占内存呀?
此帖出自汽车电子论坛

点评

是款7寸的串口屏,界面设计完成后一次性下载到显示屏的FLASH中,后期就只是串口发指令了。  详情 回复 发表于 昨天 12:16
 
 

回复

1533

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
lugl4313820 发表于 2025-1-27 11:11 老师,你这屏很大呀,驱动占不占内存呀?

是款7寸的串口屏,界面设计完成后一次性下载到显示屏的FLASH中,后期就只是串口发指令了。

此帖出自汽车电子论坛

点评

强呀,可以一个屏来适配N款单片机,这不是爽歪歪?不用重复造轮子了。  详情 回复 发表于 昨天 15:13
 
 
 

回复

7035

帖子

11

TA的资源

版主

4
 
jinglixixi 发表于 2025-1-27 12:16 是款7寸的串口屏,界面设计完成后一次性下载到显示屏的FLASH中,后期就只是串口发指令了。

强呀,可以一个屏来适配N款单片机,这不是爽歪歪?不用重复造轮子了。

此帖出自汽车电子论坛

点评

只是在界面需要变化时要重新来一遍,还有就是有的屏会在长时间不用的情况下,失去串口通讯的问题,但其触摸操作类的功能还存在,所用还要时不时的用一下,不好用了就改为它用。  详情 回复 发表于 昨天 17:28
 
 
 

回复

1533

帖子

1

TA的资源

五彩晶圆(初级)

5
 
lugl4313820 发表于 2025-1-27 15:13 强呀,可以一个屏来适配N款单片机,这不是爽歪歪?不用重复造轮子了。

只是在界面需要变化时要重新来一遍,还有就是有的屏会在长时间不用的情况下,失去串口通讯的问题,但其触摸操作类的功能还存在,所用还要时不时的用一下,不好用了就改为它用。

此帖出自汽车电子论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表