一、需求分析
1.RTC功能,分為數(shù)顯式和指針式,兩種顯示模式可以互相切換,且可以手動設(shè)置時間,精確到秒。
2.秒表功能,精確到百分之秒,如果可以,精確到毫秒。
3.指南針功能。
4.抬腕亮屏與無操作自動息屏功能。
5.不帶按鍵且又可以進行各種切換操作。
6.電源方案需要實現(xiàn)軟件關(guān)機功能。
7.能較精確檢測電池電量,電源方案能使軟件識別當前是否正在充電。
8.IAP固件更新功能。
二、硬件設(shè)計
1.芯片選型
(1)RTC功能需要使用RTC芯片,選擇NXP的PCF8563,I2C通信協(xié)議。
(2)指南針功能需要磁力計,抬腕亮屏功能需要姿態(tài)傳感器,選擇MPU9250,自帶3軸加速度計、3軸陀螺儀與3軸磁力計。
(3)不帶按鍵實現(xiàn)切換操作,也可以使用MPU9250獲取姿態(tài)動作作為輸入。
(4)電源方案實現(xiàn)軟件關(guān)機功能,要求電源芯片必須有EN使能端,選擇SY8089A作為3.3V降壓IC。
(5)能使軟件識別當前是否在充電,要求鋰電池管理芯片必須有相應的查詢功能,選擇TP4056作為鋰電池充電管理IC,其CHG引腳在充電時為低電平,可以作為充電檢測。
(6)檢測鋰電池電量,采用ADC檢測電壓法。
(7)主控芯片選擇STM32F411CEU6,UFQFN48封裝,占PCB面積較小,F(xiàn)LASH與SRAM容量也足夠(512KB、128KB)。
(8)為了實現(xiàn)IAP功能,可能需要SPI Flash,暫時記錄W25Q128。
2.各部分原理圖設(shè)計

三、軟件設(shè)計
1.?IAP功能設(shè)計(選定方案1)
(1)?IAP功能方案1
利用STM32的USB將固件通過FAT32文件系統(tǒng)寫入外擴SPI Flash中,在bootloader中檢測Flash中是否有固件.bin文件,如果有將其更新到APP區(qū),更新完畢將其刪除后,跳轉(zhuǎn)到APP處執(zhí)行。
(2)??IAP功能方案2
利用STM32的串口更新固件,開機時在bootloader中檢測當前姿態(tài)傳感器的x軸傾角是否大于45°,是則進入IAP模式,接收上位機發(fā)送的固件,采用應答機制:上位機先發(fā)送固件的大小,以便串口判斷該接收多少數(shù)據(jù);串口接收2048字節(jié)的數(shù)據(jù)并將其寫入APP區(qū)域后,發(fā)送0x55給上位機通知其發(fā)送下2048字節(jié)數(shù)據(jù),直到固件寫入完畢。利用STM32軟件復位重啟且確保重啟前姿態(tài)傳感器x軸傾角小于45°,以便令bootloader跳轉(zhuǎn)到APP區(qū)。若誤觸發(fā)IAP模式,則一定時間內(nèi)未檢測到串口數(shù)據(jù),則自動復位。上位機采用QT5編寫。
2.UI設(shè)計
UI設(shè)計使用LittleVGL開源庫進行設(shè)計。
3.效果圖
反面:

正面:


一塊電路板是電路設(shè)計的最終呈現(xiàn),也是工程師智慧的結(jié)晶。每個工程師對PCB設(shè)計都有自己的經(jīng)驗和技巧,同一個電路,不同的工程師會畫出不同的設(shè)計。
面包板社區(qū)特在此發(fā)起“曬板子”有獎征文活動,方便大家相互學習。
活動時間:3月11日-4月11日
征文內(nèi)容:曬板子,分享你的設(shè)計思路、經(jīng)驗心得
秀出你的PCB!模電書、開發(fā)板、京東卡等你來領(lǐng)!

點擊閱讀原文,參與活動