單片機(jī)實(shí)現(xiàn)PCB探測系統(tǒng)
1 引言
在進(jìn)行PCB反設(shè)計(jì)時(shí),需要首先對電路板進(jìn)行探測,得出所有元器件管腳之間的連接關(guān)系;接著再利用相應(yīng)的軟件對探測結(jié)果進(jìn)行分析處理,最終還原出PCB的原理圖。假設(shè)電路板上有
次。由于大規(guī)模PCB上器件管腳眾多,因此完全依靠手工探測不僅效率低下,而且極易出錯(cuò)。
為了提高PCB探測的效率和準(zhǔn)確性,本文提出了一種基于EZ-USB 2100系列單片機(jī)的PCB探測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案。該系統(tǒng)有 個(gè)探測頭,分別連接到電路板的 個(gè)器件管腳上。在單片機(jī)的控制下,系統(tǒng)自動(dòng)的探測這個(gè)管腳間的連接關(guān)系;然后,系統(tǒng)依據(jù)探測選擇算法,選取下一組 個(gè)管腳進(jìn)行探測,依此循環(huán),直到所有的 個(gè)器件管腳均探測完畢。采用EZ-USB 2100系列單片機(jī)進(jìn)行開發(fā),不僅易于實(shí)現(xiàn)探測設(shè)備和主機(jī)之間的高速通信,而且還為探測設(shè)備的功能擴(kuò)展帶來了極大的便利。下文將首先分析EZ-USB 2100系列單片機(jī)的特點(diǎn)和技術(shù)優(yōu)勢,然后給出基于該類型單片機(jī)的PCB探測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案。
2 EZ-USB 2100系列單片機(jī)的特點(diǎn)
EZ-USB 2100系列單片機(jī)由Cypress公司開發(fā),片內(nèi)集成了符合USB 1.1版規(guī)范的USB控制器和一個(gè)增強(qiáng)的8051內(nèi)核。增強(qiáng)的8051內(nèi)核運(yùn)行速度為24MHz,并且一個(gè)總線周期中包含有4個(gè)時(shí)鐘周期,而標(biāo)準(zhǔn)8051 則包含12個(gè)時(shí)鐘周期。除了增強(qiáng)的8051內(nèi)核,與傳統(tǒng)的8051單片機(jī)相比,EZ-USB 2100系列單片機(jī)還具有兩大優(yōu)勢技術(shù):1)通過USB總線實(shí)現(xiàn)與主機(jī)的高速數(shù)據(jù)傳輸;2)固件重配置功能。這兩項(xiàng)技術(shù)為應(yīng)用開發(fā)提供了極大的方便性和靈活性,下面將具體分析在實(shí)際的開發(fā)過程中如何使用這兩項(xiàng)技術(shù)。
2.1 EZ-USB 2100系列單片機(jī)與主機(jī)的通信
EZ-USB 2100系列單片機(jī)內(nèi)集成的USB控制器符合USB1.1版規(guī)范,可支持12Mbps高速數(shù)據(jù)傳輸。主機(jī)上的應(yīng)用程序通過EZ-USB設(shè)備驅(qū)動(dòng)程序和 EZ-USB單片機(jī)進(jìn)行通信。Cypress提供了一個(gè)通用的設(shè)備驅(qū)動(dòng)程序,用戶可以直接利用該通用設(shè)備驅(qū)動(dòng)程序與EZ-USB單片機(jī)進(jìn)行通信。
首先,主機(jī)需要裝載該通用設(shè)備驅(qū)動(dòng)程序。第一次使用某USB設(shè)備時(shí)可能需要手工安裝其驅(qū)動(dòng)程序;此后,Windows會(huì)保存在注冊表中的相關(guān)信息,自動(dòng)定位設(shè)備驅(qū)動(dòng)程序。
在裝載了通用設(shè)備驅(qū)動(dòng)程序之后,應(yīng)用程序首先通過調(diào)用Win32 API函數(shù)CreateFile()來取得訪問設(shè)備驅(qū)動(dòng)程序的句柄:
HANDLE DeviceHandle;
DeviceHandle = CreateFile (“.ezusb-0”, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL );
然后,應(yīng)用程序?yàn)镃reateFile()函數(shù)返回的設(shè)備句柄設(shè)置I/O緩沖區(qū),并通過調(diào)用Win32 API函數(shù)DeviceIoControl()來完成設(shè)備的讀、寫等操作:
LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px>PVOID pvBuffer = NULL;
DWORD nBytes = 0;
PvBuffer = malloc (sizeof (Usb_Device_Descriptor ));
BResult = DeviceIoControl ( DeviceHandle, //已經(jīng)打開的設(shè)備句柄
IOCTL_EZUSB_GET_DEVICE_DESCRIPTOR, //IO控制碼
NULL, 0, pvBuffer, sizeof (Usb_Device_Descriptor),
nBytes, NULL);
對EZ-USB外設(shè)的操作是通過向DeviceIoControl函數(shù)傳遞相應(yīng)的控制碼實(shí)現(xiàn)的。例如,要完成數(shù)據(jù)的塊讀(bulk read)和塊寫(bulk write)操作,可以分別向該函數(shù)傳遞IOCTL_EZUSB_BULK_READ 和IOCTL_EZUSB_BULK_WRITE控制碼。
2.2 EZ-USB 2100系列單片機(jī)的固件重配置功能
一個(gè)單片機(jī)系統(tǒng)的硬件電路設(shè)計(jì)完成之后,該單片機(jī)系統(tǒng)的特性和功能還可以通過更改單片機(jī)的軟件程序(即:固件)來加以改變。利用ROM來存儲(chǔ)固件則無法更改;而利用EPROM來存儲(chǔ)固件則會(huì)受到擦寫次數(shù)和成本的限制。而EZ-USB系列單片機(jī)片內(nèi)集成的外部RAM可用于裝載固件,當(dāng)設(shè)備與主機(jī)連接時(shí),固件從主機(jī)裝載到RAM里執(zhí)行,裝載不同的固件設(shè)備就呈現(xiàn)出不同的特性,從而達(dá)到軟配置目的。
3 EZ-USB 2100系列單片機(jī)在開發(fā)PCB探測系統(tǒng)中的應(yīng)用
3.1硬件電路設(shè)計(jì)
系統(tǒng)的硬件電路結(jié)構(gòu)圖如圖1所示。k 個(gè)探測頭連接到由多個(gè)模擬開關(guān)組成的模擬開關(guān)
IDTH: 0px; border-image: initial height=113 alt=單片機(jī)實(shí)現(xiàn)PCB探測系統(tǒng) src=/uploadfile/mndz/uploadfile/201203/20120328050702372.jpg width=553>
3.2 系統(tǒng)功能擴(kuò)充
正如本文2.2節(jié)說明的,可以利用EZ-USB的重配置功能,對固件程序進(jìn)行修改,以使得系統(tǒng)獲得新的功能。在開發(fā)PCB探測系統(tǒng)的過程中,我們發(fā)現(xiàn)需要對電路板上的電阻、電容和電感這些雙腳器件的取值進(jìn)行測量。由于大規(guī)模電路板上這類器件數(shù)量龐大,手工采用萬用表或邏輯分析儀進(jìn)行測量是一件非常繁瑣的工作。而利用EZ-USB的重配置功能則可以解決這一問題。采用與3.1節(jié)同樣的硬件電路,筆者另外設(shè)計(jì)了一套固件程序,用于電路板上電阻、電容和電感的類型判別及取值測定。
4 結(jié)語
該探測系統(tǒng)極大的提高了PCB反設(shè)計(jì)工作的效率。實(shí)際應(yīng)用的結(jié)果表明該探測系統(tǒng)具有良好的探測完備性和準(zhǔn)確性。
評論