高旭東,徐澤清,韓喜春
(黑龍江工程學(xué)院 電氣與信息工程學(xué)院,黑龍江 哈爾濱150050)
RS-485網(wǎng)絡(luò)由于實(shí)現(xiàn)簡單、造價(jià)低廉、可靠性高、支持的廠家多,在工農(nóng)業(yè)生產(chǎn)、交通、教育、環(huán)境、國防和科研等領(lǐng)域有著廣泛應(yīng)用。半導(dǎo)體廠商不論是CPU芯片還是接口芯片都對(duì)RS-485提供了強(qiáng)有力支持,Cypress公司生產(chǎn)的PSOC系列芯片中用固件元件UART可以實(shí)現(xiàn)多個(gè)串行接口。PSOC(Programmable System on Chip)作為一款新的嵌入式系統(tǒng)設(shè)計(jì)平臺(tái),在原8051核和ARM Cortex-M3核的基礎(chǔ)上,在芯片的PLD實(shí)現(xiàn)可配置的固件元件提供給用戶,使設(shè)計(jì)人員根據(jù)項(xiàng)目需求靈活地選擇可配置外設(shè)與微處理器自動(dòng)連接。利用PSOC提供的模擬和數(shù)字資源,設(shè)計(jì)者也可以定制需要的特殊元件。PSOC集成開發(fā)環(huán)境帶有100個(gè)左右的嵌入式設(shè)計(jì)中常有的外圍器件,能夠滿足大多數(shù)項(xiàng)目需求。特別是它提供的高精度模擬和模擬數(shù)字混合外設(shè)元件,是該器件的主要特色。采用PSOC實(shí)現(xiàn)的RS-485測控網(wǎng)絡(luò)的系統(tǒng)結(jié)構(gòu)如圖1所示,系統(tǒng)具有多個(gè)從節(jié)點(diǎn),圖中只畫出1個(gè)。由PSOC實(shí)現(xiàn)的RS-485網(wǎng)絡(luò)與其它微處理器的顯著區(qū)別是可以放置多個(gè)UART串行接口、UART功能可以根據(jù)需要增減、提供節(jié)點(diǎn)地址識(shí)別功能和強(qiáng)大的API(應(yīng)用程序接口)函數(shù)支持。
圖1 RS-485測控網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
以PSOC為主控元件設(shè)計(jì)的RS-485網(wǎng)絡(luò)的主節(jié)點(diǎn)和從節(jié)點(diǎn)固件原理圖分別如圖2和圖3所示。從圖2看出,主控節(jié)點(diǎn)中只包含3個(gè)芯片:PSOC、ADM2483和ADM3251E。ADM2483是ADI公司生產(chǎn)的磁隔離RS-485接口芯片,用它實(shí)現(xiàn)主節(jié)點(diǎn)和從節(jié)點(diǎn)的電氣隔離,每個(gè)從節(jié)點(diǎn)也使用該芯片實(shí)現(xiàn)與其它節(jié)點(diǎn)的電氣隔離(圖3沒有畫出來)。ADM3251E是ADI公司生產(chǎn)的磁隔離RS-232接口芯片,用它實(shí)現(xiàn)主節(jié)點(diǎn)與上位機(jī)的電氣隔離。與光電隔離相比,ADI公司的磁隔離器件也是RS-485和RS-232收發(fā)器,接口簡單、隔離電壓高、功耗低、速度快和連接節(jié)點(diǎn)多。
PSOC原理圖設(shè)計(jì)非常方便,在工作空間瀏覽器中打開TopDesign.cysch文件,在元件庫中選擇元件放置到畫布,然后進(jìn)行元件參數(shù)配置,需要連線的與其它器件連線,有些器件不需要連線。畫完原理圖后,打開文件*.cydwr進(jìn)行引腳鎖定(分配引腳)。在圖2中,UART_1用于與上位機(jī)進(jìn)行通信,通過UART_1接收到上位機(jī)的命令和數(shù)據(jù)后,PSOC的CPU將其轉(zhuǎn)換成從節(jié)點(diǎn)接收的數(shù)據(jù)格式,再通過UART_RX傳送給從節(jié)點(diǎn)。UART_RX接收到從節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)格式后經(jīng)UART_1傳到上位機(jī)。因?yàn)樯衔粰C(jī)沒有9位地址識(shí)別的通信方式,所以UART_1采用8位通信方式,UART_RX采用9位通信方式與從節(jié)點(diǎn)進(jìn)行通信。主節(jié)點(diǎn)功能就是協(xié)議轉(zhuǎn)換器,將上位機(jī)命令和數(shù)據(jù)轉(zhuǎn)換成從節(jié)點(diǎn)能識(shí)別的格式。液晶顯示屏LCD用于顯示上位機(jī)和從節(jié)點(diǎn)的實(shí)時(shí)信息。電容式觸摸鍵盤CapSense用于輸入控制命令和配置參數(shù),對(duì)從節(jié)點(diǎn)進(jìn)行配置。emFile是一個(gè)嵌入式文件系統(tǒng)固件元件,用于連接SD卡存儲(chǔ)歷史數(shù)據(jù)。
在圖3的從節(jié)點(diǎn)原理圖中,磁隔離RS-485收發(fā)器(圖中沒畫出來)與PSOC中的UART_TX相連,用于和主節(jié)點(diǎn)進(jìn)行通信。圖中含有的固件元件功能和作用分別是IDAC8_1和VDAC8_1,為8位電流輸出和電壓輸出型數(shù)模轉(zhuǎn)換器,最多可以使用4個(gè)這種器件。AMux_1模擬多路開關(guān),可以放多個(gè),每個(gè)最多32通道,受芯片引腳數(shù)量限制,本設(shè)計(jì)采用差動(dòng)8通道。模擬開關(guān)的輸出作為可編程增益放大器PGA_1和PGA_2組成的差動(dòng)放大器的輸入,PGA_1和PGA_2的輸出作為模數(shù)轉(zhuǎn)換器ADC的差動(dòng)輸入。狀態(tài)寄存器Status_Reg_1用于開關(guān)量輸入,控制寄存器Control_Reg_1用于開關(guān)量輸出,可以放置多個(gè)開關(guān)量器件,受PSOC引腳數(shù)量限制。計(jì)數(shù)器Counter_1用于脈沖量輸入,PWM_1用于脈沖量輸出,數(shù)據(jù)存儲(chǔ)器EEPROM_1用于節(jié)點(diǎn)的配置參數(shù)存儲(chǔ)。
PSOC的固件元件大多數(shù)是可配置元件,元件隨配置參數(shù)不同而具有不同的功能。元件的配置參數(shù)可以在設(shè)計(jì)時(shí)配置,也可以在程序運(yùn)行時(shí)通過系統(tǒng)提供的API函數(shù)動(dòng)態(tài)修改。本設(shè)計(jì)中用到的元件較多,下面選擇幾個(gè)元件介紹其參數(shù)和配置方法。
圖4 IDAC的屬性配置
IDAC的屬性配置如圖4所示。電流源的極性設(shè)置為正,電流范圍為0~2mA,初始值可任意,速度為低速,數(shù)據(jù)源為CPU,選通模式為寄存器寫。VDAC的設(shè)置與此類似。
PGA的屬性配置如圖5所示。增益1~50,選擇8,功耗選擇高,參考電源選擇內(nèi)部地。
圖5 PGA的屬性配置
如圖6所示,ADC可以4個(gè)配置切換運(yùn)行,本設(shè)計(jì)只選擇1個(gè)配置。采樣模式為連續(xù)采樣,分辨率為20位,轉(zhuǎn)換速率100Hz,輸入模式為差分,輸入范圍1.024V,緩沖放大器增益為1,參考電壓為內(nèi)部1.024V。
圖6 ADC的屬性配置
UART的屬性配置如圖7和圖8所示。在圖2中的UART_1配置為全雙工模式,波特率為115 200,8位數(shù)據(jù)位,無校驗(yàn)位,1位停止位,高級(jí)配置中選擇RX字節(jié)接收中斷,其余按缺省設(shè)置;UART_RX配置為全雙工模式,波特率為115 200,9位數(shù)據(jù)位,校驗(yàn)類型為Mark/Space,1位停止位,高級(jí)配置中選擇RX字節(jié)接收中斷,地址模式選擇軟件字節(jié)到字節(jié)Software Byte by Byte、Address#1和Address#2為本機(jī)地址,設(shè)置16進(jìn)制地址值,用于將接收的地址與此地址進(jìn)行比較,相符就接收隨后的字節(jié)數(shù)據(jù),其余按缺省配置。圖3中UART_TX的配置與UART_RX除地址外其余相同。
本設(shè)計(jì)中的軟件設(shè)計(jì)包括上位機(jī)、主節(jié)點(diǎn)和從節(jié)點(diǎn)的程序設(shè)計(jì)。上位機(jī)采用VB2008作為開發(fā)平臺(tái),通過串行通信控件實(shí)現(xiàn)與主節(jié)點(diǎn)的通信。本文主要介紹如圖9、圖10和圖11所示的主節(jié)點(diǎn)和從節(jié)點(diǎn)程序設(shè)計(jì)方法。
PSOC的突出特點(diǎn)就是軟件設(shè)計(jì)工作量低,根本不需要知道所使用的元件是怎樣實(shí)現(xiàn)的,只需要知道所使用的元件的功能、性能和一些使用該元件的配置參數(shù)即可通過系統(tǒng)提供的API(應(yīng)用程序接口)函數(shù)實(shí)現(xiàn)對(duì)元件運(yùn)行的控制。一般的程序只需要編寫兩類函數(shù):中斷函數(shù)和main函數(shù)。設(shè)計(jì)好固件原理圖后,在Creator圖形化集成開發(fā)環(huán)境就可以通過編譯在工作空間瀏覽器中生成各個(gè)元件的C語言文件和頭文件。如果元件可以產(chǎn)生中斷,在該元件的C語言源程序文件中就會(huì)產(chǎn)生中斷程序框架,只要在這個(gè)中斷子程序框架內(nèi)的放置代碼提示信息位置輸入你的中斷程序代碼即可[6]。
圖9 RS-485主節(jié)點(diǎn)程序流程
在圖9主節(jié)點(diǎn)的主程序流程圖中,在main函數(shù)中根據(jù)主程序任務(wù)流程圖編寫出整個(gè)項(xiàng)目的控制源代碼,在代碼中調(diào)用了許多系統(tǒng)生成的API函數(shù)實(shí)現(xiàn)對(duì)元件的控制。中斷和一些元件需要運(yùn)行與元件相關(guān)的API函數(shù)啟動(dòng),例如UART_RX的啟動(dòng)函數(shù)為UART_RX_Start(),在啟動(dòng)函數(shù)中調(diào)用該元件的初始化函數(shù)。主節(jié)點(diǎn)除了顯示信息和配置從節(jié)點(diǎn),主要功能是實(shí)現(xiàn)上位機(jī)與從節(jié)點(diǎn)的數(shù)據(jù)交換,將上位機(jī)的8位數(shù)據(jù)格式轉(zhuǎn)換為從節(jié)點(diǎn)通信使用的9位數(shù)據(jù)格式。主節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前,要通過 API函數(shù) UART_RX_SetTxAddressMode(UART_RX_SET_M(jìn)ARK)設(shè)置 UART發(fā)送的數(shù)據(jù)是地址,UART能自動(dòng)控制發(fā)送的數(shù)據(jù)串只有第一個(gè)字節(jié)具有地址標(biāo)志UART_RX_SET_M(jìn)ARK,其余字節(jié)標(biāo)志為UART_RX_SET_SPACE,即數(shù)據(jù)字節(jié)。設(shè)置完地址標(biāo)志后,要發(fā)送數(shù)據(jù)的第一個(gè)字節(jié)設(shè)置從節(jié)點(diǎn)地址。接收數(shù)據(jù)相對(duì)復(fù)雜些,在接收中斷子程序中實(shí)現(xiàn),如圖11所示。在數(shù)據(jù)接收子程序中讀取狀態(tài)寄存器和數(shù)據(jù)寄存器數(shù)據(jù),通過狀態(tài)位UART_RX_RX_STS_M(jìn)RKSPC判斷讀取到數(shù)據(jù)寄存器中的數(shù)據(jù)是地址還是數(shù)據(jù),如果是地址,判斷是否是本機(jī)地址,是本機(jī)地址就將本機(jī)地址標(biāo)志位置1,如果不是本機(jī)地址,本機(jī)地址標(biāo)志位置0,退出中斷子程序。如果是數(shù)據(jù)字節(jié),本機(jī)地址標(biāo)志是1,判斷是否是包結(jié)束符,是包結(jié)束符,就送包結(jié)束符到接收數(shù)據(jù)包數(shù)組,并將數(shù)據(jù)包標(biāo)志置1,如果不是包結(jié)束符,就將數(shù)據(jù)字節(jié)追加到接收數(shù)據(jù)包數(shù)組,退出中斷子程序。如果本機(jī)地址標(biāo)志是0,退出中斷子程序。從節(jié)點(diǎn)的主程序流程圖和接收中斷子程序流程圖如圖10和圖11所示。
圖10 RS-485從節(jié)點(diǎn)程序流程
通過PSOC的UART元件在本設(shè)計(jì)中的實(shí)際應(yīng)用可以看出,在圖形化集成開發(fā)環(huán)境Creator的強(qiáng)大功能支持下,采用PSOC一個(gè)核心器件就可以實(shí)現(xiàn)RS-485多功能測控模塊的設(shè)計(jì),該模塊具有模擬量輸入和輸出、開關(guān)量輸入和輸出、脈沖量輸入和輸出功能。利用PSOC開發(fā)工業(yè)控制網(wǎng)絡(luò)模塊具有集成度高、造價(jià)低、開發(fā)周期短和可靠性高等特點(diǎn)。PSOC是嵌入式設(shè)計(jì)中很有發(fā)展前途的混合信號(hào)處理器,值得在工農(nóng)業(yè)生產(chǎn)、教育和國防科技等領(lǐng)域推廣應(yīng)用。
圖11 主節(jié)點(diǎn)和從節(jié)點(diǎn)接收中斷子程序流程
[1]Cypress Semiconductor.PSoC Development kit Guide[EB/OL].http://china.cypress.com/ID=38240@113.Feb,2011.
[2]Cypress Semiconductor.Universal Asynchronous Receiver Transmitter[EB/OL].http://www.cypress.com/docID=32438.Dec,2011.
[3]何賓.可編程片上系統(tǒng)PSoC設(shè)計(jì)指南[M].北京:化學(xué)工業(yè)出版社,2011.
[4]曹祁,王曉萍,郭振武.Modbus協(xié)議在數(shù)據(jù)采集儀中的實(shí)現(xiàn)[J].機(jī)電工程,2004,1(6):49-50.
[5]穆巖,陳波.基于RS485總線和 ModBus RTU通訊協(xié)議的漿紗機(jī)速度監(jiān)測系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2011,24(5):29-30.
[6]韓喜春,高旭東,張春燕.基于PSOC的通用計(jì)數(shù)器設(shè)計(jì)[J].黑龍江工程學(xué)院學(xué)報(bào):自然科學(xué)版,2011,25(3):48-52.
[7]曾媛,于曉明,張開生.嵌入式冷庫環(huán)境監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2011,19(3):565-567.