???? 微博: 小樣兒老師2015
關(guān)于
嚴(yán)格來說,本文題目應(yīng)該是我的單片機(jī)、DSP和ARM+Linux學(xué)習(xí)之路,但這個(gè)寫法實(shí)在太繞口——況且嵌入式往往暗指MCU,DSP,ARM等微處理器加上嵌入式操作系統(tǒng),所以我認(rèn)為本文題目是合理的。
這篇文章講了什么?
???? 我這些年學(xué)單片機(jī)、DSP和ARM+Linux的總結(jié)。
???? 一些不錯(cuò)的書籍和教程。
初學(xué)
第一次接觸單片機(jī)是在大一下學(xué)期,當(dāng)時(shí)和一同學(xué)腦洞大開要做一個(gè)世界上最輕的可折疊便攜電動(dòng)車——折疊好放在包里扛著就走的那種,靠著扯犢子的本事通過了學(xué)校的創(chuàng)新創(chuàng)業(yè)項(xiàng)目立項(xiàng),還給撥了經(jīng)費(fèi),分了實(shí)驗(yàn)室,實(shí)驗(yàn)室的指導(dǎo)老師讓學(xué)習(xí)51單片機(jī),由于當(dāng)時(shí)正忙著給淘寶開放平臺(tái)開發(fā)一個(gè)給淘寶賣家使用的平臺(tái)軟件,天天抱著一堆PHP開發(fā)的書再看,老師的話被傻逼的我扔在了一邊。
直到后來電動(dòng)車項(xiàng)目要開始動(dòng)手——而且經(jīng)過前一段時(shí)間的折騰證明了我以后還得靠嵌入式混飯吃,恍然發(fā)現(xiàn)我對(duì)于它的了解幾乎為零,于是我給自己制定了一個(gè)類似于建國(guó)初期五年計(jì)劃的讀書學(xué)習(xí)計(jì)劃,向當(dāng)時(shí)我認(rèn)為很牛的學(xué)長(zhǎng)和大神請(qǐng)教,選擇了一些靠譜的書籍和教程
新概念51單片機(jī)C語(yǔ)言教程

新概念51單片機(jī)C語(yǔ)言教程是我學(xué)習(xí)單片機(jī)的第一本書,從網(wǎng)上找了十天學(xué)會(huì)51單片機(jī)的視頻,懷著激動(dòng)的心情開始了學(xué)習(xí),看了一周發(fā)現(xiàn)完全沒有效果,并且書里一直在講一定要有硬件平臺(tái)進(jìn)行練習(xí),要親自動(dòng)手去做,花了100多塊大洋買了和視頻書籍配套的學(xué)習(xí)板,開始把書中講解的代碼依次敲了一邊,編譯調(diào)試無錯(cuò)誤,下載進(jìn)學(xué)習(xí)板看現(xiàn)象,不理解的地方就反復(fù)研讀,有錯(cuò)誤就反復(fù)調(diào)試,上網(wǎng)找解決辦法,后來證明很多錯(cuò)誤都是不細(xì)心造成的輸入錯(cuò)誤。通過這本書和配套視頻的學(xué)習(xí),單片機(jī)總算是入了門。
新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)

新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)是用匯編寫的一本書,可以當(dāng)做工具書來用,查詢配置51單片機(jī)常用的一些寄存器。通俗點(diǎn)說它用更易于初學(xué)者理解的語(yǔ)言講解了51單片機(jī)的數(shù)據(jù)手冊(cè)。曾經(jīng)有人問我學(xué)單片機(jī)有沒有必要學(xué)匯編,我的答案是完全沒必要,C語(yǔ)言就夠了,現(xiàn)在技術(shù)的發(fā)展已經(jīng)有支持高級(jí)語(yǔ)言C++開發(fā)的編譯器了,并且使用匯編開發(fā)的效率極低,可移植性差。
單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航

