<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > CAN總線在家庭智能化控制系統(tǒng)中的應(yīng)用研究

          CAN總線在家庭智能化控制系統(tǒng)中的應(yīng)用研究

          作者: 時(shí)間:2010-09-22 來(lái)源:網(wǎng)絡(luò) 收藏


          用單片機(jī)AT89C52作為微處理器;用SJAl000作為微控制器,SJAl000中集成了協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可被動(dòng)局面對(duì)通信數(shù)據(jù)的幀處理;高速光電隔離用6N137實(shí)現(xiàn),其作用是防止串入信號(hào)干擾;MAX232用來(lái)完成RS 232電平到微控制器接口芯片TTL電平的轉(zhuǎn)換。具體的硬件接口電路參見SJAl000的資料,但有以下幾點(diǎn)需要注意:
          (1)兩端接有一個(gè)120 Ω的電阻,其作用是匹配阻抗,提高數(shù)據(jù)通信的抗干擾性及可靠性。但實(shí)際上只需保證CAN網(wǎng)絡(luò)中“CAN_H”和“CAN_L”之間的跨接電阻為60 Ω即可。
          (2)SJAl000的20引腳RXl在不使用時(shí)可接地,配合CDR.6的置位可使長(zhǎng)度大大增加。
          (3)引腳TX0,TXl的接法決定了串行輸出的電平。具體關(guān)系可參考輸出控制寄存器OCR的設(shè)置。
          (4)AT82C250的RS引腳與地間接有1個(gè)斜率電阻。電阻大小可根據(jù)總線通信速度作適當(dāng)調(diào)整,一般在16~140 kΩ之間。
          (5)MAX232外圍需要4個(gè)電解電容C1,C2,C3,C4,這些電容也是內(nèi)部電源轉(zhuǎn)換所需電容,其取值均為1μF/25 V,宜選用鉭電容并且位置量靠近芯片,電源Vcc和地之間要接1個(gè)0.1μF的去耦電容。
          在微處理控制下,RS 232和CAN進(jìn)行數(shù)據(jù)交換時(shí),采用串口接收和CAN中斷方式可提高工作效率。SJAl000的初始化在復(fù)位模式下才可以進(jìn)行,主要包括工作方式的設(shè)置、時(shí)鐘分頻和驗(yàn)收濾波寄存器的設(shè)置、波特率參數(shù)的設(shè)置以及中斷允許寄存器的設(shè)置等。其主程序流程圖如圖3所示。


          數(shù)據(jù)能否準(zhǔn)確傳遞還取決于波特率和流量控制,這也是軟件設(shè)計(jì)時(shí)不可忽略的地方。因此接下來(lái)主要介紹CAN波特率的設(shè)置、串口波特率的自動(dòng)檢測(cè)、串口數(shù)據(jù)流量控制。
          CAN協(xié)議中的要素之一是波特率。可以設(shè)置位周期中的位采樣點(diǎn)位置和采樣次數(shù),以使可以自由地優(yōu)化網(wǎng)絡(luò)性能,但在優(yōu)化過(guò)程中,要注意位定時(shí)參數(shù)基準(zhǔn)參考振蕩器的容差和系統(tǒng)中不同信號(hào)傳播延遲之間的關(guān)系。
          系統(tǒng)的位速率fbit表示每單位時(shí)間傳輸數(shù)據(jù)位的量,即波特率fbit=1/tbit。額定的位定時(shí)由3個(gè)互不重疊的段SYNC_SEG,TSEGl和TSEG2組成,這3個(gè)時(shí)間段分別是tSYNC_SEG,tTSEGl和tTSEG2。所以,額定位周期tbit是3個(gè)時(shí)間段的和:tbit=tSYNC_SEG+tTSEGl+tTSEG2。位周期中這些段都用整數(shù)個(gè)基本時(shí)間單位來(lái)表示。該時(shí)間單位叫時(shí)間份額TQ,時(shí)間份額的持續(xù)時(shí)間是CAN系統(tǒng)時(shí)鐘的一個(gè)周期tSCL,可從振蕩器時(shí)鐘周期tCLK取得。通過(guò)編程預(yù)分頻因數(shù)(波特率預(yù)設(shè)值BRP)可以調(diào)整CAN系統(tǒng)時(shí)鐘,即tSCL=BRP×2tCLK=2BPR/CLK。
          對(duì)CAN位定時(shí)計(jì)算的另一個(gè)很重要的時(shí)間段是同步跳轉(zhuǎn)寬度(SJW),持續(xù)時(shí)間是tSJW。SJW段并不是位周期的一段,只是定義了在重同步事件中被增長(zhǎng)或縮短的位周期的最大TQ數(shù)量。此外,CAN協(xié)議還允許用戶指定位采樣模式(SAM),分別是單次采樣和三次采樣模式(在3個(gè)采樣結(jié)果中選出1個(gè))。在單次采樣模式中,采樣點(diǎn)在TESG1段的末端。而三次采樣模式比單次采樣多取兩個(gè)采樣點(diǎn),它們?cè)赥SEGl段末端的前面,之間相差一個(gè)TQ。上面所提到的BPR,SJW,SAM,TESGl,TESG2都可由用戶通過(guò)CAN控制器的內(nèi)裝中寄存器BTR0和BTRl來(lái)定義。設(shè)置好BTR0和BTRl后,實(shí)際傳輸?shù)牟ㄌ芈史秶鸀椋鹤畲?1/(tbit-tSJW),最小=1/(tbit+tSJW)。
          檢測(cè)轉(zhuǎn)換裝置的串口波特率,首先可對(duì)主機(jī)的接收波特率(以9600 b/s為例)進(jìn)行設(shè)定,并在終端發(fā)送一個(gè)特定的字符(以回車符為例),這樣,主機(jī)根據(jù)接收到的字符信息就可以確定轉(zhuǎn)換裝置的通信波特率?;剀嚪腁SCII值是0DH,在不同波特率下接收到的值如表1所列。


          數(shù)據(jù)在兩個(gè)串口之間的傳輸時(shí),常常會(huì)出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象。由于單片機(jī)緩沖區(qū)有限,如接收數(shù)據(jù)時(shí)緩沖區(qū)已滿,那么此時(shí)繼續(xù)發(fā)送來(lái)的數(shù)據(jù)就會(huì)丟失。而流控制能有效地解決該問(wèn)題,當(dāng)接收端數(shù)據(jù)處理不過(guò)來(lái)時(shí),流就會(huì)發(fā)出“不再接收”的信號(hào),而使發(fā)送端停止發(fā)送,直到收到“可以繼續(xù)發(fā)送”的信號(hào)再發(fā)送數(shù)據(jù)。因此流控制可以控制數(shù)據(jù)傳輸?shù)倪M(jìn)程,防止數(shù)據(jù)丟失。常用的兩種流控制是硬件流控制(包括RTS/CTS,DTR/CTS等)和軟件流控制XON/XOFF(繼續(xù)/停止),下面僅就硬件流控制RTS/CTS加以說(shuō)明。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();