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