如果說新概念51單片機(jī)C語(yǔ)言教程是用于入門的書籍,那單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航可作為單片機(jī)進(jìn)階的書籍來看,書中的很多實(shí)例可以拿來直接使用于項(xiàng)目中。并且此書還提供源碼供參考,提高自己的工程應(yīng)用水平,此書值得一讀。我的電動(dòng)車項(xiàng)目中用到的一部分源碼就是來源于此。
? 借助這個(gè)讀書學(xué)習(xí)成長(zhǎng)計(jì)劃,我出色的完成了創(chuàng)新項(xiàng)目,作品被學(xué)校買走收藏,并且被系主任邀請(qǐng)進(jìn)入他的創(chuàng)新實(shí)驗(yàn)室,當(dāng)然這是后話。
編程語(yǔ)言的學(xué)習(xí)
嵌入式的學(xué)習(xí)是以C語(yǔ)言為核心的,無論是裸機(jī)程序,驅(qū)動(dòng)程序,還是嵌入式操作系統(tǒng),都是使用C語(yǔ)言進(jìn)行的開發(fā),少數(shù)涉及到使用C++,深厚的C語(yǔ)言功底是學(xué)習(xí)嵌入式必不可少的。
8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)

用于嵌入式開發(fā)的C語(yǔ)言跟通常使用的C語(yǔ)言還是有一點(diǎn)點(diǎn)區(qū)別的,但都大同小異,8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)除了能讓你了解用于單片機(jī)C語(yǔ)言之外,還講解了所有應(yīng)用于單片機(jī)的庫(kù)函數(shù),合理的使用庫(kù)函數(shù)能提升開發(fā)效率。
C和指針

C語(yǔ)言的精華所在就是指針,對(duì)于C語(yǔ)言初學(xué)者,最難得概念不僅僅是指針和數(shù)組,還有指向數(shù)組的指針和指向指針的指針,C和指針花了大量的篇幅和圖示來把這些難懂的概念講的清清楚楚。
C 陷阱與缺陷

書如其名,這本書介紹了 C 語(yǔ)言中常見的坑和一些稀奇古怪的編程“技巧”,不少刁鉆的C語(yǔ)言面試題都源自這本小冊(cè)子。
C專家編程

不要被標(biāo)題中的“專家”嚇到,這實(shí)際是一本很輕松的書籍,它既包含了大量 C 語(yǔ)言技術(shù)細(xì)節(jié)和編程技巧,也包含了很多有趣的編程軼事。
學(xué)習(xí)設(shè)計(jì)PCB
做嵌入式開發(fā),硬件平臺(tái)的設(shè)計(jì)是第一步,學(xué)習(xí)PCB設(shè)計(jì)沒有什么好辦法,看書,然后必須大量練習(xí),畫板,投板,在實(shí)踐中去慢慢理解體會(huì),初次接觸做PCB是進(jìn)入創(chuàng)新實(shí)驗(yàn)室,根據(jù)學(xué)長(zhǎng)留下的視頻教程算是入了門,使用的軟件是Altium Desigder 09,但是視頻教程講解的是DXP2004,Altium Desigder 09是DXP2004的升級(jí)版本軟件,視頻作為入門還是足夠用的。我會(huì)在下面放上視頻的連接,可自行下載。
鏈接:
https://pan.baidu.com/s/1jInXl5s 密碼: ui2q
?Altium Designer PCB畫板速成

Altium Designer PCB畫板速成是由一線的PCB工程師寫的一本書,實(shí)踐性極強(qiáng),可作為PCB設(shè)計(jì)的進(jìn)階書籍來使用。
Altium Designer Winter 09電路設(shè)計(jì)與仿真教程

