1、NEC協(xié)議在發(fā)送的時候,會有560us的38KHz的載波信號,而在接收的時候這部分載波信號被認定為低電平,而剩余的(2.25ms-650us)的邏輯“1”和(1.12ms-650us)的邏輯“0”時間則被認定為高電平。
2、在單位時間內的位移被定義為速度,速度有線速度和角速度之分,分別對應兩種傳感器測量這兩種不同的速度:線速度傳感器(加速度計)、角速度傳感器(陀螺儀)。
前者多應用在靜態(tài)或者低慢速運動中的姿態(tài)求解,后者多應用在動態(tài)運動中姿態(tài)求解。
3、根據標準約定,零加速度(或零 G 準位)通常定義為相當于最大輸出值(12 位輸出為 4096,10 位輸出為 1024 等)一半的輸出。對于提供 12 位輸出的加速度計,零 G 準位將等于 2048。
輸出大于 2048 表示正加速度。輸出小于 2048 表示負加速度。加速度的數量通常用單位 g (1g = 9.8m/s2 = 重力加速度)表示。
通過確定測量的輸出與零 G 準位之間的差值,然后除以加速度計的靈敏度(用計數/g 或 LSB/g表示)來計算加速度。
對于提供 12 位數字輸出的 2g 加速度計,靈敏度為 819 計數/g 或 819 LSB/g。加速度等于:a = (Aout - 2048)/(819 計數/g),單位為 g。
4、加速度計測得的加速度的方向和設備設定的坐標系是相反的,因為原理表明在測量力的時候采用的是非慣性系參考系,而我們高中時代研究的坐標系是慣性系參考系,前者在物體進行運動產生加速度時,假想一個與速度方向相反的力作用在物體上,這個力就是慣性力;后者我們說不存在慣性力,只說存在慣性,因為在慣性坐標系中,我們研究的是物體,而非坐標系(即假定坐標系相對地球靜止),當我們把坐標系也考慮在內時,當坐標系運動,就產生了慣性力f,這種力作用會假想作用在物體上,只是與運動方向相反。
5、由上可知,加速度計的本質是測量力而非加速度。
6、NRF24L01工作在2.4GHz的頻段,由于頻段頻率較高,所以傳輸速率較快,為2Mbps。
7、STM32的閃存模塊由:主存儲器、信息塊和閃存存儲器接口寄存器3個部分構成。
主存儲器用來存放代碼和const常量;信息塊由兩個部分組成:啟動程序代碼、用戶選擇字節(jié)。
最后的閃存存儲器接口寄存器用于控制整個對閃存區(qū)域的操作。
8、CPU的運行速度比FLASH的操作速度快的多,一般FLASH的最快訪問速度≤24Mhz。如果CPU的速度超過這個頻率,那么在讀取FLASH的時候必須加入等待時間(FLASH_ACR設置)。
9、FLASH編程時,寫入必須為半字(16位)。并且在寫入的時候必須保證所寫區(qū)域的數據必須為0xFFFF。
10、STM32的FSMC有HADDR[27:0],其中[27:26]用來選擇BANK區(qū)域的4個不同塊。
剩下的[25:0]則用來連接外部存儲區(qū)域的地址線FSMC_A[25:0]。
如果數據寬度是8bit,此時的HADDR[25:0]和FSMC_A[25:0]是完全對應的。
如果數據寬度是16bit,此時的HADDR[25:1]和FSMC_A[24:0]是對應起來的。
需要注意:無論數據寬度是多少,外部的FSMC_A[0]和A[0]總是對應的。
11、關于LB和UB的信號控制是由硬件自動控制的,當AHB的數據寬度小于外部存儲器的數據寬度時,此時LB和UB的控制信號自動產生(比如字節(jié)讀取/寫入16bit的外部存儲器)。
12、 __attribute__ (函數屬性、變量屬性、類型屬性等)。如果在使用SRAM時,可以采用u32 sram_array[xx] __attribute__ ((at(0x68000000))代表將外部SRAM的空間全部給了sram_array這個變量,他具有在at0x68000000這個地址的屬性。
往里面寫值就直接在SRAM里面寫值。
13、
內存管理有一種方式叫做分塊式內存管理。
注意表中的分配方向,從頂到底。每一項對應一個內存塊。里面的數值代表了內存池的狀態(tài):如果為0,表示該內存沒有被分配;如果非0,那么數值的大小就表示了該塊內存被連續(xù)占用的內存數。
比如說數值為20,意思是包括該項在內的內存塊被連續(xù)占用了20塊分給了指針。
14、SD卡的分類:
一般的SD卡支持兩種傳輸模式:SD卡模式(SDIO)、SPI模式。顯然前面一種是專用模式,所以速度比較快。
15、常用的漢字內碼系統(tǒng)有GB2313、GB13000、GBK、BIG5(繁體)。其中GB2313只有幾千個漢字,而GBK則有2萬多漢字。
16、要顯示漢字,采用的方式如果用點陣的形式是不可取的,因為這無法查找漢字。采用的方式就是內碼系統(tǒng)。
GBK標準中,一個漢字對應2個字節(jié):前者稱為區(qū)(0x81~0xFE)后者為(0x40~0x7E)和(0x80~0xFE)。前者有126個區(qū),后者有190,那么可以顯示的漢字數量有126*190=23940個。
根據這兩個值用來查找字庫,字庫中存放的還是每個漢字的點陣數據。
這個字庫非常大,如果是16*16的字體,那么一個字體就需要32個字節(jié),如此說來需要23940*32=748K的空間,可見非常大,所以需要外部的Flash來存儲這個字庫。
17、由于漢字內碼系統(tǒng)不具有國際通用性,但是Unicode幾乎把所有的語言都放置進來,這樣在單片機中操作漢字時,就需要將GBK和Unicode轉化。
尤其是在FATFS中,創(chuàng)建中文文件名和讀取中文文件信息時需要將Unicode換轉為GBK后再進行修改操作,再反轉換成Unicode保存修改。
這么說,兩者的存在是由于標準的不統(tǒng)一,并且Unicode中只有6064個漢字,而GBK顯然是一種漢字擴展。
18、BMP圖片編碼的順序是從左到右,從下到上。
19、VS1053是一款高性能的數字音頻解碼芯片,從SD卡中將mp3等音樂音頻文件通過SPI送給VS1053后,由其進行音頻解碼,輸出音樂給耳機。
耳機驅動可以采用TDA1308芯片,這款芯片為AB類耳機驅動芯片。
20、IAP(In Application Programming)在應用編程是為了后期開發(fā)更新程序方便而提出的概念。具體的實現方法如下圖所示:
在普通編程中,flash中的code是通過JTAG和ISP等工具下載到單片機中。
而在IAP編程中,flash被分區(qū)為A和B兩個區(qū)域,A區(qū)域只允許用USB/USART等方式下載,此區(qū)域作為更新B區(qū)域的代碼用。
B區(qū)域則是用戶的code區(qū)域,真正的代碼在這里被執(zhí)行,放置的就是app。
上圖表示STM32正常運行的流程圖,可以看到上電復位后系統(tǒng)從0x80000004處開始運行程序,這里放置的是復位中斷向量,然后跳轉至復位中斷程序入口后再跳轉至main函數運行用戶的程序。
上圖表示加入IAP后的STM32程序運行流程圖。可以看到上電復位后跳到IAP程序的main函數處運行IAP過程(這個過程就是把下面灰底色塊的程序代碼燒進B區(qū)域à代碼更新)。
后面的過程和STM32正常運行一樣,如果出現中斷請求,還是跳轉到A區(qū)域中的中斷向量表中,然后再跳轉到B區(qū)域的中斷服務入口。
21、USB有四根線,VCC、GND、D+、D-。在USB主機上,D+和D-均通過一個15K的電阻接地,這樣兩條線均為低電平。
在USB設備中,對于高速設備會在D+通過一個1.5K的電阻接到VCC,而低俗設備會在D-通過一個1.5K的電阻接到VCC。
這樣主機就可以通過D+和D-的高電平的到來來檢測是否有設備接入,并且識別高低速設備。
22、UCOSII是一種實時操作系統(tǒng),具有執(zhí)行效率高、占有空間小(最小內核2KB)、實施性能優(yōu)良、擴展性強和移植性強等優(yōu)點。
UCOS具有多任務并發(fā)工作的特點(注意,任何時候只有一個任務能夠占用CPU。并發(fā)只是任務輪流占用CPU而不是同時工作)。
最大支持255個任務并發(fā)工作。
-
傳感器
+關注
關注
2551文章
51177瀏覽量
754281 -
存儲器
+關注
關注
38文章
7502瀏覽量
163937 -
加速度計
+關注
關注
6文章
702瀏覽量
45911
原文標題:STM32大神筆記,超詳細單片機學習匯總資料(干貨分享4)
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論