OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6216|回复: 24

F429 求助大神!我的程序是不是需要上操作系统

[复制链接]

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
发表于 2020-12-16 14:36:50 | 显示全部楼层 |阅读模式
10金钱
  年初,朋友介绍一个项目给我,起初只说是画个板,我说可以,然后程序也需要我来写,我要需求,他说就几个简单功能就行。然后这项目我就直接入坑了。我想功能这么简单,也没上系统。半年多时间,他一直加需求,我就在裸机上一直加功能。
   现在大概功能有:9路数据采集(8路ADC采集,1路串口采集模块),液晶显示,触摸,SD卡,U盘,WiFi,4g,蓝牙。
  其中8路ADC采集,2路采样频率25hz采样精度10位,1路采样频率50hz采样精度10位,3路采样频率100hz采样精度12位,2路采样频率200hz采样精度16位。1路串口采集模块是13ms收到一包数据。


  8路ADC采集和串口采集模块是每两秒按通讯协议打一包通过WiFi或4G或蓝牙发送,(配置页面有发送方式选择开关)
  每5秒按协议打包数据存储本地SD卡或U盘,(配置页面有存储方式选择开关)
  液晶屏实时显示两路ADC波形和串口模块采集波形以及实时时钟
  实时监测各个传输模块网络连接状态

现在遇到的问题是:

  发送数据包和存储数据包缺数据严重(例如:发送数据包两秒发一包,一包中需要200hz那路信号采集值个数为400个,我只能采到370多个)
  实时时钟偶尔会跳秒
  ADC采集没有加滤波处理,毛刺很多,波形勉强能看,不理想。(加一个简单的取平均处理后,数据丢失很严重)

各位大佬,我这项目不上系统是不是没救了。上系统是不是FreeRTOS+EMWIN好点。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8632
金钱
8632
注册时间
2020-5-11
在线时间
4070 小时
发表于 2020-12-16 14:45:30 | 显示全部楼层
本帖最后由 LcwSwust 于 2020-12-16 14:46 编辑

与系统无关
考虑一下数据处理上是否需要模拟一下FIFO。中断里是否有耗时很长的操作?
专治疑难杂症
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-12-16 14:49:07 | 显示全部楼层
WIFI + 4G +蓝牙  你直接用那种透传的,转串口方案的,这样省了很多开发工作。通讯你看看你串口底层这块,数据怎么处理了。
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 14:50:45 | 显示全部楼层
LcwSwust 发表于 2020-12-16 14:45
与系统无关
考虑一下数据处理上是否需要模拟一下FIFO。中断里是否有耗时很长的操作?

我感觉画波形,触摸按键扫描和写SD卡写U盘都耗时
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 14:54:14 | 显示全部楼层
jiangyy 发表于 2020-12-16 14:49
WIFI + 4G +蓝牙  你直接用那种透传的,转串口方案的,这样省了很多开发工作。通讯你看看你串口底层这块, ...

两秒发送一包数据,发之前我看了发送数据缓存,缺数据,应该是采集数据的问题吧
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8632
金钱
8632
注册时间
2020-5-11
在线时间
4070 小时
发表于 2020-12-16 15:27:15 | 显示全部楼层
yzgxhld 发表于 2020-12-16 14:50
我感觉画波形,触摸按键扫描和写SD卡写U盘都耗时

多用DMA
专治疑难杂症
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2020-12-16 15:42:29 | 显示全部楼层
我觉得你上系统解决不了丢包问题,你看看哪里能提高效率
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 16:04:11 | 显示全部楼层

我ADC采样用的DMA模式,SD卡和U盘也可以用DMA模式吗,我之前没做过
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 16:05:35 | 显示全部楼层
三叶草 发表于 2020-12-16 15:42
我觉得你上系统解决不了丢包问题,你看看哪里能提高效率

我计划把触摸改成中断模式,其他的有什么好方法吗
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2020-12-16 16:23:35 | 显示全部楼层
yzgxhld 发表于 2020-12-16 16:05
我计划把触摸改成中断模式,其他的有什么好方法吗

触摸改成中断岂不是更会影响采集了
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 16:48:34 | 显示全部楼层
三叶草 发表于 2020-12-16 16:23
触摸改成中断岂不是更会影响采集了

大神能说详细点吗,我没理解。中断不应该比轮询强吗
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2020-12-16 16:54:26 | 显示全部楼层
yzgxhld 发表于 2020-12-16 16:48
大神能说详细点吗,我没理解。中断不应该比轮询强吗

