廉價(jià)的處理器可用作PC的RS-232端口與任何Maxim或Dallas 2線器件之間的接口。這允許操縱2線器件進(jìn)行評(píng)估(在原型期間)或在某些測(cè)試過(guò)程中使用。應(yīng)用筆記包含框圖和達(dá)拉斯FTP站點(diǎn)的鏈接,可在其中下載軟件和固件示例以實(shí)現(xiàn)應(yīng)用筆記。它作為希望構(gòu)建自己的界面的客戶提供參考,而不是作為成品呈現(xiàn)。
介紹
本應(yīng)用筆記討論了如何構(gòu)建廉價(jià)的微處理器電路,允許PC使用其串行端口與2線器件通信。除了提供硬件、固件和軟件設(shè)計(jì)以使PC能夠與IC通信的一般見解外,還介紹了完整的PIC微處理器參考設(shè)計(jì),以展示如何圍繞2線器件構(gòu)建PC應(yīng)用。該參考設(shè)計(jì)包括完整的原理圖、固件和低級(jí)串行端口代碼C++以快速啟動(dòng)任何希望集成2線器件的應(yīng)用。原理圖、固件和軟件可以從達(dá)拉斯半導(dǎo)體的FTP站點(diǎn)下載。
概述
通常,當(dāng)客戶提供與達(dá)拉斯半導(dǎo)體評(píng)估套件相關(guān)的反饋時(shí),他們表示他們正在使用它們來(lái)評(píng)估達(dá)拉斯半導(dǎo)體的 IC,而無(wú)需在此過(guò)程中努力編寫軟件來(lái)練習(xí)零件。然而,在過(guò)去幾年中,一個(gè)趨勢(shì)似乎變得越來(lái)越普遍,即客戶在設(shè)計(jì)的原型設(shè)計(jì)階段使用評(píng)估套件與部件進(jìn)行通信。在過(guò)去,這意味著既要使用達(dá)拉斯半導(dǎo)體公司為其使用的產(chǎn)品編寫的圖形用戶界面(GUI),也要使用DS9123串行端口適配器,這是一種與2線器件通信的緩慢方法。
本應(yīng)用筆記旨在幫助希望構(gòu)建自己的電路以促進(jìn)PC和2線器件之間通信的客戶,并向他們展示如何生成特定于其應(yīng)用的定制軟件。它分為四個(gè)部分,分別側(cè)重于硬件設(shè)計(jì)、固件、軟件,最后一部分提供分步演練,展示如何構(gòu)建參考設(shè)計(jì)、對(duì)PIC進(jìn)行編程以及開始為2線應(yīng)用編寫定制軟件。
設(shè)計(jì)將PC連接到2線器件的硬件
首先,最好在開始工作之前明確定義正在設(shè)計(jì)的內(nèi)容,這是硬件支持的。 從PC接收數(shù)據(jù),然后將其中繼到2線設(shè)備。
有很多方法可以將數(shù)據(jù)從PC傳輸?shù)酵獠坑布敲礊槭裁创卸丝谑窃S多應(yīng)用的首選呢?首先,每臺(tái)PC上都有串口,RS232標(biāo)準(zhǔn)已經(jīng)明確定義了訪問(wèn)端口。此外,PC和微處理器都包含串行端口,因此與微處理器的通信非常簡(jiǎn)單。這種標(biāo)準(zhǔn)化的其他三個(gè)顯著優(yōu)點(diǎn)是PC將以相同的波特率發(fā)送數(shù)據(jù),無(wú)論其處理能力如何,串行端口在大多數(shù)PC上通常是免費(fèi)的,并且為串行端口編寫的軟件傾向于在所有Windows?操作系統(tǒng)平臺(tái)上工作。也可以通過(guò)從串行端口的I / O信號(hào)中竊取電源來(lái)寄生地為某些適配器供電;但是,對(duì)于參考設(shè)計(jì)來(lái)說(shuō),這是不可能的,因?yàn)樗奶嗟墓β?。這主要是由于該設(shè)計(jì)以相對(duì)較高的頻率(3.6864MHz)工作,這增加了超出寄生供電的功率要求。
選擇串行端口的主要缺點(diǎn)是它肯定需要一個(gè)微處理器將RS232數(shù)據(jù)格式轉(zhuǎn)換為2線協(xié)議,在這種情況下,可以使用其他一些I / O設(shè)備在不添加微處理器的情況下執(zhí)行任務(wù)。此外,串行端口使用 ±12V 信號(hào)進(jìn)行通信。這將需要一個(gè)IC將信號(hào)電平轉(zhuǎn)換為微處理器可以處理的水平。雖然可以以 115.2kbps >數(shù)據(jù)速率運(yùn)行,但 PC 和微處理器都需要能夠以所選速度運(yùn)行。通常,PC能夠支持所有標(biāo)準(zhǔn)波特率,但微處理器可能會(huì)在發(fā)送和接收數(shù)據(jù)的速度方面存在一些限制。
還有其他用于構(gòu)建 PC 硬件的選項(xiàng)。除串行端口外,最常見的兩種是使用并行端口或通用輸入/輸出卡 (GPIO)。這兩個(gè)選項(xiàng)都存在必須處理才能成功使用它們的問(wèn)題。并行端口不如串行端口標(biāo)準(zhǔn)。隨著時(shí)間的推移,并行端口有四個(gè)標(biāo)準(zhǔn),并且有各種芯片組以不同的模式操作端口。最初的標(biāo)準(zhǔn)并行端口 (SPP) 是第一個(gè)標(biāo)準(zhǔn),大多數(shù) PC 都支持。問(wèn)題是可能必須在運(yùn)行應(yīng)用程序的計(jì)算機(jī)的 BIOS 中啟用端口的 SPP 模式。此外,在并行端口上很難處理時(shí)序,因?yàn)樗诤艽蟪潭壬先Q于所使用的計(jì)算機(jī)的速度。
GPIO 卡不是 PC 上的標(biāo)準(zhǔn)設(shè)備,因此必須單獨(dú)購(gòu)買并在購(gòu)買 PC 后安裝。此外,沒(méi)有GPIO卡標(biāo)準(zhǔn),因此無(wú)法確保為一個(gè)卡編寫的軟件適用于多個(gè)系統(tǒng)。
另一個(gè)流行的選項(xiàng)是USB。USB的主要優(yōu)點(diǎn)是能夠寄生為更大的電路供電,以及連接的帶寬。缺點(diǎn)是電路必須在5V的系統(tǒng)電壓下工作,并且固件和軟件變得更加復(fù)雜,因?yàn)樗鼈儸F(xiàn)在必須能夠使用設(shè)備驅(qū)動(dòng)程序進(jìn)行通信。
由于串行端口用于與參考設(shè)計(jì)中的2線器件通信,因此需要解決三個(gè)主要問(wèn)題,以實(shí)現(xiàn)PC和微處理器之間的通信。
什么將用于將RS232信號(hào)電平轉(zhuǎn)換為微處理器可以處理的水平?
微處理器是否有通用異步接收器發(fā)射器 (UART),或者是否會(huì)編寫軟件 UART?
如果使用硬件UART,哪些晶體頻率與微處理器的波特率發(fā)生器配合良好?
由于串行端口使用±12V信號(hào)進(jìn)行通信,因此它們不能直接連接到微處理器。幸運(yùn)的是,達(dá)拉斯半導(dǎo)體和Maxim都制造了幾個(gè)RS232電平轉(zhuǎn)換器芯片,將±12V信號(hào)轉(zhuǎn)換為0至5V或0至3V信號(hào)。DS100A、MAX232和MAX232最容易使用,3221%符合RS3223規(guī)范。DS232A為5V器件,將RS232信號(hào)電平轉(zhuǎn)換為0至5V信號(hào),兩個(gè)Maxim芯片工作在3V至5.5V,具有一個(gè)(MAX3221)或兩個(gè)(MAX3223)串行通道。所有器件都支持高達(dá)120kbps的波特率。
UART用于在發(fā)送和接收數(shù)據(jù)時(shí)保持通信的定時(shí)。許多(但不是全部)微處理器都包含符合RS232標(biāo)準(zhǔn)的硬件UART。除了處理時(shí)序之外,硬件UART還處理從字節(jié)到位流的數(shù)據(jù)序列化,并且無(wú)需軟件干預(yù)即可發(fā)送/接收開始和停止控制位。上述所有問(wèn)題都可以由軟件UART處理,但它通常必須以較慢的波特率處理,并且僅處理串行端口通信可能需要微處理器的很大一部分時(shí)間。傳統(tǒng)觀點(diǎn)認(rèn)為,通常最好購(gòu)買帶有硬件UART的微處理器。它允許高效的中斷驅(qū)動(dòng)代碼來(lái)控制串行端口外設(shè),它往往更可靠,并且由于RS232端口非常普遍,成本增加通常很小。
使用硬件UART時(shí)要考慮的重要一點(diǎn)是使用振蕩器或晶體,其頻率將與微處理器的波特率發(fā)生器配合使用。波特率發(fā)生器通常使用時(shí)鐘頻率除以 2 的冪來(lái)設(shè)置波特率。時(shí)鐘頻率為11.0592MHz的分?jǐn)?shù)或倍數(shù)通常適用于此任務(wù)。選擇晶體頻率后,應(yīng)使用微處理器數(shù)據(jù)表中的公式計(jì)算波特誤差。如果大于 3%,則可能無(wú)法在微處理器和 PC 之間建立通信。此外,使用電阻/電容(RC)時(shí)鐘源的微處理器很可能無(wú)法維持串行通信,因?yàn)楣ぷ黝l率可能會(huì)漂移超過(guò)3%。由于波特率誤差將跟隨微處理器時(shí)鐘頻率的百分比變化,因此這與靜態(tài)波特率誤差為3%會(huì)帶來(lái)相同的問(wèn)題。
一旦 PC 和微處理器通信,兩條集電極開路 I/O 線,上拉至 2 線器件的 V抄送與2線器件通信需要電平。PIC 參考設(shè)計(jì)使用兩個(gè)三態(tài)圖騰柱輸出,但它通過(guò)將信號(hào)驅(qū)動(dòng)低電平或三態(tài)輸出來(lái)仿真集電極開路器件。此輸出與真正的集電極開路輸出之間的唯一區(qū)別是 V抄送2線器件的電平必須等于或低于Vcc PIC 電路的電平。如果不保持這種關(guān)系,輸入的電壓電平將違反PIC的輸入電平規(guī)范。
本節(jié)的其余部分重點(diǎn)介紹參考設(shè)計(jì)硬件的細(xì)節(jié)。圖1所示為參考設(shè)計(jì)電路的框圖。
圖1.參考設(shè)計(jì)的硬件框圖。
除了本節(jié)開頭的標(biāo)準(zhǔn)外,以下項(xiàng)目是本電路的設(shè)計(jì)目標(biāo):
Vcc范圍 3.0-5.5V
57600波特串行端口通信
在線可編程微處理器
電路必須能夠從軟件復(fù)位
便宜的組件
電路板應(yīng)盡可能小
為了實(shí)現(xiàn)這些目標(biāo),之所以選擇 PIC16LF628 處理器,主要是因?yàn)槠涞碗妷哼\(yùn)行和低成本。其他理想的特性包括用于基于中斷的快速通信的硬件UART,允許精確吟游詩(shī)人速率的晶體輸入,并且采用小型20引腳173mil TSSOP封裝。
為了轉(zhuǎn)換RS232端口的信號(hào)電平,選擇MAX3223是因?yàn)楫?dāng)與單電源(232.3V至0.5V)一起使用時(shí),MAX5信號(hào)電平可提供真正的RS20信號(hào)電平。此外,它還具有兩個(gè)通道,允許使用串行端口的DTR(數(shù)據(jù)終端就緒)信號(hào)來(lái)重置電路板。該器件還提供微型 3223 引腳 TSSOP 封裝。MAX<>和PIC可以采用相同的V工作電壓抄送電源,兩個(gè)芯片都將在3V至5.5V范圍內(nèi)工作。這允許該板同時(shí)使用 3V 和 5V 2 線器件。
信號(hào) RA0 和 RA1 用于與 2 線器件通信,上拉電阻連接到它們以用于集電極開路 2 線總線。 RB1 和 RB2 通過(guò) MAX3223 連接到串行端口,MAX232 使用外部電容(未顯示)產(chǎn)生真正的 RS2 電平。其余 I/O 引腳用于位 I/O。它們可用于其他串行協(xié)議,或根據(jù)需要控制3223線器件上的其他數(shù)字輸入。這將在固件部分進(jìn)行更深入的描述。框圖所示電路中最復(fù)雜的部分是復(fù)位電路。在PIC微處理器上,MCLR是低電平有效復(fù)位信號(hào)。NMOS的柵極連接到DTR信號(hào),由MAX<>進(jìn)行電平轉(zhuǎn)換。如果 NMOS 柵極處的 DTR 信號(hào)為高電平,則 NMOS 將接通,這將使 PIC 處于復(fù)位狀態(tài)。如果 DTR 信號(hào)在 NMOS 柵極處較低,它將釋放 MCLR 信號(hào),這將允許 MCLR 信號(hào)自行調(diào)整為 V抄送在正常操作或 V聚丙烯如果PIC正在電路編程。肖特基二極管的存在是為了隔離V聚丙烯來(lái)自 V 的電源抄送在編程期間供電,當(dāng)NMOS強(qiáng)制處理器復(fù)位時(shí),電阻會(huì)限制二極管的通電流。盡管 MCLR 已連接到連接器,但在正常工作期間應(yīng)斷開此引腳。它僅用于PIC的在線編程。
整個(gè)參考設(shè)計(jì)的完整原理圖和物料清單 (BOM) 可在達(dá)拉斯半導(dǎo)體的 FTP 站點(diǎn)上找到。本文檔的演練部分中提供了指向 FTP 站點(diǎn)上該位置的鏈接。
設(shè)計(jì)固件以與PC和2-Wire器件通信
手頭的任務(wù)是從RS232串行協(xié)議到2線協(xié)議的數(shù)據(jù)轉(zhuǎn)換,但還有其他事情需要考慮。首先,必須為2線主站發(fā)出啟動(dòng)和停止總線命令,以建立與從器件的通信。此外,在特定應(yīng)用程序中,要寫入或從特定設(shè)備讀取的數(shù)據(jù)量將有很大差異,設(shè)備地址以及通過(guò)在特定地址讀取和寫入執(zhí)行的功能也會(huì)有很大差異。因此,編寫的固件不包含特定于設(shè)備的命令,并且它被設(shè)計(jì)為盡可能快地執(zhí)行任何給定命令的低開銷協(xié)議。這允許軟件做出決策并控制應(yīng)用程序流,而固件僅接收基本命令并執(zhí)行它們。圖 2 顯示了參考設(shè)計(jì)使用的命令協(xié)議。
圖2.與 PIC 電路通信的串行端口命令
命令 | 發(fā)送的第一個(gè)字節(jié) | 發(fā)送的第二個(gè)字節(jié) | 返回的字節(jié)數(shù) |
啟動(dòng)(重新啟動(dòng)) | A0h | 0x00,忽略 |
0xB0命令確認(rèn) 0xFA命令失敗 |
寫入字節(jié) | A1h | 數(shù)據(jù) |
0xB1命令確認(rèn) 0xFA命令失敗 |
讀取字節(jié) | A2h |
確認(rèn) 0x01 = 確認(rèn) 0x00 = 納克 |
返回的第一個(gè)字節(jié) = 返回的數(shù)據(jù) 返回 的第二個(gè)字節(jié) 0xB2 = 命令 Ack 0xFA = 失敗 |
停 | A3h | 0x00,忽略 |
0xA3命令確認(rèn) 0xFA命令失敗 |
切換 SCL 9 次 | A4h | 0x00,忽略 |
0xA4命令確認(rèn) 0xFA命令失敗 |
位 I/O 讀取 | 呃?h | 0x00,忽略 |
0x00讀取位清除0x01讀取位設(shè)置 0xFA命令失敗 |
位 I/O 寫入 | F?h |
0x00 清除位 0x01設(shè)置位 |
0xF0命令確認(rèn)0xFA 命令失敗 |
?值 | ?指定一個(gè)未使用的針腳微處理器針腳。添加這部分命令處理器代碼是為了便于將該適配器用于其他非標(biāo)準(zhǔn)協(xié)議,例如DS17中的3位1867線移位寄存器。 |
被認(rèn)為是2線通信必不可少和基本的項(xiàng)目是啟動(dòng)(重新啟動(dòng))總線命令、停止總線命令、寫入數(shù)據(jù)字節(jié)、讀取帶確認(rèn)的數(shù)據(jù)字節(jié)和讀取不確認(rèn)的數(shù)據(jù)字節(jié)。固件支持其他三個(gè)項(xiàng)目。第一個(gè)是切換 SCL 九次的命令,如果在通信過(guò)程中檢測(cè)到錯(cuò)誤,這對(duì)于重置 2 線總線很有用。最后兩個(gè)是位 I/O 讀取和寫入,它讀取 I/O 引腳的狀態(tài)或設(shè)置 I/O 引腳的狀態(tài),具體取決于發(fā)出的命令。這些命令的存在是為了允許將PIC端口A和B上的剩余I/O信號(hào)用于設(shè)計(jì)人員可能需要的任何內(nèi)容。
圖3顯示了與響應(yīng)地址2x0的40線器件通信所需的順序。每個(gè)操作都要求 PC 向 PIC 發(fā)送兩個(gè)字節(jié)。一旦PIC收到第二個(gè)字節(jié),它將開始處理它收到的數(shù)據(jù)。接收的第一個(gè)字節(jié)確定要執(zhí)行的操作類型(啟動(dòng)、發(fā)送數(shù)據(jù)等)。如果命令需要數(shù)據(jù)操作數(shù),它將查看發(fā)送的第二個(gè)字節(jié),否則忽略第二個(gè)命令字節(jié)。由于處理器期望每條指令有兩個(gè)字節(jié),因此如果命令不需要第二個(gè)字節(jié),則必須發(fā)送虛擬字節(jié)。如果 PIC 收到無(wú)效命令,它將返回 0xFA,這表示失敗。
圖3.示例2線寫和讀通信序列
發(fā)送啟動(dòng)命令,將0x23寫入地址2x0的40-Wire器件,發(fā)送停止命令 | |||||
序# | 發(fā)送的第一個(gè)字節(jié) | 發(fā)送第 2 個(gè)字節(jié) | 返回的第一個(gè)字節(jié) | 返回第 2 個(gè)字節(jié) | 描述 |
1 | 0xA0 |
0x00 占位符 |
0xB0 命令確認(rèn) |
沒(méi)有 | 2線啟動(dòng) |
2 | 0xA1 |
0x40 數(shù)據(jù) |
0xB1 命令確認(rèn) |
沒(méi)有 | 通過(guò) 0 線總線發(fā)送40x2(寫入地址。字節(jié)) |
3 | 0xA1 |
0x40 數(shù)據(jù) |
0xB1 命令確認(rèn) |
沒(méi)有 | 通過(guò)0線總線發(fā)送23x2(數(shù)據(jù)到2線部分) |
4 | 0xA3 |
0x00 占位符 |
0xB3 命令確認(rèn) |
沒(méi)有 | 2線擋塊 |
發(fā)送啟動(dòng)命令,從地址0x23的2線器件讀取0x40,發(fā)送停止命令 | |||||
順序 3 | 發(fā)送的第一個(gè)字節(jié) | 發(fā)送第 2 個(gè)字節(jié) | 返回的第一個(gè)字節(jié) | 返回第 2 個(gè)字節(jié) | 描述 |
1 | 0xA0 |
0x00 占位符 |
0xB0 命令確認(rèn) |
沒(méi)有 | 2線啟動(dòng) |
2 | 0xA1 |
0x41 數(shù)據(jù) |
0xB1 命令確認(rèn) |
沒(méi)有 | 通過(guò) 0 線總線發(fā)送41x2(讀取地址。字節(jié)) |
3 | 0xA2 |
0x00 閱讀帶納克 |
0x23 數(shù)據(jù) |
0xB2 命令確認(rèn) |
讀取帶納克 第1個(gè)字節(jié)0x23(來(lái)自2線部分的數(shù)據(jù)) 第2個(gè)字節(jié)0xB2(命令確認(rèn)) |
4 | 0xA3 |
0x00 占位符 |
0xB3 命令確認(rèn) |
沒(méi)有 | 2線擋塊 |
始終返回至少一個(gè)值以確認(rèn)命令已成功完成或失敗,在 2 線讀取字節(jié)操作的情況下,將同時(shí)返回?cái)?shù)據(jù)字節(jié)和命令的確認(rèn)。PIC 為每條指令返回的確認(rèn)字節(jié)實(shí)際上是在通知軟件兩個(gè)項(xiàng)目都成功發(fā)生。首先,它確認(rèn) PIC 正在與 PC 通信。這在大多數(shù)時(shí)候可能看起來(lái)簡(jiǎn)單可靠,但它確實(shí)提供了反饋,以通知用戶串行電纜斷開,或者尚未向應(yīng)用板供電。其次,它驗(yàn)證持續(xù)監(jiān)控2線通信的PIC是否看到預(yù)期的確認(rèn)。這意味著從PC到PIC或從PIC到2線器件的通信都不會(huì)中斷。
位 I/O 命令(0xE 和 0xF?)可用于將 I/O 引腳的狀態(tài)設(shè)置為輸出,也可以將引腳置于高阻抗?fàn)顟B(tài)并將其讀取為輸入。由于本應(yīng)用筆記不針對(duì)位I/O操作,因此在此結(jié)點(diǎn)不再深入討論。但是,命令協(xié)議包含在圖 2 中,而 ?識(shí)別特定I/O引腳的值如圖4所示。
圖4.位 I/O 讀寫地址
描述 | ?值 | Port Pin |
位 I/O 讀?。?xE? 位 I/O 寫入(0xF? |
1 | RA2 |
2 | RA3 | |
3 | RA4 | |
4 | RB0 | |
5 | RB3 | |
6 | RB4 | |
7 | RB5 | |
8 | RB6 | |
9 | RB7 | |
一個(gè) | RA0 | |
B | RA1 |
為了實(shí)現(xiàn)上面討論的固件,構(gòu)建了圖 5 中所示的程序流程。程序等待接收兩個(gè)命令字節(jié),并在收到每個(gè)字節(jié)時(shí)對(duì)其進(jìn)行驗(yàn)證。一旦收到兩個(gè)有效字節(jié),程序就會(huì)執(zhí)行該命令。如果未收到兩個(gè)有效字節(jié),固件將拒絕該命令,并返回錯(cuò)誤代碼而不是命令確認(rèn)。固件 (dsio.hex) 可在 FTP 站點(diǎn)上找到。
圖5.固件程序流程。
如果項(xiàng)目需要自定義固件,強(qiáng)烈建議將固件與PC軟件分開編寫和調(diào)試。這可以使用終端程序來(lái)模擬固件開發(fā)期間對(duì)PC的要求來(lái)完成。這允許分離問(wèn)題,并且可以將調(diào)試時(shí)間保持在最短。
為PC編寫低級(jí)軟件以控制PIC
在編寫低級(jí)PC代碼以與PIC電路通信時(shí),要努力實(shí)現(xiàn)的主要目標(biāo)是使代碼可重用。這使得在提供PC通信代碼的初始工作完成后,將PIC電路與多個(gè)2線項(xiàng)目一起使用變得簡(jiǎn)單。本節(jié)重點(diǎn)介紹將引用的“通信代碼”,該代碼允許PC與PIC的固件進(jìn)行通信。這不應(yīng)與GUI軟件開發(fā)人員生成的最終應(yīng)用程序代碼混淆。下一節(jié)將集中介紹如何從頭開始構(gòu)建應(yīng)用程序(硬件和軟件)。此外,盡管可以在不涉及語(yǔ)言細(xì)節(jié)的情況下解決此主題,但將從C++的角度進(jìn)行討論,因?yàn)樗撬峁┐a的語(yǔ)言。
C++是一種非常強(qiáng)大的語(yǔ)言,它包含大量預(yù)定義的變量類型以及類,允許定義用戶定義的對(duì)象和變量。在這種情況下,代碼可重用的方式是編寫一個(gè)C++類來(lái)處理與PIC電路的所有通信。由于所有通信要求都包含在單個(gè)類中,因此該類的任何實(shí)例都能夠命令電路執(zhí)行其任何功能。提供的類稱為 CdsPic,它包含在兩個(gè)文件中,DSPIC.cpp 和 DSPIC.h。
C++類初始化類的構(gòu)造函數(shù)中的串行端口。初始化將打開 COM1,重置 PIC,然后等待 PIC 的串行端口初始化橫幅將 PIC 電路標(biāo)識(shí)到 PC。如果 PIC“未找到”,構(gòu)造函數(shù)將關(guān)閉 COM1,并嘗試 COM2,然后嘗試 COM3,最后嘗試 COM4。找到正確的端口后,它將退出構(gòu)造函數(shù),并且 DetectBoard() 函數(shù)將在調(diào)用時(shí)返回 true。如果在檢查所有四個(gè)端口后未找到 PIC,構(gòu)造函數(shù)將退出,并且 DetectBoard() 函數(shù)在調(diào)用時(shí)將返回 false。如果函數(shù)返回 false,則由應(yīng)用軟件來(lái)處理問(wèn)題。
假設(shè)適配器被“找到”,那么只要類保持在范圍內(nèi),就可以調(diào)用該類的所有 2 線函數(shù)。這些函數(shù)包括 Start2W()、WriteSlave2W()、ReadSlave2W() 和 Stop2W()。此外,還有一個(gè)命令(ToggleSCL9x())對(duì)2線總線進(jìn)行1次時(shí)鐘,可用于在任何傳輸過(guò)程中通信受到干擾時(shí)重置總線。為了與PIC的固件通信,這些命令調(diào)用多個(gè)例程通過(guò)串行端口讀取和寫入數(shù)據(jù)。這些例程存在于兩個(gè)附加文件中,DSIOLIB1.cpp 和 DSIOLIB<>.h。
一旦類離開作用域,通常當(dāng)應(yīng)用程序退出時(shí),應(yīng)用程序?qū)⑨尫庞糜谄渥兞康乃袃?nèi)存。這將調(diào)用 CdsPic 類的析構(gòu)函數(shù),析構(gòu)函數(shù)將關(guān)閉串行端口。
由于2線例程是提供給客戶的,因此本應(yīng)用筆記將不討論該實(shí)施例的大部分細(xì)節(jié)。應(yīng)該提到的一件事是,包含的串行端口代碼僅適用于Windows的環(huán)境(Windows NT 3.1,Windows 95或任一的后續(xù)版本)。如果需要不同的編程語(yǔ)言或操作系統(tǒng),則必須重寫通信軟件以適應(yīng)操作系統(tǒng)和語(yǔ)言要求。最簡(jiǎn)單的方法是查看提供的C++代碼,以查看在與固件通信時(shí)必須發(fā)送的內(nèi)容和接收的內(nèi)容。然后使用新軟件模擬交易。建立通信所需的串行端口設(shè)置為57600波特,1停止位和無(wú)奇偶校驗(yàn)。
使用參考設(shè)計(jì)構(gòu)建應(yīng)用硬件和 PC 軟件
要基于 PIC 參考設(shè)計(jì)構(gòu)建應(yīng)用程序,需要完成四項(xiàng)任務(wù)。
使用 FTP 站點(diǎn)上提供的 dsio.hex 文件對(duì) PIC16LF628 微處理器進(jìn)行編程。使用Microchip提供的PICSTART Plus編程器或工程編程器(如BP Microsystems提供的編程器)。
構(gòu)建詳細(xì)原理圖中顯示的電路,該原理圖可在FTP站點(diǎn)上找到。如果需要以后能夠更改固件,請(qǐng)確保有一種方法可以隔離 MCLR,V抄送、微處理器的 RB6 和 RB7。這些是用于對(duì)微處理器進(jìn)行在線編程的引腳。如果使用PIC的表面貼裝版本,則對(duì)PIC進(jìn)行在線編程可能比找到合適的適配器插座與編程器的插座配合使用更方便。
下載 FTP 站點(diǎn)上提供的C++代碼 (DSIOLIB1.cpp、DSIOLIB.h、DSPIC.cpp、DSPIC.h)。
編寫應(yīng)用軟件。在項(xiàng)目中包括上面列出的四個(gè)文件,并在軟件頂部添加一個(gè)#include“DSPIC.h”指令。在全局空間中實(shí)例化 CdsPic 類的成員。它在全球空間中完成有兩個(gè)原因。它將允許程序的所有子例程訪問(wèn)2線函數(shù),并且只允許此類的單個(gè)實(shí)例進(jìn)入應(yīng)用程序。如果打開該類的第二個(gè)實(shí)例,它將無(wú)法打開由前一個(gè)實(shí)例控制的串行端口,因此它將無(wú)法與 PIC 通信。實(shí)例化類后,使用 BoardPresent() 成員函數(shù)確定串行端口是否已成功打開。如果檢測(cè)到電路板,請(qǐng)根據(jù)需要繼續(xù)調(diào)用CdsPic成員函數(shù)以執(zhí)行2線功能,否則通知用戶未找到PIC電路。
生成了一個(gè)示例2線應(yīng)用,可以從達(dá)拉斯半導(dǎo)體的FTP站點(diǎn)下載。它被稱為DS2W,它是一種通用的2線工具,允許用戶從Window的對(duì)話框界面與2線器件進(jìn)行通信。該程序的 GUI 如下所示。
圖6.DS2W 的圖形用戶界面。
此應(yīng)用程序的源代碼包含在FTP站點(diǎn)上,可用作示例,以幫助使用PIC電路進(jìn)行開發(fā)。該代碼演示如何使用CdsPic類中提供的所有2線相關(guān)函數(shù)來(lái)構(gòu)建基于Windows的應(yīng)用程序。
此外,如果硬件是如上所述構(gòu)建的,則可以下載并執(zhí)行可執(zhí)行的 DS2Wa.exe。
總結(jié)
本應(yīng)用筆記提供了一組硬件、固件和軟件示例,可用于構(gòu)建與2線器件通信的定制應(yīng)用。該解決方案易于實(shí)現(xiàn),只需使用提供的固件對(duì)PIC進(jìn)行編程,構(gòu)建電路以及調(diào)用通信軟件。為了幫助軟件開發(fā),本文提供了一個(gè)2線接口程序示例,以演示如何將提供的通信軟件集成到最終應(yīng)用中。如果只需要一個(gè)簡(jiǎn)單的2線程序即可與2線器件手動(dòng)通信,則可以下載并使用示例應(yīng)用的可執(zhí)行文件。
審核編輯:郭婷
-
usb
+關(guān)注
關(guān)注
60文章
7879瀏覽量
263742 -
微處理器
+關(guān)注
關(guān)注
11文章
2244瀏覽量
82267 -
GUI
+關(guān)注
關(guān)注
3文章
639瀏覽量
39488
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論