近期龙芯俱乐部完成了龙芯开源创客智龙主板的首发,这个基于龙芯1C处理器的创客主板,不仅有了国内的创客用户,还被带到了国外,通过社区协作实现了很有趣的创客作品。
我其实很早就知道我国有龙芯这么一款国产处理器,但对其的印象一直停留在“安全应用”、“试验品”等字眼上,认为一个普通人并不会接触到龙芯系列的处理器;尤其是在得知龙芯所使用的MIPS架构无法兼容Windows之后,便更加认为龙芯不会在桌面系统上有所成就。
直到今年三月份在某新闻客户端上看到了一则新闻,内容大约是“中国的树莓派 开源龙芯主板开始接受团购”,发现其价格为199元并不贵,同时由于对国产CPU的好奇,便拍下了这款产品。在经过了漫长的等待——五月份发货,以及我八月份才回国过暑假——之后,终于拿到了这块板子。

当然由于这块板子,我也通过社区了解到了龙芯产品的最新动向,比如自主指令集,以及3A2000和3B2000 CPU。这些新产品受到了媒体的广泛关注,龙芯中科也因此被人民日报头版所报道,在此便不再累述。

事实上,我此前并没有任何嵌入式开发的经验。在最开始拿到板子的时候,甚至不知道要通过串口线连接主板。但是通过开源社区中提供的教程,我很快便掌握了对主板的简单操作。
小作品——摩斯电码播放器
摩斯码使用不同长短的连续波(嘀和嗒)和间隙来表示26个英文字母,10个数字以及一些标点符号,由于其编码简单、可靠性高,被广泛应用于无线电通讯领域。其简便性使我萌生了利用龙芯主板来将英文文本翻译为摩斯码,并通过扬声器以正弦波播放出来的想法。
由于我并没有无线电执照及相应的设备,所以此作品仅限以声音形式播放而不能通过无线电发报,但进行改动,龙芯主板是完全有能力成为全自动发报机的。
硬件部分
此作品电路板的基本系统结构为:使用运算放大器芯片构造一个正弦波发生器,其频率可由一个双联电阻器在约500Hz至无限大(实际极限数值由芯片决定,但肯定超出人耳听力范围)之间调整,此正弦波将作为扬声器的声源。
扬声器与正弦波之间有一个由开源龙芯主板GPIO接口所控制的继电器,用来控制线路的断连,从而达到播放摩斯码的目的。
确定了系统结构之后,下一步就要制作电路原理图并确定元件参数。毫无电路设计基础的我在网络上找到了这张原理图作为参考。

然而此电路在模拟器中的模拟并不成功。在QQ群中electron群友的帮助下,将运算放大器改为LF356N,并对电路做出了大幅度简化及调整,确定了电路构造以及元件参数,并在软件中进行了电路模拟,成功输出了预定频率的正弦波。

我住在天津,作为一个大城市购买电子元件并不困难,我很快便购齐了所需的元件及面包板,开始真正的制作。

最初的三个元件

杂乱的环境
在实际制作中,我碰到了许多在模拟中没有预料到的问题。首先碰到的问题是GPIO无法直接触发继电器。
通过查阅所使用的HRS1H-S型继电器的数据表,发现其线圈需要约300mW的功率来触发,然而龙芯GPIO的最大输出功率仅为约50mW。
在QQ群中群友的建议下,我使用了一颗8050三极管来提升功率,成功触发了继电器。
第二个问题则是吃了不认真和不懂电路原理的亏。当我把一切元件及线路按照电脑自动生成的鼠线连接之后,扬声器没有任何反应。
这个问题困扰了我好几天,我一点一点地将面包板上的接线与电脑给出的鼠线比对,希望能发现什么接线错误,然而并没有。而这时我也该回到英国了,于是只能把所有的东西装到盒子里,到了英国再处理。

到了英国,我就有万用表能用了。通过测试发现,输出端是有直流电压输出的,而且与预期的结果一样,这说明电路并没有断路;但当测试交流电压时,万用表毫无反应,这说明输出的波形是一条直线,而不是正弦波。
既然电路板上没问题,那会不会是电路本身的设计问题?但如果电路设计有问题的话,仿真软件又是如何输出预期的波形的呢?
我开始仔细检查起仿真软件中的电路,最终发现了问题:

问题就出在这个-6.0V身上。此前我一直是把4号针脚接地的,并没有意识到这个负电压的问题。当我在仿真软件中也把4号针脚接地后,其输出的波形也变成了一条直线。
依然是在群友的帮助下,我对线路做了一点小改动,将4*1.5V AA电池盒的负极接到4号针脚而不是地,并把第二节电池的负极当成了地。由此便创造出了一个±3V的直流电源,但这也导致了输出电压成了原来的一半,因此不再需要起初串联在扬声器上的限流电阻。

以上即为最终的电路图。可见由2颗3.3nF电容和一个最大电阻为100kΩ的双联电位器所组成的反馈回路。运放输出端直接连接扬声器正极,扬声器的回路则由继电器所控制。继电器的线圈一边接地,一边与一颗三极管的发射级连接,此三极管的集电极由电池驱动,基极则连接GPIO输出口和一个限流电阻。5.1kΩ电阻+2个1N4004二极管并联的设计用来限制峰值电压。
最终,扬声器里成功输出了干净的正弦声波,通过调整双联电位器可将其频率调高至人耳听力以外。至于波形实际的噪音水平为多少,最高可达到的频率为多少,由于我并没有示波器,因此无从得知。
