SERCON816型SERCOS總線控制器及其應(yīng)用
關(guān)鍵詞:SERCON816 SERCOS總線 總線控制器
1 引言
SERCOS總線是一種連接運動控制器與驅(qū)動器的運動控制總線。它出現(xiàn)的較晚,但一面世便受到世界各種設(shè)備供應(yīng)商的廣泛關(guān)注。SERCOS總線特有的開放性、同步性與抗干擾性有力支持了目前各先進工業(yè)國家對開放式數(shù)控系統(tǒng)的研究與應(yīng)用,因此其協(xié)議很快便被采納為國際標(biāo)準(zhǔn)。2002年中國也正式頒布了SERCOS協(xié)議的國家標(biāo)準(zhǔn)。在此之前,SERCOS總線已被應(yīng)用于實踐,如今全球有70多家公司能提供帶有SERCOS接口的數(shù)字產(chǎn)品,國外生產(chǎn)的各類印刷機、食品包裝機、裝配機器人、半導(dǎo)體加工設(shè)備、紡織機及其它具有特殊用途的機器中也不乏SERCOS總線的應(yīng)用。因內(nèi)也開始嘗試應(yīng)用這一后起之秀,相關(guān)的研究也在日益增多。文中從應(yīng)用角度,結(jié)合筆者實際使用中的經(jīng)驗,著重介紹一款主流的SERCOS總線控制器一SERCON816,希望能借此對國內(nèi)數(shù)控技術(shù)的發(fā)展起到拋磚引玉的作用。
2 SERCON816簡介
SERCON816是由歐洲SERCOS協(xié)會推出的第二代SERCOS總線控制器。該芯片集成了SERCOS總線的數(shù)據(jù)鏈路層,通過設(shè)定片內(nèi)寄存器和讀寫結(jié)構(gòu)化的雙口RAM便可實現(xiàn)總線的通訊。這款芯片報文處理的時鐘頻率最大可達16MHz,即可在最短為62.5μs的固定周期內(nèi)實現(xiàn)一主多從的環(huán)形通訊。SERCON816資源豐富,功能強大,內(nèi)部有43個16位的控制寄存器、2kB的雙口RAM、2個外部中斷引腳、34個內(nèi)部中斷源、1個看門狗定時器及DMA控制器。另外,該電路的接口方式也靈活多樣,與微處理器互聯(lián)的總線寬度即可為8位,也可為16位;讀/寫控制的模式既可遵循Intel標(biāo)準(zhǔn),也可遵循Motorola標(biāo)準(zhǔn)。而串行接口的通訊也可選用光纖或電纜來實現(xiàn)。SERCON816的內(nèi)部功能結(jié)構(gòu)如圖1所示。
3 SERCON816的應(yīng)用
3.1 SERCON816與微處理器的接口
SERCON816以總線的形式與微處理器接口??偩€操作有兩種模式,第一種是總線分離模式。在該模式下,數(shù)據(jù)總線上只傳遞數(shù)據(jù),地址總線上只傳遞地址;第二種是總線復(fù)用模式。此時,對于片外數(shù)據(jù)總線而言,既傳遞數(shù)據(jù)也傳遞地址,不過,在芯片內(nèi)部通過地址鎖存器將二者分開了,具體說明見表1。
表1 SERCON816與微處理器接口
ADMUX | 0 | 總線分離模式 |
1 | 總線復(fù)用模式 | |
BUSWIDTH | 0 | 數(shù)據(jù)總線寬度為8位 |
1 | 數(shù)據(jù)總線寬度為16位 | |
A0 | A0、BHEN=00,數(shù)據(jù)總線有效位D0-D15;A0、BHDEN=01,為D0-D7;A0、BHEN=DIR=1,D0-D7代表高字節(jié),D8-D15代表低字節(jié) | |
BHEN | ||
BYTEDIR | 16位數(shù)據(jù)總線 | BYTEDIR=0,D0-D7代表低字節(jié),D8-D15代表高字節(jié),BYTEDIR=1,D0-D7代表高字節(jié),D8-D15代表低字節(jié) |
8位數(shù)據(jù)總線 | BYTEDIR=0時,A0=0傳遞低字節(jié),A0=1傳遞高字節(jié),BYTEDIR=1時,A0=0傳遞高字節(jié),A0=1傳遞低字節(jié) |
在總線分離模式下,首先要將BUSWIDTH置1,以選擇16位寬的數(shù)據(jù)總線。然后將A0、BHEN都接地,使數(shù)據(jù)總線16位均有效。還要注意BYTEDIR的選擇,由于內(nèi)部寄存器或RAM單元都是16位的,分離、低二個字節(jié),當(dāng)BYTEDIR=0時,數(shù)據(jù)總線上傳送的低8位數(shù)據(jù)作為低字節(jié)存入,高8位數(shù)據(jù)作為高字節(jié)存入;而當(dāng)BYTEDIR=1時,低8位數(shù)據(jù)作為高字節(jié)存入,高8位數(shù)據(jù)作為低字節(jié)存入。通常情況下,將BYTEDIR接地。
總線復(fù)用模式主要是為了與8位微處理器進行接口。在這種模式下,片外數(shù)據(jù)總線首先傳送地址信號,穩(wěn)定后,打開內(nèi)部鎖存器將地址輸入到內(nèi)部地址總線,隨后鎖存器關(guān)閉,將地址鎖存,最后再從片外數(shù)據(jù)總線將8位數(shù)據(jù)傳入內(nèi)部數(shù)據(jù)總線。由于內(nèi)部寄存器或RAM單元由高、低二個字節(jié)構(gòu)成,讀/寫時總是一個字節(jié)一個字節(jié)的進行,次序由BYTEDIR的設(shè)寫與A0的變化來確定。值得注意的是,當(dāng)與Motorola微處理器或8051系列微處理器進行接口時,BYTEDIR通常被設(shè)為1;而當(dāng)與非8051系列的其它Intel微處理器接口時,BYTEDIR通常被設(shè)為0。
SERCON816總線的讀寫控制可選用Intel或Motorola二種標(biāo)準(zhǔn)之一,具體說明見表2。
表2 讀寫操作的標(biāo)準(zhǔn)說明
BUSMODEO | BUSMODE1 | 標(biāo)準(zhǔn) | WRN | RDN |
0 | X | Intel | WRN | RDN |
1 | 0 | Motorola | R/WN | 低電平WRN有效 |
1 | 1 | Motorola | R/WN | 高電平WRN有效 |
當(dāng)BUSMODE0為0時,采用Intel標(biāo)準(zhǔn)。此時,若WRN為低、RDN為高,進行寫操作;若RDN為低、WRN為高,進行讀操作。當(dāng)BUSMODE0=1時,采用Motorola標(biāo)準(zhǔn),只有在這種標(biāo)準(zhǔn)下,BUSMODE1才有意義。如果此時的BUSMODE1=0,說明當(dāng)控制線RDN上出現(xiàn)低電平時,控制線WRN的控制信號有效;而如果BUSMODE1=1,說明當(dāng)控制線RDN上出現(xiàn)高電平時,控制線WRN的控制信號有效。當(dāng)WRN有效時,高電平表示讀,低電平表示寫。
SERCON816內(nèi)部有2048字的雙口RAM和大量的控制寄存器。由于對它們訪問的地址上有重疊,所以必須事先確認(rèn)訪問的是雙口RAM還是控制寄存器。當(dāng)MCSN0=0,MCS=1時,對RAM進行讀寫操作;而當(dāng)PCSN0=0,PCS1=1時,則對寄存器進行讀寫操作。
圖2
3.2 時鐘與復(fù)位
SERCON816需要二個時鐘。一個由SCLK引腳輸入,作為基準(zhǔn)源;另一個由MCLK引腳輸入,用于報文處理。作為新一代的SERCOS接口控制器,為了能夠很好地與上一代控制器兼容,SERCON816提供了一個可選的設(shè)置引腳SBAUD16。通常,將SBAUD16接5V電源,可使SERCON816工作在兼容模式下。注意:SCLK最高輸入頻率為64MHz,MCLK輸入頻率在12MHz~64MHz之間。
SERCON816有硬件復(fù)位和軟件復(fù)位二種方式。硬件復(fù)位是通過在RSTN引腳上加一個寬度不小于50ns的負(fù)脈沖來完成。不過,在非兼容模式下或掉電復(fù)位時,負(fù)脈沖的寬度不應(yīng)小于10ms。此外,還要注意在復(fù)位電路中加上具有低通濾波器特性的電路以防止毛刺噪聲的干擾。軟件復(fù)位則是通過向SERCON816的控制寄存器SWRST位寫1來完成。如果SERCON816未能正常復(fù)位,則可以通過軟件進行復(fù)位。
3.3 通信波特率的設(shè)置
波特率也可通過硬件或軟件來設(shè)置。寄存器ENTSBAUD決定著波特率的設(shè)置方式。當(dāng)ENTSBAUD=0時,通常硬件設(shè)置;而當(dāng)ENTSBAUD=1時,通過軟件設(shè)置,具體見表3,此表是在fmclk=64MHz時的波特率選擇。
表3 通信波特率的設(shè)置
ENTSBAUD | SBAUD | SBAUD16 | SWSABUD | SWSBUAD16 | 波特率 |
0 | 1 | 1 | X | X | 2M(fsclk/32) |
0 | 0 | 1 | X | X | 4M(fsclk/16) |
1 | X | 1 | 1 | X | 2M(fsclk/32) |
1 | X | 1 | 0 | X | 4M(fsclk/16) |
0 | 1 | 0 | X | X | 8M(fsclk/8) |
0 | 0 | 0 | X | X | 16M(fsclk/4) |
1 | X | 0 | 1 | 1 | 2M(fsclk/32) |
1 | X | 0 | 0 | 1 | 4M(fsclk/16) |
1 | X | 0 | 1 | 0 | 8M(fsclk/8) |
1 | X | 0 | 0 | 0 | 16M(fsclk/4) |
當(dāng)芯片工作在與SERCON410B兼容的模式下時,如果選擇硬件設(shè)置波特率則控制寄存器SWSBAUD和SWSBAUD16無效,此時,可以通過引腳SBAUD選擇2MHz或4MHz的波特率;如果選擇軟件設(shè)置波特率,則引腳SBAUD無效,此時,可以通過寄存器SWSBAUD選擇2MHz或4MHz的波特率。同理,可設(shè)置非兼容模式下的波特率。
實際應(yīng)用中,會出現(xiàn)波特率的實際值與設(shè)置值不相等的情況。造成這種情況的實際值與設(shè)置值不相等的情況。造成這種情況的原因可能是由于信號變形過大或通訊回路堵塞。此時,在SERCON816內(nèi)部會產(chǎn)生相同的中斷和錯誤標(biāo)志,用戶由此可以判斷錯誤產(chǎn)生的原因。在通信正常以后,錯誤標(biāo)志會自動復(fù)位,而中斷標(biāo)志則必須通過軟件來清除。
3.4 輸入/輸出引腳的設(shè)置
SERCOS總線一般采用光通訊的方式,以提高抗干擾能力。接口的光電轉(zhuǎn)換通過光電接頭自動完成。為了能調(diào)節(jié)輸出電流的大小,使得輸出信號具有不同的驅(qū)動能力,SERCON816提供了6個輸出引腳。這樣便可以通過使能輸出引腳的多少來調(diào)節(jié)輸出電流的大小。通常將6根輸出引腳并聯(lián)起來,可以得到60mA的最大靜態(tài)輸出電流和120mA的最大動態(tài)輸出電流。另外還需在每一根輸出引腳上外接一個電阻器和并聯(lián)一個RC電路,其目的是來用電阻器傳遞靜態(tài)電流,利用RC電容來穩(wěn)定信號快速變化時產(chǎn)生的動態(tài)電流。
SERCON816與51單片機接口連接如圖2所示。
3.5 軟件設(shè)計
軟件設(shè)計主要集中在對SERCON816進行初始化。初始化主要包括:RAM報文數(shù)據(jù)初始化、硬件配置初始化和通訊初始化。其流程圖如圖3所示。
硬件配置初始化和通訊初始化主要通過設(shè)置控制寄存器中的相應(yīng)位來完成,推薦的寄存器配置見表4,而RAM的初始化則是按照電路要求的數(shù)據(jù)結(jié)構(gòu)在RAM開辟特定的數(shù)據(jù)空間。
表4 控制寄存器的配置
硬件配置寄存器參數(shù) | REGMODE | 1 | 報文處理寄存器參數(shù) | ENTMT | 1 |
SYNCWR | 1 | COMBLK0 | 0 | ||
TXDMODE | 0 | COMBLK1 | 0 | ||
ENTXD1_6 | 111111B | PHASO | 1 | ||
TMODE0_2 | 111B | PHAS1 | 2 | ||
REG_06H | 0008H | MSTTCHK | 0 | ||
REG_07H | 0001H | ||||
REG_09H | 0223H | ||||
REG-08H | 4100H | ||||
通訊寄存器參數(shù) | REG_09H | 1 | MCLKST | 6 | |
ENTSBAUD | 0 | TCNTST | 2 | ||
SWBAUD | 1 | JTSYC1 | -1 | ||
MSTEN | 0 | JTSCYC2 | 6 | ||
REPON | 1 | TSCYC0 | 1000 | ||
MCLKDIV | 15 | PHAS12 | 1 |
4 結(jié)束語
SERCON816是實現(xiàn)SERCOS通訊的核心電路,使SERCOS總線在國際數(shù)控領(lǐng)域得到了很好的應(yīng)用。筆者近一二年通過對SERCOS總線的研究,在實際的開發(fā)過程中深感此芯片的重要性,希望上述心得能為國內(nèi)相關(guān)人士的深入研究提供一個參考。