單片機(jī)是什么
1 從電路到集成電路
1.1 電路發(fā)展變化的趨勢
(1)功率。電子設(shè)備越來越省電,待機(jī)時間越來越長,工作電壓越來越低。
(2)體積。體積越來越小。
(3)功能。功能越來越強(qiáng)大。
1.2 微器件的出現(xiàn)
(1)電路的核心:開關(guān)控制、倍率控制。
(2)電子管、晶體管等。
1.3 集成電路的出現(xiàn)
(1)IC(integrated circuit,集成電路),就是使用微器件為積木,去搭建具備一定功能的一個電路板。
(2)以前沒有微器件的時候,必須很大一塊電路板才能實現(xiàn)一個電路功能(譬如一個加法器,完成加法運算)。然后有了微器件之后,這個電路板的體積變小了,越來越小,最后小到mm級別甚至更小,我們就把這個電路做在一起,用塑料外殼封裝起來就形成了大家看到的IC芯片。
(3)芯片(IC、集成電路)其實就是:里面餡是電路,外面的殼就是絕緣體殼,里面的電路通過外殼上引出來的一些引腳(金屬材料的)來與IC外部接軌。
(4)IC有多少個引腳,每一個引腳的作用是干嘛的,是IC設(shè)計制造的時候就已經(jīng)決定的,我們拿到IC使用時要去讀IC的數(shù)據(jù)手冊來知道這個引腳怎么用。
2 計算機(jī)的核心設(shè)備CPU
CPU就是一塊超大規(guī)模集成電路,CPU的本質(zhì)就是電路。
2.1 CPU(Central Processing Unit,中央處理器)
(1)CPU = 運算器 + 控制器
(2)CPU = ALU + cache + Bus
(3)CPU = 匯編指令 + 寄存器
2.2 CPU的工作原理
(1)CPU通過總線從存儲器取出指令到內(nèi)部,然后譯碼,然后執(zhí)行。
(2)一條指令包括:指令碼+數(shù)據(jù)。
(3)執(zhí)行指令反應(yīng)為一個控制操作或者一個數(shù)學(xué)運算。
(4)給單片機(jī)編程其實就是給CPU寫指令序列。
3 給單片機(jī)下個定義
3.1 計算機(jī)系統(tǒng)三大組成部分:CPU、內(nèi)部存儲器、IO
(1)單片機(jī)屬于計算機(jī)的一種。
(2)IO就是input/output,也就是輸入輸出。譬如鍵盤、鼠標(biāo)、觸摸屏等就是輸入設(shè)備,而LCD顯示器、聲卡等就是輸出設(shè)備。
3.2 單片機(jī)的結(jié)構(gòu)框圖分析
(1)我們來看單片機(jī)這個計算機(jī)系統(tǒng)的結(jié)構(gòu)框圖。
(2)框圖中的方塊是組成部件、箭頭表示總線Bus。
(3)CPU處于單片機(jī)系統(tǒng)的核心位置,別的模塊都通過總線和CPU進(jìn)行關(guān)聯(lián)。別的模塊之間一般沒有總線直接相連,有時候2個互相有關(guān)系的模塊也會有總線直接相連。
(4)IO其實就是芯片上的引腳,不同的單片機(jī)型號有不同的IO數(shù)量和定義。
3.3 如何定義單片機(jī)
(1)單片機(jī)就是一臺微型計算機(jī)。
(2)臺式電腦或者筆記本電腦(這種計算機(jī)叫PC)也是一種計算機(jī)系統(tǒng),這種計算機(jī)系統(tǒng)由很多個零部件組成。這些零部件由不同的廠商生產(chǎn),可以去組合組裝成一臺電腦。
(3)單片機(jī)這臺計算機(jī)的所有零件全部做在了一個IC內(nèi)部,并且出廠前被塑料殼封裝起來了。傳統(tǒng)計算機(jī)中的主要部件單片機(jī)都有,都集成到內(nèi)部去了。
(4)MCU的概念(參考百度百科詞條:MCU),所以說大家看到:單片機(jī)、單片微型計算機(jī)、MCU、微控制器、微控制單元等,都是一個意思。
微控制單元(Microcontroller Unit;MCU) ,又稱單片微型計算機(jī)(Single Chip Microcomputer )或者單片機(jī),是把中央處理器(Central Process Unit;CPU)的頻率與規(guī)格做適當(dāng)縮減,并將內(nèi)存(memory)、計數(shù)器(Timer)、USB、A/D轉(zhuǎn)換、UART、PLC、DMA等周邊接口,甚至LCD驅(qū)動電路都整合在單一芯片上,形成芯片級的計算機(jī),為不同的應(yīng)用場合做不同組合控制。諸如手機(jī)、PC外圍、遙控器,至汽車電子、工業(yè)上的步進(jìn)馬達(dá)、機(jī)器手臂的控制等,都可見到MCU的身影。
4 ROM與RAM
4.1 計算機(jī)中的2種存儲器
(1)計算機(jī)要存儲器干嘛
(2)內(nèi)存:內(nèi)存和CPU接軌比較緊密,內(nèi)存可以被CPU直接訪問,內(nèi)存可以按照字節(jié)為單位來隨機(jī)訪問、程序運行時離不開內(nèi)存、程序中的變量都是定義在內(nèi)存中的。內(nèi)存受限于物理技術(shù)和成本,容量比較小而貴;內(nèi)存速度比外存快很多,CPU的速度比內(nèi)存的速度快好多。
(3)外存:外存和CPU之間比較遠(yuǎn),外存不可以被CPU直接訪問,外存一般以塊為單位來訪問,不能以字節(jié)為單位隨機(jī)訪問。外存容量大而便宜,外存速度比內(nèi)存慢好多。
(4)綜合來說,計算機(jī)系統(tǒng)是這樣工作的:文件和數(shù)據(jù)不用的時候就放在外存中,要用的時候從外存讀取到內(nèi)存,然后CPU再從內(nèi)存中讀取數(shù)據(jù)來直接使用。
4.2 ROM
(1)read only memory,只讀存儲器,意思是只能讀不能寫。實際上世界上根本不存在真正的只能讀不能寫的器件,我們ROM這里的只讀意思是:程序運行時只能通過程序自己本身的操作去讀而不能寫。
(2)常見的ROM:單片機(jī)中用來存儲用戶燒錄的程序的器件就是ROM,燒錄的過程其實就是在寫ROM,但是程序運行時是不能修改ROM內(nèi)容的。燒錄程序一般要通過燒錄器來完成。
(3)storage,存儲器,含義有點像倉庫存儲東西。ROM就有點類似于倉庫,用來存儲程序代碼。
(4)ROM有點像外存的概念,但是并不完全相等。主要是因為計算機(jī)系統(tǒng)有不同的設(shè)計方法,譬如PC機(jī)和單片機(jī)的設(shè)計就不相同。PC機(jī)中有外存沒有ROM,單片機(jī)中有ROM沒有外存。單片機(jī)中程序平時是存儲在ROM中,運行時由ROM直接供給CPU。
4.3 RAM
(1)random access memory,隨機(jī)訪問存儲器。
(2)常見的RAM:從物理上來講,主要分為SRAM和DRAM,單片機(jī)中一般使用的都是SRAM,嵌入式SoC中和PC機(jī)中用的都是DRAM。
(3)memory,存儲器,專指的是計算機(jī)的內(nèi)存。
4.4 單片機(jī)中的ROM和RAM
(1)單片機(jī)中的ROM一般是Flash(閃存),有些地方會看到叫flash memory;單片機(jī)中的RAM一般都是SRAM;這兩個共同構(gòu)成單片機(jī)中的存儲體系。
(2)ROM和RAM的協(xié)同工作方式是:ROM用來存儲用戶寫好編譯好的程序,運行時CPU直接從ROM中讀取一條一條的指令來運行,指令運行過程中產(chǎn)生的臨時數(shù)據(jù)放在RAM中。所以基本可以理解為:ROM是單片機(jī)用來放程序的,RAM是用來放數(shù)據(jù)的。
5 單片機(jī)的工作原理
5.1 主要器件負(fù)責(zé)干嘛?CPU、存儲器、IO
5.2 統(tǒng)一的時鐘節(jié)拍
(1)這里有一個概念叫:同步。同步就是好多個獨立的部分按照同一個節(jié)奏步調(diào)來動,以此來實現(xiàn)一個配合。
(2)和同步相對的一個概念叫異步,異步就是各自干各自的。
(3)單片機(jī)的各個模塊之間是同步工作的,CPU和存儲器和IO和單片機(jī)中其他東西這些模塊之間通過一個統(tǒng)一的節(jié)拍來同步工作,這個統(tǒng)一節(jié)拍就是單片機(jī)的時鐘。
(4)這個時鐘節(jié)拍對單片機(jī)很重要,單片機(jī)內(nèi)部在一個時鐘節(jié)拍中只能做一件事情。所以單片機(jī)要發(fā)生一些變化或者做一些事情,最小的時間單位就是1個時鐘節(jié)拍。單片機(jī)的時間單位都是時鐘節(jié)拍的整數(shù)倍。
(5)單片機(jī)中的CPU、存儲器、IO等都是以時鐘節(jié)拍為動作節(jié)拍的,所以單片機(jī)是一個同步系統(tǒng)。
(6)時鐘周期的長度(時鐘節(jié)拍的快慢)影響了單片機(jī)的速度,所以這個時鐘就叫做單片機(jī)的主頻。主頻越高性能越高,一般PC的主頻都是2G多3G多,51單片機(jī)的主頻MHz級別。一般手機(jī)CPU的主頻也在1G-2G左右。一般高級單片機(jī)如STM32的主頻在百MHz級別。
6 外設(shè)與內(nèi)部外設(shè)
6.1 什么是外設(shè)
(1)外設(shè)英文叫 peripheral ,全稱為外部設(shè)備。屬于單片機(jī)中的模塊。
(2)單片機(jī)中除了三大部件(CPU、IO、存儲器)外,還有一些別的東西,譬如串口控制器、譬如I2C控制器等····這些東西就叫外設(shè)。
(3)早期單片機(jī)功能很弱小,不具備很多功能(譬如中斷功能、譬如串口通信功能),那我們用單片機(jī)做產(chǎn)品,只能外部擴(kuò)展一些專用芯片(中斷控制有中斷控制器芯片,串口通信我們有串口通信芯片)來和單片機(jī)結(jié)合(做到一塊電路板上用導(dǎo)線連接)起來工作。這種產(chǎn)品設(shè)計中核心部分就是單片機(jī),外部配合的這些專用芯片就是外部設(shè)備,簡稱外設(shè)。
(4)后來隨著半導(dǎo)體工業(yè)發(fā)展進(jìn)化,集成電路的集成能力變強(qiáng)大了,我們干脆就把一些常用的外設(shè)直接集成到單片機(jī)里邊去了。所以單片機(jī)里邊就有了一些原來被稱為外設(shè)的東西,但是叫法名稱還是沿用了開始的名稱。
6.2 什么叫內(nèi)部外設(shè)
(1)我為了區(qū)分外設(shè),將集成到單片機(jī)里邊的外設(shè)叫做內(nèi)部外設(shè)。
(2)還有外部外設(shè),就是至今仍然沒有集成到單片機(jī)內(nèi)部,還在外部的那些外設(shè)。
7 單片機(jī)與電路板
7.1 什么是電路板(PCB printed circuit board,印刷電路板)
(1)外觀:PCB板 = 基板(絕緣)+電路。
(2)作用:PCB的作用就是骨架和連接。最終目的就是把所有的元件按照正確的電路圖連接起來形成一個完整的可以工作的電路。
(3)構(gòu)成和材質(zhì),常用的基板材質(zhì)都是FR4(玻璃纖維),PCB板是由多層構(gòu)成的(單面板、雙面板、四層板、8層板、12層、16層、24層)。
(4)印刷電路其實就是在不導(dǎo)電的基板表面按照電路構(gòu)成來印刷一層導(dǎo)電物質(zhì)形成電路。最后形成的就是一個里面的芯是不導(dǎo)電的FR4,外面有一層構(gòu)成了電路的銅(標(biāo)準(zhǔn)術(shù)語叫覆銅),為了避免銅氧化或者與外部導(dǎo)電外部還有一層油墨,刷油墨時要露出來焊接點(焊接點一般有2種:一種是插針式、一種是貼片式),焊接點上本來就是銅,但是我們?yōu)榱朔奖愫附右话銜鲥冨a。
(5)PCB板其實就是硬件電路(元件和電路設(shè)計)的載體。
7.2 什么是芯片
(1)芯片就是:芯是半導(dǎo)體技術(shù)形成的電路,外面的殼是塑料絕緣殼,里面電路通過芯片引腳接出來用于連接外部電路。
7.3 芯片方式和電路板方式的關(guān)系
(1)相同點。芯片其實就是一個微型的電路板。這兩個東西本身一模一樣,早期只有電路板沒有芯片,后來半導(dǎo)體工藝發(fā)展后有了微型器件,所以人把一些電路利用半導(dǎo)體工藝直接作死到一個芯片中去形成了IC。
(2)不同點。電路板體積較大,功率大;芯片體積小,功率小。
(3)我們做一個電子產(chǎn)品究竟應(yīng)該如何去總體設(shè)計?現(xiàn)代的設(shè)計方案都是芯片+電路板。能做到芯片里面的都做進(jìn)去(趨勢是越來越進(jìn)去的多),實在不能做成芯片的就只好放在外面。原來的產(chǎn)品,譬如老式大屁股電視機(jī)主板非常大,而新式的智能電視機(jī)主板就是一個大芯片+很少的外圍設(shè)備。
(4)單片機(jī)開發(fā)板其實就是PCB板主板+單片機(jī)芯片+其他芯片+其他外圍電路元器件總體構(gòu)成的。這就是普遍的電子產(chǎn)品的結(jié)構(gòu)。
8 軟件與硬件的區(qū)別和聯(lián)系
8.1 從產(chǎn)品角度
(1)硬件是?產(chǎn)品的載體和身體。
(2)軟件是?產(chǎn)品的思維和靈魂、精神。
8.2 軟硬結(jié)合
(1)物聯(lián)網(wǎng)不能靠純軟件打造。
(2)純硬件產(chǎn)品大部分都低端。
9 硬件工程師主要工作職責(zé)
電路圖的分析和設(shè)計
原件的選擇和參數(shù)確定
PCB的設(shè)計和樣板焊接、調(diào)試
生產(chǎn)跟蹤和問題解決
10 軟件工程師主要工作職責(zé)
初級軟件工程師:輔助測試、寫代碼、維護(hù)
中級軟件工程師:獨立工作、對產(chǎn)品負(fù)責(zé)、解bug
高級軟件工程師:需求分析、框架設(shè)計、團(tuán)隊管理
軟件工程師成長路線:學(xué)到基礎(chǔ)(知識+能力)->找到工作->學(xué)習(xí)和鍛煉->中級->高級/轉(zhuǎn)方向
11 datasheet的重要性
11.1 什么是datasheet
(1)datasheet就是數(shù)據(jù)手冊,其實就是芯片的文檔。
(2)數(shù)據(jù)手冊中描述的都是這個芯片/器件的物理參數(shù)、電學(xué)參數(shù)、時序圖、編程需要的信息、別的信息??偟膩碚f這個芯片的所有有用的信息都在數(shù)據(jù)手冊中,使用這顆芯片過程中的任何疑問都可以去datasheet中查詢。
(3)我們學(xué)習(xí)單片機(jī)軟件開發(fā)過程中,要不斷去查詢各種芯片的數(shù)據(jù)手冊以獲取一些有效信息來指導(dǎo)我們。
11.2 datasheet誰寫的?
(1)datasheet是由芯片廠商提供的。datasheet其實就是芯片的產(chǎn)品說明書。
11.3 datasheet從哪里來?
(1)最官方最權(quán)威的途徑就是到芯片廠商的官方網(wǎng)站去下載。
(2)開發(fā)板附帶的光盤資料中一般也會有。
(3)將芯片型號信息敲到百度去搜索其數(shù)據(jù)手冊。
11.4 datasheet應(yīng)該怎么使用?
(1)數(shù)據(jù)手冊不是書,更不是教材,數(shù)據(jù)手冊更像是一本字典。所以不是從第一頁看到最后一頁,更不用試圖是記住。
(2)數(shù)據(jù)手冊一定要先瀏覽一遍。尤其對于剛開始學(xué)習(xí)的人。瀏覽的目的是大概知道什么東西在哪里(將來用到時大概知道到哪里去找),里面一些概念基本理解,但是并不是為了記住。
(3)數(shù)據(jù)手冊的正確用法就是:前面先簡單看一遍(其中的前面一些可以認(rèn)真看,后面的了解即可),用到某個具體知識時再根據(jù)前面瀏覽時的了解去具體查找數(shù)據(jù)手冊中相關(guān)部分,這時候再去認(rèn)真看。
12 原理圖和PCB圖
12.1 原理圖
(1)原理圖叫電路原理設(shè)計圖,就是用符號來繪制出的電路連接的邏輯圖。我們平時講的電路圖其實就是原理圖。原理圖不是實物。
(2)原理圖由:線條、方框、圓圈、數(shù)字、字母等組成??炊@些符號所對應(yīng)的電路實物,就能看懂原理圖。
(3)原理圖中每一個符號表達(dá)一種含義,常見的有:
直線:表示導(dǎo)線,是用來連接元件構(gòu)成電路的。
方框:表示器件,如IC、插座
常見符號:如電阻、電容、三極管等···
特殊符號:不常見器件
(4)原理圖中的每一個器件都有一個編號,如IC都用Un(U1、U2等),電容都用Cn(C1、C2)····這個編號在原理圖中是唯一的,這個編號用來表示/記錄這個元器件。
(5)原理圖中芯片類型的器件還會有一個名字,名字一般是器件的型號。
(6)原理圖中大多數(shù)器件還有一個參數(shù)值,譬如電容的容量、電阻的阻值等。
(7)有些器件(IC、插座)有引腳,引腳編號用數(shù)字表示。
(8)原理圖中有個網(wǎng)絡(luò)的概念,原理圖上2個編號一樣的節(jié)點其實在邏輯上是連在一起的。網(wǎng)絡(luò)的發(fā)明純粹是為了方便畫圖,讓圖不會導(dǎo)線連接的跟蜘蛛網(wǎng)一樣。分析原理圖時一定要注意網(wǎng)絡(luò),否則看到的可能就是一半的原理圖。
12.2 PCB圖
(1)硬件工程師在設(shè)計產(chǎn)品硬件時的步驟是:先有原理圖,然后用原理圖畫出PCB圖。
(2)PCB圖是原理圖和實際器件結(jié)合起來后,生成的PCB板的結(jié)構(gòu)圖紙,PCB圖的作用就是拿給做PCB板的廠商去印刷電路板。
(3)對于軟件工程師來說,PCB圖完全不用去關(guān)注,我們只關(guān)注原理圖。
12.3 BOM表
(1)BOM就是bills of meterials,就是物料表,物料表是整個電路中用到的所有物料的一張清單。
(2)BOM表是研發(fā)部門(硬件工程師)提供,一般是給生產(chǎn)部門來備料、記錄用的。
(3)BOM中每個物料的記錄和對應(yīng)就靠物料編號。