硬汉嵌入式论坛

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

[有问必答] 从硬件I2C拿数据,然后快速刷柱状图需要准备什么?规避什么?

[复制链接]

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2018-12-11 09:58:32 | 显示全部楼层 |阅读模式
这几天在看 论坛二代示波器的教程,充实了一些概念和意思,也启发了个别优化的思路。

例如:
1)模拟信号采集。通道最高速度2.4Msps的采样率,每秒采集的数据高达4.8MB左右。配合DMA使用,可以降低CPU负担。
2)波形处理。平均值、最小值、峰峰值的计算。
3)波形刷新和测量值显示。emWin实现
4)波形的控制调节。按键、触摸调节
5)波形的浏览继续放在emWin任务里面实现。
6)示波器是1024个数据,一帧画。
(不知道上面摘录的六点笔记有没有理解错误或者理解歧义)

最近在酝酿一个新功能:
发指令给硬件I2C,再从硬件I2C拿数据,然后快速刷柱状图需要准备什么?规避什么? 麻烦经验人士给一些相关资料学习,以及建议,3Q。


回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-11 09:58:38 | 显示全部楼层
当前平台,测试过emWin 执行WM_PAINT的时候,刷新区域越大,越耗内存。之前隐约碰到过在emWin很忙的时候执行 硬件I2C读写会大家的现象。 还没细究,欢迎大家一起探讨。
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2018-12-11 10:17:58 | 显示全部楼层
廷润 发表于 2018-12-11 09:58
当前平台,测试过emWin 执行WM_PAINT的时候,刷新区域越大,越耗内存。之前隐约碰到过在emWin很忙的时候执 ...

emwin的内存要开的大一点,至少40KB以上。 F103的内存得省着点用。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-11 10:21:17 | 显示全部楼层
caicaptain2 发表于 2018-12-11 10:17
emwin的内存要开的大一点,至少40KB以上。 F103的内存得省着点用。

是的,主菜单有彩色图标。如果给emWin 开30KB内存,简单使用不会死机,主菜单开机第一次显示不出来。我当前开了45KB。中途显示二级菜单的图标,提前用emWin的内存加载flash的图标
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-11 10:24:37 | 显示全部楼层
突然想到,emWin开一个新控件,就会吃掉一个控件的基本内存。到时候新开2D函数画垂直坐标和数据得小心行事。
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2018-12-11 10:26:01 | 显示全部楼层
本帖最后由 caicaptain2 于 2018-12-11 10:27 编辑
廷润 发表于 2018-12-11 10:21
是的,主菜单有彩色图标。如果给emWin 开30KB内存,简单使用不会死机,主菜单开机第一次显示不出来。我当 ...

我建议F103尽量不适用彩屏,因为它的RAM最多64KB,用起来太勉强。 如果加外部RAM,硬件布线又非常麻烦,存取速度有限,可靠性受影响。
我有个产品开始用的103,几乎都设计完成了。可惜后续界面实在卡顿,就全面升级到F4系列了。 新产品,人机界面要求高的话,F429就更好了。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-11 10:49:17 | 显示全部楼层
caicaptain2 发表于 2018-12-11 10:26
我建议F103尽量不适用彩屏,因为它的RAM最多64KB,用起来太勉强。 如果加外部RAM,硬件布线又非常麻烦, ...

感谢提醒。
国外很多应用场景对性能和体验没中国那么挑剔。例如欧洲他们的基本要求是:节能、环保、安全,成本偏向于这三个基本环节,至于一个320*240界面刷新延时感很明显,他们还可以根据实际情况接受。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-12 08:45:20 | 显示全部楼层
进度V1.0 如图所示,继续优化。
V1.0.jpg
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2018-12-12 10:49:07 | 显示全部楼层
廷润 发表于 2018-12-12 08:45
进度V1.0 如图所示,继续优化。

多提示一下,所谓的“快速”刷新有没有意义? 比如界面上,人眼能够识别的刷新时间不高于0.1秒。
所以,你的软件做到100ms刷新一次足够了。
真正需要快速刷新的数据,是通过通讯接口来传输的,比如USB之类的。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-12 17:00:18 | 显示全部楼层
需要显示的效果越来越逼近。
V1.1.jpg
V1.3.jpg
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-12 17:03:21 | 显示全部楼层
caicaptain2 发表于 2018-12-12 10:49
多提示一下,所谓的“快速”刷新有没有意义? 比如界面上,人眼能够识别的刷新时间不高于0.1秒。
所以, ...

如我补发的V1.3图片所示。画这种效果,emWin可以胜任。

确实如你的提醒,目前我的I2C大部分时间花在I2C发命令,以及从设备响应;真正读数据和显示反而耗时较少。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2018-12-14 10:04:14 | 显示全部楼层
晾他一天,又有了新灵感,扫描速度更快、更好看、显示结果更准确。

感谢Tiger昨天提供的函数,显示的dBm数值更贴近现实。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 21:06 , Processed in 0.256383 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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