[Macro]3D8 之 串口通讯协议

Photobucket

慢慢地,也从无声电影时代向有声电影时代迈进了~

虽然说话依然还是结结巴巴,很多句子也不通顺,有上句没下句那种,皮笑肉不笑的呵呵声在视频里面听起来也似乎不是那么一回事,但不管怎么样,也算是出了个东西吧。本来就是DIY的东西,还是给它多一点空间,包容其随性且略带粗野的感觉。

话说正题,3D8的通讯协议在几次修改,如今基本成型。实践证明,使用串口通讯是没错的,而且使用的是115200的高波特率,一方面,信号的稳定性比想象中的要强,另一方面,速度也很有保证,连续发送批量扫描的程序也没有闪烁的感觉。

当然,也试过把12分频的串口时钟改为不分频,波特率的指标确实是上去了,试了下传说中1382400的波特率,但是实际上发现基本接收不到什么数据,自己从心里上感觉,单片机也是就使劲地接收数据,正儿八经的扫描倒是忘得差不多了,也不知道这么做的意义在什么地方。

其实我从内心一直对中断这个东西比较怕,正如其名,就是把手头正在做的事情停下来,去处理中断。就像是干活干得好好的,然后一个膀胱中断触发,尿急了,于是去处理,向厕所走去;正走在半道,突然手机又响了,于是又开始处理手机中断,不过正式处理之前,先看看来电显示,到底是何方圣神的电话,如果是陌生号码,优先级最低,直接忽略中断请求,继续处理膀胱中断……

对,就是类似这样的情况,因为中断不但会中断主函数,而且中断别的中断,甚至自己。人要是中断多了,很快就会把正事忘掉。单片机虽然不至于这样,但现实中的另外一种情况,就是男女朋友的电话,也就是一两分钟搞不定的那种。本来是往厕所走着,这样的电话一来,以最高优先级处理,膀胱中断就被暂时搁置,自己不知不觉晃悠到一个无人的角落,甜言蜜语好好腻味一番。过了一阵,出现高等级的膀胱中断——尿憋不住了。于是就夹着手机到厕所解决。于是在处理手机中断的时候,也把膀胱中断给处理了。人确实是可以这样,毕竟我们还是有一定的,甚至可以说很强的“多线程”能力。但是单片机就不一样,它是单线程的,如果在新的中断到来之前,没有把之前的中断处理好,就陷入了中断相互嵌套的噩梦。最后的结果就是正事一点儿没干,尿裤子的同时,男女朋友也会因为手机“信号不好”生气挂断。喊一声“杯具”以后,就无计可施。

所以在波特率是1382400的情况,差不多就像上面那样。波特太高,数据来得太快,反而没空去处理了。不过好在115200的表现一切稳定,通宵拷机也没有出现错乱。

而串口通讯也是最常用的数据通讯手段之一,甚至于我们的USB,简单来说,也是用串口的模式,因为数据线就2条,如果是并口的话,数据线就要一大排了。为了异步传输过来的数据实时都得到相应,我们确实不得不用中断的方式,但是一定要保证其短小精炼,在下一次中断处理完之前,要处理完毕。有空闲也作曲干正事儿。

好在3D8目前在这个方面确实没有添什么麻烦,不错不错。另外显示部分,也得益于专用的LED驱动芯片,实现了另外两个个特性,一是全局亮度无极可调,二是中断的时候不会造成显示的中断。这些用软件处理会崩溃的事情,借助一些简单的硬件就轻松实现,而这些对于软件程序员来说,真的是会感到无比欣喜且激动的事情。

具体如何驱动,倒是和串口驱动舵机板差不多,发送一串字节,就对应一些操作。而且指令经过大幅度精简。在配合封装好的函数,就可以随意调用,阅读源代码也不会是障碍。至于具体怎么玩,视频里面有介绍咯,没想到自己不知不觉还说上了半个小时,让大家视觉、听觉都受累了~

视频中间出现的因为长度不匹配导致数据响应出错的bug也得到修正,未来出现这个问题的概率会小一些哦~

3D8串口通讯协议说明PDF文档:Manual_3D8_v1.6.pdf
套件即期发布,敬请期待~

P.S. 首发于 08/09/2011《发布在即,3D8串口通讯协议说明》
Photobucket

3D8的 淘宝传送门
感谢Xuping,没有他,就没有3D8。

关于aGuegu

向着更高的逼格
此条目发表在3D8 光立方分类目录,贴了, , , , , , , , , , 标签。将固定链接加入收藏夹。