大概两个月前,我用LGT8F08A和nRF24L01+制作了无线串口模块。
传送门:《LGT版无线串口模块》
因为LGT8F08A的硬件SPI和串口是引脚复用的,所以只能使用软件SPI的方式驱动nRF24L01。传输的速度受到软件SPI速度的限制。
这次将程序移植到了STM8S上,由于可以使用硬件SPI接口,所以传输速度提升了一倍:最大可以用230400的波特率来传输文件。
并且由于STM8S的FLASH有32KB,所以有额外的代码空间,可以添加自动设置串口波特率的功能。
同LGT版本的模块一样,仍然可以支持使用AT指令来设置模块的参数,包括无线功率,无线波特率,串口波特率等等。
同LGT版本的模块一样,仍然全部开源(这次能不能给条裤子穿了? )
原理图:
源代码:
打样的电路板:
主要参数和功能:
1. 串口波特率从1200到230400可任意设置
2. 支持AT命令设置器件参数
3. 可自动设置串口波特率
4. 可选内部自供电和外部供电,内部电池低电压检测
5. 时分全双工传输,可同时收发数据
制作无线串口的目的,其实主要是用来作为无线Linux终端使用。无论是前一阵很红的树莓派(我的树莓派在线鱼缸传送门),还是BeagleBoneBlack之类的Linux单板机,在没有配置好网络和系统之前,无法使用ssh之类的远程登录,只能接上电视,接上键盘,在屏幕上进行操作。
电视的HDMI接口有限,频繁的插拔调换HDMI接口,相当令人麻烦。
所以我想到了使用无线串口来作为Linux终端机来使用。这也成为Linux单板机网络故障时的备用登录手段。
这样,我就可以把Linux单板机扔在房间角落,默默的运行SVN,FTP和我的个人网站,即使网络系统出现了故障,我也可以愉快的坐在沙发上,使用无线串口登录Linux排除问题。而不用再去拉扯电视机后面布满灰尘的HDMI线。
使用无线串口和screen,在Mac上登录BeagleBoneBlack,因为BBB的调试引脚没有电源引出,这时有自供电就方便许多:
按住板子上的按钮开机的话,可以进入AT命令模式,这个模式下可以设置器件的一些参数。使用“at+what?”命令可以查看系统所有的参数和可用命令。
相比较LGT版本的无线串口,STM8S版本多了自动串口波特率的功能。所谓的自动串口波特率,就是不需要手动设置串口的波特率,设备会在开机的时候检测串口输入的数据,然后自动判断出正确的通信波特率。
自动波特率适用的范围是1200bps到115200bps,使用“at+abdr=enable"命令来开启自动串口波特率。
如果自动波特率功能开启,设备上的红色和蓝色的LED会同时闪烁,表示正在等待串口数据输入。
将无线串口和USB转串口连接到一起,打开超级终端之类的串口工具上,只要胡乱敲几下键盘发送一些字符,无线串口的波特率就会自动完成匹配,很方便吧。
第一次使用STM8芯片,发现单总线调试,比起JTAG真的方便很多,板子上不用预留那么多的调试引脚,就是调试速度慢了一点,但还是可以接受的水平。
转载
|