Altium Designer Winter 09電路設(shè)計(jì)與仿真教程也是一本PCB進(jìn)階書籍,入了門之后的路就只能靠自己了,常言道師傅領(lǐng)進(jìn)門,修行在個(gè)人。多看書,多實(shí)踐??佳袕?fù)試時(shí)曾吹噓自己懂PCB設(shè)計(jì)以至于讀研期間導(dǎo)師讓我承包了實(shí)驗(yàn)室大部分PCB設(shè)計(jì)的工作。
如何看數(shù)據(jù)手冊(cè)Datasheet
學(xué)會(huì)看芯片手冊(cè)是嵌入式工程師必備的技能,不管什么芯片手冊(cè),英文的還是中文的,都只是使用說明書而已。而說明書一個(gè)最顯著的特點(diǎn)就是必須盡可能地使用通俗易懂的語(yǔ)句,向使用者交代清楚該產(chǎn)品的特點(diǎn)、功能以及使用方法。如果是英文手冊(cè),運(yùn)用在大學(xué)里所學(xué)到的那些英文知識(shí)去分析這些手冊(cè),足矣。
Datasheet閱讀步驟及要領(lǐng):
①先看看芯片的特性(Features)、應(yīng)用場(chǎng)合(Applications)以及內(nèi)部框圖。先做一個(gè)宏觀的了解,此時(shí)需要弄清楚該芯片的一些比較特殊的功能,充分利用芯片的特殊功能,對(duì)整體電路的設(shè)計(jì),將會(huì)有極大的好處。比如AD9945可以實(shí)現(xiàn)相關(guān)雙采樣(CDS),這可以簡(jiǎn)化后續(xù)信號(hào)調(diào)理電路,并且抵抗噪聲的效果還好
②重點(diǎn)關(guān)注芯片的參數(shù),同時(shí)可以參考手冊(cè)給出的一些參數(shù)圖(如AD9945的TPC
1,TPC2等),這是我們是否采用該芯片的重要依據(jù)。像AD9945,可關(guān)注采樣率(maximum clock
rate)、數(shù)據(jù)位數(shù)(AD converter)、功耗(Power
consumption)、可調(diào)增益范圍(gain range)等
③選定器件后,研究芯片管腳定義、推薦的PCB layout,這些都是在硬件設(shè)計(jì)過程中必須掌握的。所有管腳中,要特別留意控制信號(hào)引腳或者特殊信號(hào)引腳,這是將來用好該芯片的前提。比如AD9945的SHP、SHD、PBLK、CLPOB等
④認(rèn)真研讀芯片內(nèi)部寄存器,對(duì)寄存器的理解程度,直接決定了你對(duì)該芯片的掌握程度。比如AD9945就有4個(gè)寄存器:Operation、Control、Clamp
Level和VGA gain,對(duì)于這些寄存器,必須清楚它們上電后的初始值、所能實(shí)現(xiàn)的功能、每個(gè)bit所代表的含義這些基本情況
⑤仔細(xì)研究手冊(cè)給出的時(shí)序圖,這是對(duì)芯片進(jìn)行正確操作的關(guān)鍵。單個(gè)信號(hào)的周期、上升時(shí)間、下降時(shí)間、建立時(shí)間、保持時(shí)間,以及信號(hào)之間的相位關(guān)系,所有這些都必須研究透徹。像AD9945的Figure
8 和Figure 9 就很值得花費(fèi)時(shí)間去仔細(xì)研究
特別提示:
凡是芯片數(shù)據(jù)手冊(cè)中的“note”,都必須仔細(xì)閱讀,一般這都是能否正確使用、或能否把芯片用好的關(guān)鍵之所在。
歸納:
第一:先找個(gè)有中文版本手冊(cè)的芯片,把中英文對(duì)照著看,熟悉英文手冊(cè)的描述風(fēng)格
第二:仔細(xì)看看芯片的原理框圖,弄明白他的內(nèi)部結(jié)構(gòu),都哪些功能電路,該芯片能實(shí)現(xiàn)哪些功能
第三:重點(diǎn)關(guān)注芯片的參數(shù),這是你是否選用該芯片的重要參考
第四:選定器件后,看看管腳定義、推薦的PCB layout,這是在作硬件電路設(shè)計(jì)時(shí)必須掌握的
第五:認(rèn)真研讀芯片內(nèi)部寄存器,對(duì)寄存器的理解程度,直接決定了你對(duì)該芯片的掌握程度
(未完待續(xù)………..)