【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
淘宝上面有一个商品蛮好玩的,那就是日志记录器。说是记录器,其实就是一个模块,这个模块的输入是一个ttl串口,输出是一个tf卡。也就是说,这个记录器的作用,就是把ttl的信息记录到tf卡上面,有点类似于飞机上面的黑匣子。当然为了使用的方便,一般记录器还会搭配一个32.768k的晶振,以及一个5v的纽扣电池,它的作用就是在log生成的时候,同步添加上时间信息,这对debug的人来说,还是非常方便的。
1、实体的日志记录模块
我们编写上位机程序的时候,都会手动添加一个log模块。但是,很多mcu的模块,本身flash就很少,自己又不想重新开发模块,所以补充添加一个这样的实体日志模块还是非常不错的。
2、主要实现的功能
需要实现的功能主要有这么几个方面,
(1)实现串口数据保存到tf卡上面;
(2)实现上位机对模块的配置;
(3)实现模块的低功耗运行。
3、上位机的开发
上位机开发,主要就是对模块进行配置,配置的内容包括但不限于,
(1)关于TTL的相关配置;
(2)关于TF卡的相关配置;
(3)关于RTC的相关配置;
(4)关于文件的相关配置;
(5)发送复位功能。
上位机这部分可以和客户的输入接口进行复用。通过一个按钮进行区分,同时添加一个LED灯说明。默认是客户的信息输入,按下按钮之后,就可以利用上位机对它进行设置。
4、电路的设计
整个硬件分成四个部分,分别是TTL、stm32f407、TF卡、RTC模块。TTL其实就是串口,这部分直接引出来即可。选用stm32f407,主要还是因为它资料比较多,本身也支持tf卡。TF卡部分,直接把sdio接线引出来即可。RTC模块。主要就是电源和晶振两部分注意下。
5、固件开发
固件开发本身包含了两部分,一部分是bootloader,另外一部分是App。Bootloader这部分差异不大,我们主要把重点放在App这部分。
从硬件流程来看,App的流程其实并不复杂。整个固件应该就是一个while(1) + 中断处理的形式就可以完成了。本身固件需要实现的内容如下所示,
硬件驱动部分的实现,
(1)GPIO输出功能实现;
(2)Key按键实现;
(3)数据串口和Debug串口实现;
(4)TF卡的读写;
(5)RTC功能的读取;
(6)内部flash的读写;
(7)看门狗功能。
中间件部分的实现,
(1)Fatfs文件系统的移植;
(2)串口命令的解析。
业务部分的实现,
(1)获取串口数据,保存到TF卡当中;
(2)实现上位机的配置;
(3)低功耗设计;
(4)一键恢复配置的功能。