單片機(jī)應(yīng)用編程技巧問答(四)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
51. 如何理解如下概念:
MTP = Multi-Time Programming (via parallel programmer)
ISP = In-System Programming (via serial interface)
IAP = In-Application Programming ?
答:MTP即指單片機(jī)的程序可重復(fù)燒寫,其程序記憶體(Program ROM)可分以下幾種:
Window with EPROM:提供使用者更改程式的空間,具視窗式陶瓷包裝,利用紫外線燈清除資料,可重復(fù)燒寫,但包裝成本非常高,僅適合小量生產(chǎn)或?qū)嶒?yàn)使用。
EEPROM:屬于可重復(fù)寫入/清除之元件,此類記憶體使得程式之內(nèi)容可加以清除或修改,而無需使用開窗之包裝,可節(jié)省包裝之成本,亦方便重復(fù)使用,但生產(chǎn)制程較復(fù)雜。
Flash EPROM:當(dāng)須要清除/寫入較大量的非揮發(fā)性程式記憶體時(shí),F(xiàn)lash EPROM比傳統(tǒng)式EEPROM可提供較好的解決之道,因?yàn)镕lash EPROM較EEPROM于清除/寫入周期次數(shù)及速度上表現(xiàn)更好。利用Flash ROM來當(dāng)作程式記憶體,由于封裝上不需要EPROM特殊的視窗式陶瓷包裝,使用上價(jià)格與OTP(One Time Programming)相差不大,相當(dāng)合理,又具有多次重復(fù)燒寫的功能。
ISP(In-System Programming)在系統(tǒng)可編程,指電路板上的空白器件可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式 擦除或再編程。ISP的實(shí)現(xiàn)相對(duì)要簡(jiǎn)單一些,一般需要很少的外部電路輔助實(shí)現(xiàn),通用做法是內(nèi)部的記憶體可以由上位機(jī)的軟體通過串口來進(jìn)行改寫。對(duì)于單片機(jī) 來講可以通過SPI或其他的串列介面接收上位機(jī)傳來的資料并寫入記憶體中。所以即使我們將晶片焊接在電路板上,只要留出和上位機(jī)介面的這個(gè)串口,就可以實(shí) 現(xiàn)晶片內(nèi)部記憶體的改寫,而無須再取下晶片。
ISP的優(yōu)點(diǎn) ISP技術(shù)的優(yōu)勢(shì)是不需要編程器就可以進(jìn)行單片機(jī)的實(shí)驗(yàn)和開發(fā),單片機(jī)晶片可以直接焊接到電路板上,調(diào)試結(jié)束即成成品,免去了調(diào)試時(shí)由于頻繁地插入取出晶片對(duì)晶片和電路板帶來的不便。
IAP(In-Application Programming)指MCU可以在系統(tǒng)中獲取新代碼并對(duì)自己重新編程,即可用程式來改變程式。IAP的實(shí)現(xiàn)相對(duì)要復(fù)雜一些,在實(shí)現(xiàn)IAP功能時(shí),單 片機(jī)內(nèi)部一定要有兩塊存儲(chǔ)區(qū),一般一塊被稱為BOOT區(qū),另外一塊被稱為存儲(chǔ)區(qū)。單片機(jī)上電運(yùn)行在BOOT區(qū),如果有外部改寫程式的條件滿足,則對(duì)存儲(chǔ)區(qū) 的程式進(jìn)行改寫操作。如果外部改寫程式的條件不滿足,程式指標(biāo)跳到存儲(chǔ)區(qū),開始執(zhí)行放在存儲(chǔ)區(qū)的程式,這樣便實(shí)現(xiàn)了IAP功能。IAP技術(shù)是從結(jié)構(gòu)上將 Flash記憶體映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程式時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將程式從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一個(gè)。
IAP的優(yōu)點(diǎn) IAP技術(shù)是從結(jié)構(gòu)上將Flash記憶體映射為兩個(gè)存儲(chǔ)體,當(dāng)運(yùn)行一個(gè)存儲(chǔ)體上的用戶程式時(shí),可對(duì)另一個(gè)存儲(chǔ)體重新編程,之后將程式從一個(gè)存儲(chǔ)體轉(zhuǎn)向另一 個(gè)。而IAP的實(shí)現(xiàn)更加靈活,通??衫脝纹瑱C(jī)的串列口接到電腦的RS232口,通過專門設(shè)計(jì)的固件程式來編程內(nèi)部記憶體,可以通過現(xiàn)有的 INTERNET或其他通訊方式很方便地實(shí)現(xiàn)遠(yuǎn)端升級(jí)和維護(hù)。
52. 目前市場(chǎng)上單片機(jī)開發(fā)系統(tǒng)產(chǎn)品型號(hào)很多。想開發(fā)51系列單片機(jī),選用什么型號(hào)的仿真器和編程器(每次編一片即可)比較好?
答:正如您所說的現(xiàn)在51系列單片機(jī)的仿真器產(chǎn)品型號(hào)很多,關(guān)于選用什么型號(hào)的仿真器,因?yàn)镠OLTEK的IC不是51內(nèi)核,仿真器都是 HOLTEK自行開發(fā),故并不能給你非常好的建議。而且市面的51仿真器,林林總總1500--10000價(jià)格不等,所以要選擇的話可以在網(wǎng)上 google一下有關(guān)仿真器的論壇,看看其他用戶的評(píng)價(jià),選擇一個(gè)性價(jià)比最好的仿真器。
53. HOLTEK的C語言是否有關(guān)于位操作和讀定義的寄存器地址的指令,如果有,它們是什么?
答:HOLTEK的C語言與標(biāo)準(zhǔn)C類似,不僅有標(biāo)準(zhǔn)C的位操作、&(按位與、按位或)、^(按位異或)、~(取反)、<<(左 移)和>>(右移);還有相應(yīng)的內(nèi)建函數(shù)實(shí)現(xiàn)對(duì)整型和長(zhǎng)整型的帶和不帶進(jìn)位C的左移和右移。對(duì)已定義變量的地址的操作也與標(biāo)準(zhǔn)C相同,可通過 指針運(yùn)算符 * 和 & 來實(shí)現(xiàn)。
54. 在完成程序編寫運(yùn)行以后看到的結(jié)果是存儲(chǔ)器中從R0到R7都被占用,而我根本就沒用到幾個(gè),這是為什么?
答:要看用的是什么型號(hào)的單片機(jī),不同型號(hào)的單片機(jī)R0到R7的定義是不同的。如果R0~R7是被定義成特殊寄存器的話,那么運(yùn)行過程中自然會(huì)影響 到這些寄存器,例如執(zhí)行運(yùn)算程序就會(huì)影響狀態(tài)特殊寄存器的值。如果R0~R7是被定義成通用寄存器的話,那么可能就是在程序的開頭沒有初始化,單片機(jī)在上 電復(fù)位時(shí),通用寄存器的值通常是隨機(jī)的。
55. 請(qǐng)推薦一些比較好的理論及實(shí)踐教材,以其配套的編譯仿真燒錄的硬軟件?
答:當(dāng)今單片機(jī)市場(chǎng)種類繁多,應(yīng)用廣泛。以HOLTEK公司為例。HOTLEK的單片機(jī)是RISC結(jié)構(gòu)的8位單片機(jī),它可以廣泛應(yīng)用在家用電器、安 全系統(tǒng)、掌上游戲等方面。大概來說可以分成I/O型單片機(jī)、LCD型單片機(jī)、A/D型單片機(jī)、A/D with LCD型單片機(jī)等等。
56. 將PWM做到100kHz(8bit以上)的方法有哪些?最好是支持C編譯的。
答:要做到PWM頻率100kHz(8bit)以上,單片機(jī)的頻率要求100kHz*256=25。6MHz。所以,要實(shí)現(xiàn)這種要求的單片機(jī)需要滿 足兩個(gè)條件:1。單片機(jī)有PWM輸出;2。系統(tǒng)頻率達(dá)到25。6MHz,或者單片機(jī)內(nèi)部能自己提供25。6MHz的頻率(ATtiny15內(nèi)部就有提供一 個(gè)25。6MHz的頻率做為定時(shí)/計(jì)數(shù)器的時(shí)鐘)。
57. ARM董事長(zhǎng)認(rèn)為,醫(yī)療電子將成為下一個(gè)10年推動(dòng)電子產(chǎn)業(yè)增長(zhǎng)的動(dòng)力,EMS預(yù)測(cè)醫(yī)療電子將成為最大的代工市場(chǎng)。藍(lán)牙使醫(yī)療產(chǎn)品移動(dòng)能力增強(qiáng)將會(huì)廣泛應(yīng)用,那么隨著醫(yī)療電子發(fā)展,單片機(jī)在這一領(lǐng)域應(yīng)用會(huì)變大嗎?醫(yī)療電子應(yīng)用的最多是幾位單片機(jī)?
答:隨著16/32位嵌入式RISC發(fā)展,是會(huì)擴(kuò)大醫(yī)療電子領(lǐng)域的應(yīng)用。
一般的電子醫(yī)療保健系列產(chǎn)品有如下: 筆式電子體溫計(jì)、嬰兒奶嘴式電子體溫計(jì)、測(cè)溫音樂奶瓶、婦女電子體溫計(jì),電子血壓計(jì)等系列產(chǎn)品,在醫(yī)療電子儀器有酸堿度測(cè)定器,比色計(jì)等此類產(chǎn)品可用8位單片機(jī)來完成。
但從研究制造方面來說,針對(duì)醫(yī)療電子儀器,目前已有廠商制造心電圖機(jī)、酸堿度測(cè)定器、電子測(cè)溫計(jì)等儀器,儀器中心可自制示波器 (oscilloscope)、顯微鏡等,以及X光機(jī)、超聲診斷儀、電腦斷層成像系統(tǒng)、心臟起博器、監(jiān)護(hù)儀、輔助診斷系統(tǒng)、專家系統(tǒng)等,較大型復(fù)制的醫(yī)療 嵌入式系統(tǒng)電子儀器就須用上16位,32位單片機(jī)來完成。
58. 普通商業(yè)級(jí)單片機(jī)的使用溫度范圍為0-70度,在低于0度和高于70度環(huán)境中使用會(huì)出現(xiàn)什么問題?商業(yè)級(jí)芯片和工業(yè)及芯片除溫度范圍不同外,在其他方面還有區(qū)別嗎?(如抗干擾性能)
答:一般單片機(jī)根據(jù)工作溫度可分為民用級(jí)(商業(yè)級(jí))、工業(yè)級(jí)和軍用級(jí)三種:民用級(jí)的溫度范圍是0℃~70℃,工業(yè)級(jí)是-40℃~85℃,其 HOLTEK的MCU就屬于此項(xiàng)等級(jí),軍用級(jí)是-55℃~125℃。如果是一般普通商業(yè)級(jí)單片機(jī),在超規(guī)格范圍使用IC時(shí),就有可能部份IC無法工作,或 工作運(yùn)作不正常等發(fā)生。
至于抗干擾性能,是屬于整個(gè)產(chǎn)品的EMS(電磁雜訊耐受性)檢測(cè),它是EMC(電磁相容)中的一項(xiàng)檢測(cè), 另一項(xiàng)是EMI(電磁輻射干擾)。各國(guó)都有其EMC認(rèn)證標(biāo)準(zhǔn),例如目前在歐洲EMC指令下常用的測(cè)試規(guī)范下,針對(duì)其中法規(guī)EN61000-4-2是做靜電 試驗(yàn)(ESD),本項(xiàng)試驗(yàn)?zāi)康臑闇y(cè)試試件承受直接來自操作者及相對(duì)物件所產(chǎn)生之靜電放電效應(yīng)的程度,其法規(guī)范如下:
Air Discharge
Leve1 2KV
Leve2 4KV
Leve3 8KV
Leve4 15KV
以上是舉個(gè)例子,就如抗靜電能力,不只跟IC性能有關(guān),也跟應(yīng)用電路及PCB Layout有直接關(guān)聯(lián)。
59. 各種各樣的輸入怎么樣與MCU進(jìn)行通訊?
答:首先必須確定此類輸入信號(hào)是否與MCU系統(tǒng)的信號(hào)電平兼容,如果不兼容,則需要外接電路或用集成塊來完成電平轉(zhuǎn)換。其次就是選擇通訊方式,通信 的基本方式分為并行通信和串行通信,兩者各有其優(yōu)劣,并行通信速度快,缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳輸線。這在位數(shù)較多,傳輸距離又遠(yuǎn)時(shí)就不太適 宜;而串行通信與前者相反,傳輸成本低,但是傳送速度較低。最后,為了確保通信的成功,通信雙方必須有一系列的約定,即通信協(xié)議,它對(duì)什么時(shí)候開始通信、 什么時(shí)候結(jié)束通信、何時(shí)交換信息等問題都必須作出明確的規(guī)定。
60. 那種型號(hào)的51單片機(jī)具有兩個(gè)串口、16KEPROM、512個(gè)字節(jié)的RAM?
答:PHILIPS半導(dǎo)體的P87C591應(yīng)該能滿足此條件,目前生產(chǎn)51單片機(jī)的半導(dǎo)體廠家有INTEL、ATMEL、PHILIPS、ANANOG DEVICES、DALLAS等,可以登陸其網(wǎng)站,查詢相應(yīng)的產(chǎn)品信息。
61. 在嵌入式開發(fā)中軟件抗干擾有哪些問題?如何解決?
答:關(guān)于軟件抗干擾問題和策略,如果在實(shí)際應(yīng)用中能很好的遵循這些原則,再配合硬件電路的抗干擾措施,基本上可以消除干擾影響。但有時(shí)往往因?yàn)槌绦?本身的復(fù)雜度和芯片資源的限制,再加上編程人員本身的能力限制,不能做到十分完善。所以我們只能給出一些建議,至于具體的實(shí)現(xiàn),就需要各位在平時(shí)的項(xiàng)目實(shí) 踐中不斷的摸索和積累經(jīng)驗(yàn)。以下是之前有關(guān)軟件抗干擾的問題答復(fù),謹(jǐn)供參考:
防止干擾最有效的方法是去除干擾源、隔斷干擾路徑,但往往很難做到,所以只能看單片機(jī)抗干擾能力夠不夠強(qiáng)了。單片機(jī)干擾最常見的現(xiàn)象就是復(fù)位;至于程序跑飛,其實(shí)也可以用軟件陷阱和看門狗將程序拉回到復(fù)位狀態(tài);所以單片機(jī)軟件抗干擾最重要的是處理好復(fù)位狀態(tài)。
一般單片機(jī)都會(huì)有一些標(biāo)志寄存器,可以用來判斷復(fù)位原因;另外也可以自己在RAM中埋一些標(biāo)志。在每次程序復(fù)位時(shí),通過判斷這些標(biāo)志,可以判斷出不 同的復(fù)位原因;還可以根據(jù)不同的標(biāo)志直接跳到相應(yīng)的程序。這樣可以使程序運(yùn)行有連續(xù)性,用戶在使用時(shí)也不會(huì)察覺到程序被重新復(fù)位過。
62. 語音識(shí)別會(huì)不會(huì)是單片機(jī)下個(gè)消費(fèi)熱點(diǎn)?
答:語音識(shí)別在多年前即開始應(yīng)用在低階玩具上,如遙控車的左右前后控制,教育玩具利用發(fā)語音方式,依記憶體大少能容納的長(zhǎng)度經(jīng)壓縮編碼采集后儲(chǔ)存各 字詞,日后再發(fā)相同語音經(jīng)單片機(jī)處理辨識(shí)后,即可作出相應(yīng)動(dòng)作。 依成本不同,影響相關(guān)的MCU資源和速度,以及所利用的辨識(shí)技術(shù)algorithm (運(yùn)算法則)的優(yōu)劣,記憶體大少等,所設(shè)計(jì)出的產(chǎn)品其辨識(shí)率和字詞長(zhǎng)度亦有很大差異。 此低階市場(chǎng)在現(xiàn)今芯片價(jià)格下降應(yīng)有可為,就看產(chǎn)品創(chuàng)新應(yīng)用是否吸引人!高階的語音識(shí)別應(yīng)用是在PC(個(gè)人計(jì)算機(jī))上,有CPU等級(jí)的資源速度和硬盤大少的 記憶容量, 但此市場(chǎng)和硬件(單片機(jī))無關(guān)!
另一個(gè)語音識(shí)別應(yīng)用是嵌入式系統(tǒng),如目前的手機(jī)大都配備語音辨識(shí)電話簿,其實(shí)一般的嵌入式系統(tǒng)如PDA,DSC,MP3……等都有能力builtin此功能,就看需占用多少硬件資源和所能作出的效果。產(chǎn)品的功能定位很重要,語音識(shí)別是否必需要評(píng)估實(shí)際使用率!
63. 如何設(shè)計(jì)實(shí)現(xiàn)一個(gè)共模范圍在0 - 120V 之間的低成本測(cè)量電池組電壓的裝置?
答:這里所謂高共模輸入電壓,是指高范圍的同相輸入電壓,下面先說明運(yùn)放一些概念:
運(yùn)放有所謂的dynamic range是指運(yùn)放(OP)未飽和時(shí),正常動(dòng)作時(shí)的輸出、入電壓范圍。一般而言dynamic range越大,電源電壓的有效利用率越高,例如處理同等級(jí)的信號(hào)時(shí),就不需刻意提高電源電壓也獲得省能源效應(yīng)。尤其是可攜式消費(fèi)性電子產(chǎn)品要求低電壓低 耗電量的場(chǎng)合,高效率的電源電壓始終是備受重視的焦點(diǎn),尤其是運(yùn)放的ground電位,若是設(shè)于Vcc~VEE正負(fù)電源電壓的中點(diǎn)(亦即動(dòng)作點(diǎn))時(shí),就可 獲得極寬廣的dynamic range。有鑒于此設(shè)計(jì)人員通常會(huì)在不減損輸出dynamic range的前提下,使輸入dynamic range大于輸出dynamic range。
輸入信號(hào)的電位為VEE(電源電壓)時(shí),有些OP它的極性會(huì)造成反轉(zhuǎn),雖然Output允許因過大輸入造成的飽和,不過大部份的情況卻不允許極性反 轉(zhuǎn),所以兩單電源用在運(yùn)放輸入信號(hào)到達(dá)VEE之前輸出會(huì)反轉(zhuǎn)。需注意的是即使是單電源使用運(yùn)放,如果超越VEE下0。5V亦即VEE-0。5V 時(shí),輸出的極性也可能會(huì)反轉(zhuǎn)。
所謂的同相輸入電壓范圍VICM(共模輸入電壓)是指兩個(gè)輸入端子與ground之間,可施加的同相電壓范圍。雖然施加的同相電壓超過該范圍時(shí),并 不會(huì)造成元件損壞等問題,不過卻會(huì)使運(yùn)放的功能停止。只要差動(dòng)輸入電壓作為增幅器時(shí)的動(dòng)作正?;旧鲜?伏特。同相輸入電壓范圍VICM與正負(fù)電源電壓相 同是屬于理想狀態(tài)。
一般運(yùn)放會(huì)利用差動(dòng)放大器的CMR(共模信號(hào)消除比)來做相同成份的去除時(shí),在有必要將同相范圍擴(kuò)大的情況,可用增益(Game)1/10的反相放 大器A2 之輸入Vs2訊號(hào),另外用加法方式再加入一級(jí)也是增益(Game)1/10反相放大器A1之輸入Vs1訊號(hào),這樣就可以達(dá)到同相輸入范圍擴(kuò)大之差動(dòng)放大。
如果要設(shè)計(jì)共模范圍在0 - 120V 之間,其上述反相放大器A1,可用R1=100K,Rf=10K,而反相放大器A2,也是用R1=100K, Rf=10K,并且反相放大器A1輸出串一10K電阻到反相放大器A2的負(fù)端輸入口即可。
64. 在使用單片機(jī)控制LCD的時(shí)候,利用T1的溢出中斷顯示刷新時(shí)鐘信息,在主程序循環(huán)時(shí)中為了顯示浮點(diǎn)數(shù),不斷調(diào)用了spritf()函數(shù),可是時(shí)鐘信息不在刷新了,把這個(gè)函數(shù)屏蔽后,就恢復(fù)正常,請(qǐng)問調(diào)用這個(gè)函數(shù)會(huì)不會(huì)影響定時(shí)/計(jì)數(shù)器的中斷?
答:這應(yīng)該與程序有關(guān),一般來說sprintf()函數(shù),不會(huì)影響定時(shí)/計(jì)數(shù)器的中斷,因?yàn)闆]看到具體程序,所以猜測(cè)原因可能是程序里面對(duì)定時(shí)器初始化的部分與sprintf()使用的buffer有些沖突,造成了定時(shí)器初始化的錯(cuò)誤。
65. LM4915是什么IC?
答:LM4915是一款音頻功率放大器,常用于帶單聽筒的手機(jī)、PDA和其他的便攜式音頻裝置等低電壓的應(yīng)用場(chǎng)合,在外接極少的元器件情況下,為其提供高質(zhì)量的功率輸出以驅(qū)動(dòng)發(fā)聲裝置。