你现在的问题是发送丢包存储的问题,你把触摸放到中断更会影响那段处理的程序。你应该优化你的软件结构。
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 16:57:57 | 显示全部楼层
三叶草 发表于 2020-12-16 16:54
你现在的问题是发送丢包存储的问题,你把触摸放到中断更会影响那段处理的程序。你应该优化你的软件结构。

我的意思是触摸程序改为中断触发,触摸处理程序还在主循环中
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3369
金钱
3369
注册时间
2011-11-10
在线时间
207 小时
发表于 2020-12-16 17:52:01 | 显示全部楼层
你200HZ采集400个数据就完全需要2s了,所以MCU还需要处理其他任务,所以你采集的数据肯定不够数的。提高一下采集频率,别卡着2s。主循环里把任务耗时分配好不上系统裸机跑没问题。
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-16 19:04:56 | 显示全部楼层
c2007s 发表于 2020-12-16 17:52
你200HZ采集400个数据就完全需要2s了,所以MCU还需要处理其他任务,所以你采集的数据肯定不够数的。提高一 ...

客户需求就是这样,我不敢随便改采集频率,只能找大家想解决办法。我也是第一次遇到这样严苛的需求
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-12-17 08:51:56 | 显示全部楼层
大致看了一下,为了不影响你数据采集任务被中断打断,你可以用一个互斥信号量来约束。比如你DMA接收完采集数据,等待发送完数据,互斥信号量至高,这样触摸中断可以使用,使用完后把互斥量置低。此时ADC采集任务检索到互斥量为低时,采集一段完整的数据,请求发送完后再把互斥信号量至高,以此类推。
回复

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2020-12-17 10:20:33 | 显示全部楼层
多用DMA,采集数据放在缓存池里,轮训转发,如果按顺序采集完转发,一旦网络有点延时,就会影响采集,做好网络异常数据处理,采集数据优于上传数据处理
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-12-17 11:30:58 | 显示全部楼层
LCD刷屏的方式没交待, 其它的任务我觉得429的一半资源都足以应付。
所以我认为不是CPU的资源问题, 而是你分配资源的问题,如果说你对任务的执行时间没有慨念,不管是裸的还是上系统的分别也不大的。

回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-17 16:15:58 | 显示全部楼层
edmund1234 发表于 2020-12-17 11:30
LCD刷屏的方式没交待, 其它的任务我觉得429的一半资源都足以应付。
所以我认为不是CPU的资源问题, 而是 ...

液晶相关代码是使用用的正点原子RGB例程,三条曲线显示都是用的画点函数,刷满一屏清对应区域屏
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-17 16:28:48 | 显示全部楼层
象牙塔 发表于 2020-12-17 10:20
多用DMA,采集数据放在缓存池里,轮训转发,如果按顺序采集完转发,一旦网络有点延时,就会影响采集,做好 ...

我是加了数据缓存池的,哪些方面用DMA比较好,我只在ADC采集用到了DMA
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-17 16:29:45 | 显示全部楼层
jiangyy 发表于 2020-12-17 08:51
大致看了一下,为了不影响你数据采集任务被中断打断,你可以用一个互斥信号量来约束。比如你DMA接收完采集 ...

我现在还是裸机跑,没有信号量。。
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-12-17 17:20:06 | 显示全部楼层
yzgxhld 发表于 2020-12-17 16:29
我现在还是裸机跑,没有信号量。。

信号量可以自己做个全局变量,来控制收发时序
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-17 17:27:27 | 显示全部楼层
jiangyy 发表于 2020-12-17 17:20
信号量可以自己做个全局变量,来控制收发时序

好的,谢谢
回复

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2012-9-16
在线时间
286 小时
发表于 2020-12-18 08:56:14 | 显示全部楼层
yzgxhld 发表于 2020-12-17 16:28
我是加了数据缓存池的,哪些方面用DMA比较好,我只在ADC采集用到了DMA

产生中断能用的都用上,少用中断,再就是对采集做保护
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复

使用道具 举报

6

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-11-6
在线时间
45 小时
 楼主| 发表于 2020-12-18 11:15:33 | 显示全部楼层
象牙塔 发表于 2020-12-18 08:56
产生中断能用的都用上,少用中断,再就是对采集做保护

好的,谢谢,我这几天改下程序
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 20:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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