本帖最后由 oufuqiang 于 2019-10-6 15:53 编辑
我就是标题党,但是是有点料的标题党当然,我的水平不能说算高,比起圈圈、程序匠人等大神,用单片机做VGA接口的示波器的这种,我完全就是一小码农了。但是……经常有人说串口数据不好处理,没办法及时很好响应串口数据。
本人也在网上购买别人的传感器、模块、LED控制卡等,这些商品化的产品,数据接口确实不能让我满意
1.抗错性不行,有一个LED控制卡,只要发一包不完整的数据过去,接口就死掉了,得重启,我是用无线传过去的,根本没法用。
2.不能很好兼容其他协议的设备,如买了一个雨量传感器,自有协议的,但是总线上还想挂其他的MODBUS协议的传感器,问这两个厂家,恢复均是不同协议的不能混用。
3.抗干扰性差(抗乱码差),一些传感器接口如果不小心发了点其他数据过去,就会丢掉后面一帧正常的数据,造成丢帧。
于是,我就想,这个小接口,为什么不写得足够强大和健壮?只要你有正常的数据帧过来,我随时保持响应,这样不行吗?
国庆这几天有点小空,于是就慢慢码一下,结果实现了我的目标。
主要实现的不同于一般的modbus的地方
系统构成:STC12C5A60S2,DS18B20,四位普通数码管模块(需要动态扫描)
注意:请留意你的DS18B20来源,我的手里三颗DS18B20,一颗不回应数据,一颗上电默认9位分辨率,一颗上电默认12位分辨率(这才正常)。
IO:DS18B20,P3.7。数码管字段:P1,低电平有效。数码管位选:P2低四位,低电平有效。
程序编译:data:62.1(RAM),code:1969(ROM)
效果:
1.23400bps波特率,11.0592MHz晶振频率下能达到的最高波特率,已超出modscan软件的范围,后续用游戏修改器强制修改modscan到230400bps测试。
2.正常帧绝对响应-这个不用说
3.数据断流正常响应,一帧数据,你可以任意长的时间内发送过来,比如8字节的帧,连续发7字节,过一年再发最后一个字节,100%响应。
4.混帧、叠帧正常响应,比如两个8字节的帧,前面一个帧后4个字节和后面一个帧前四个字节混叠,后一帧正常响应。相当于你前一帧发了4个字节,发了一半,你不发了,发下一帧正常帧,下一帧正常帧正常响应。
5.连帧正常响应,连续发几帧查询帧,我通通响应数据给你,不需要3.5字节的空闲,反正数据我给回你了,你能不能处理是你的事情了。
6.无限垃圾数据通吃,23400bps波特率下,你扔再多的垃圾数据给我,我也不会死掉。
7.无限长度垃圾数据里面插入正常帧、混帧、叠帧、连帧,230400bps波特率下连续发送,全部正常响应。
8.所有过程,数码管扫描正常,不闪烁。18B20温度采集正常,不中断。
视频1:23400bps正常帧混帧叠帧连帧响应测试视频
https://v.youku.com/v_show/id_XNDM4NzkxMTAyOA==.html?spm=a2h3j.8428770.3416059.1
视频2:23400bps连续大数据乱码不出错LED扫描温度采集正常
https://v.youku.com/v_show/id_XNDM4NzkwNTUyOA==.html?spm=a2h3j.8428770.3416059.1
视频3:在1MB乱码数据中插入正常帧叠帧连帧(数据编辑过程)
https://v.youku.com/v_show/id_XNDM4NzkxMjA1Mg==.html?spm=a2h3j.8428770.3416059.1
视频4:23400bps码率发送含有正常帧的乱码数据全部正常响应,乱码中的正常帧全部得到响应
https://v.youku.com/v_show/id_XNDM4NzkwOTI1Mg==.html?spm=a2h3j.8428770.3416059.1
以下是测试用的数据帧
HEX文件:免费提供测试。
S_modbus_rtu_node hex.rar
(2.42 KB)
C源代码程序:付费或擂台形式公开,即如果你能写出性能更优的代码,RAM,code更小或者你认为的其他性能。贴上HEX,大家测试,确实超过我的,我3天内不能反超,我无条件公开我的源代码。反之同理。最好是同一内核的单片机,不同内核,不好比较。同内核,不同周期的,要慢慢看指令表比较。C语言源程序是单一的C文件,没有.H文件,没做过大项目,水平差,一个C搞定。
此部分内容已被设置为付费内容,您可以在支付 9.9 元 人民币后浏览本楼层全部付费内容。点击购买
本楼层付费信息已有4人购买 |