【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱: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)一鍵恢復配置的功能。