freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于can總線的單片機(jī)監(jiān)控系統(tǒng)(編輯修改稿)

2024-12-13 03:20 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 應(yīng)答,無(wú)錯(cuò)誤標(biāo)志); *支持熱插拔(無(wú)干擾軟件驅(qū)動(dòng)位速檢測(cè)); *硬件禁止 CLKOUT輸出。 下面只介紹 Basic CAN模式,對(duì)于 Peli CAN模式請(qǐng)查看參考文獻(xiàn) [1]。 SJA1000復(fù)位,默認(rèn)為 Basic CAN械,或者通過時(shí)鐘分頻寄存器的 CAN模式位來選擇模式。此位清零時(shí),為Basic CAN模式;置位時(shí),為 Peli CAN模式。在 Basic CAN模式下,對(duì) SJA1000進(jìn)行控制以及收發(fā)數(shù)據(jù), 都是通過對(duì) SJA1000內(nèi)部寄存器的讀 /寫訪問來實(shí)現(xiàn)的。對(duì)于單片機(jī)而言,操作 SJA1000就像訪問外部 RAM一樣簡(jiǎn)單。有兩種模式 可以對(duì) SJA1000 的內(nèi)部寄存器訪問,而在這兩種模式下對(duì)其寄存器的訪問是有區(qū)別的。這兩種模式分別是復(fù)位模式和工作模式。當(dāng)硬件復(fù)位,或控制器掉線,或置位復(fù)位請(qǐng)求位時(shí), SJA1000進(jìn)入復(fù)位模式;而當(dāng)清除復(fù)位請(qǐng)求位時(shí), SJA1000進(jìn)入工作模式。 SJA1000的寄存器分布于 0~ 31連續(xù)的地址空間中。這 32個(gè)字節(jié)可分為控制段( 10字節(jié))、發(fā)送緩沖器段( 10字節(jié))、接收緩沖器段( 10字節(jié))、時(shí)鐘分頻器和 1 個(gè)無(wú)效字節(jié)。在復(fù)位模式下可寫的寄存器為控制段的控制寄存器、命令寄存器、接收代碼寄存器、屏蔽寄存器、總線時(shí)序 0、總 線時(shí)序 輸出控制寄存器,還包括接收緩沖器和時(shí)鐘分頻器;而在工作模式下可寫的寄存器為控制寄存器、命令寄存器、發(fā)送緩沖器段、接收緩沖器段和時(shí)鐘分頻器。 下面根據(jù)應(yīng)用需要具體介紹 SJA1000的控制寄存器、命令寄存器、狀態(tài)寄存器、中斷寄存器。 ( 1)控制寄存器( CR) 控制寄存器位于 SJA1000 寄存器區(qū)的 0 地址,用來設(shè)置 CAN 總線的模式和各種中斷。其各位的意義如表 1所列。 表 1 控制寄存器各位說明( CR): CAN地址 0 位 符號(hào) 名稱 值 功 能 CR7 保留 CR6 保留 CR5 保留 CR4 OIE 溢出中斷使能 1 使能。如果置位數(shù)據(jù)溢出位,微控制器接收溢出中斷信號(hào) 0 禁止。微控制器不從 SJA1000接收溢出中斷信號(hào) CR3 EIE 錯(cuò)誤中斷使能 1 使能。若出錯(cuò)或總線狀態(tài)改變,此中斷信號(hào)有效 0 禁止。微控制器不從 SJA1000接收錯(cuò)誤中斷信號(hào) CR2 TIE 發(fā)送中斷使能 1 使能。當(dāng)信息被成功發(fā)送或發(fā)送緩沖器又被訪問時(shí),產(chǎn)生中斷信號(hào) 0 禁止。微控制器不從 SJA1000接收發(fā)送中斷信號(hào) CR1 RIE 接收中斷使能 1 使能。信息被無(wú)錯(cuò)誤接收時(shí),產(chǎn)生此中斷信號(hào) 0 禁止。此中斷信號(hào)被禁止 CR0 RR 復(fù)位請(qǐng)求 1 當(dāng)前。 SJA1000 檢測(cè)到復(fù)位請(qǐng)求后,忽略當(dāng)前發(fā)送 /接收信息,進(jìn)入復(fù)位模式 0 空缺。復(fù)位請(qǐng)求位接收到一個(gè)下降沿后, SJA1000回到工作模式 在 硬啟動(dòng)或總線狀態(tài)位設(shè)置為 1(總線關(guān)閉)時(shí),復(fù)位請(qǐng)求位被置為 ,微控制器不能把復(fù)位請(qǐng)求位置為 0。如果要把復(fù)位請(qǐng)求位置為 0,微控制器必須先檢查這一位,以確定外部復(fù)位引腳不為低電平。復(fù)位請(qǐng)求位被設(shè)為 0后, SJA1000將會(huì)等待: ( 11個(gè)弱勢(shì)位),如果前一次復(fù)位請(qǐng)求是硬件復(fù)位或 CPU初始復(fù)位; 128個(gè)總線空閑,如果前一次復(fù)位請(qǐng)求是 CAN控制器在重新進(jìn)入總線開啟模式前初始化總線造成的。 ( 2)命令寄存器( CMR) 命令寄存器對(duì)微控制來說是只寫存儲(chǔ)器。在復(fù)位模式和工作模式下 都可對(duì)此寄存器進(jìn)行訪問,但是讀這個(gè)地址返回值是 “11111111” 。表 2是命令寄存器各位的說明。將睡眠模式位置為 1, SJA1000進(jìn)入睡眠模式,此時(shí)沒有總線活動(dòng),沒有中斷等待。 。如果數(shù)據(jù)溢出位被置位,就不會(huì)產(chǎn)生數(shù)據(jù)溢出中斷了。在釋放接收緩沖器命令的同時(shí),可以發(fā)出清除數(shù)據(jù)溢出命令。讀 接收緩沖器之后,微控制器可以通過設(shè)置釋放接收緩沖器為 1,來釋放接收隊(duì)列當(dāng)前信息的內(nèi)存空間。 ( 3)狀態(tài)寄存器( SR) 狀態(tài)寄存器對(duì)微控制器來說是只讀存儲(chǔ)器,表 3 是狀態(tài)寄存器各位的 功能說明。當(dāng)傳輸錯(cuò)誤計(jì)數(shù)器超過限制( 255)(總線狀態(tài)位置 1,即總線關(guān)閉), CAN控制器就會(huì)將復(fù)位請(qǐng)求位置 1,在錯(cuò)誤中斷允許的情況下,會(huì)產(chǎn)生一個(gè)錯(cuò)誤中斷。這種狀態(tài)會(huì)持續(xù)到 CPU 清除復(fù)位請(qǐng)求位。對(duì)于錯(cuò)誤狀態(tài)位,當(dāng)至少有一個(gè)錯(cuò)誤計(jì)數(shù)器滿或超出 CPU警告限制( 96)時(shí),錯(cuò)誤狀態(tài)位被置位。在中斷使能的情況下,會(huì)產(chǎn)生錯(cuò)誤中斷。 表 2 命令寄存器各位的功能說明( CMR): CAN地址 1 位 符號(hào) 名稱 值 功 能 保留 保留 保留 GTS 睡眠 1 睡眠。若沒有 CAN中斷等待和總線活動(dòng), SJA1000進(jìn)入睡眠模式 0 喚醒。清除數(shù)據(jù)溢出狀態(tài)位 CDO 清除數(shù)據(jù)溢出 1 清除。清除數(shù)據(jù)溢出狀態(tài)位 0 無(wú)動(dòng)作 RRB 釋放接收緩沖器 1 釋放。接收緩沖器存放信息的內(nèi)存空間將被釋放 0 無(wú)動(dòng)作 AT 忽略發(fā)送 1 當(dāng)前。若不是在處理過程中,等待處理的發(fā)送請(qǐng)求將取消 0 空缺。無(wú)動(dòng)作 TR 發(fā)送請(qǐng)求 1 當(dāng)有。信息被發(fā)送 0 空缺。無(wú)動(dòng)作 表 3 狀態(tài)寄存器各位的功能說明( SR): CAN地址 2 位 符號(hào) 名稱 值 功 能 BS 總線狀態(tài) 1 總線關(guān)閉。 SJA1000退出總線活動(dòng) 0 總線開啟。 SJA1000加入總線活動(dòng) ES 出錯(cuò)狀態(tài) 1 出錯(cuò)。至少出現(xiàn)一個(gè)錯(cuò)誤計(jì)數(shù)器滿或超過 CPU報(bào)警限制 0 正常。兩個(gè)錯(cuò)誤計(jì)數(shù)器都在警限制以下 TS 發(fā)送狀態(tài) 1 發(fā)送。 SJA1000在傳送信息 0 空閑。沒有要發(fā)送的信息 RS 接收狀態(tài) 1 接收。 SJA1000正在接收信息 0 空閑。沒有可接收的信息 TCS 發(fā)送完畢狀態(tài) 1 完畢。最近一次發(fā)送請(qǐng)求被成功處理 0 未完畢。當(dāng)前發(fā)送請(qǐng)求未處理完畢 TBS 發(fā)送緩沖器狀態(tài) 1 釋放。 CPU可以向發(fā)送緩沖器寫信息 0 鎖定。 CPU不能訪問發(fā)送緩沖器,有信息正在等待發(fā)送或正在發(fā)送 DOS 數(shù)據(jù)溢出狀態(tài) 1 溢出。信息丟失,因?yàn)?RXFFIFO中沒有足夠的空間來存儲(chǔ) 0 空缺。自從最后一次清除數(shù)據(jù)溢出命令執(zhí)行,無(wú)數(shù)據(jù)溢出發(fā)生 RBS 接收緩沖 器狀態(tài) 1 滿。 RXFIFO中有可用信息 0 空。無(wú)可用信息 ( 4)中斷寄存器( IR) 通過中斷寄存器可識(shí)別中斷源。當(dāng)寄存器的 1位或多位被置位時(shí), INT(低電平有效)引腳被激活。寄存器被微控制器讀過之后,所有會(huì)導(dǎo)致 INT 引腳上的電平變化的位被復(fù)位。中斷寄存器對(duì)微控制而言是只讀存儲(chǔ)器。中斷寄存器各位的功能說明如表 4所列。 表 4 中斷寄存器各位的功能說明( IR): CAN地址 3 位 符號(hào) 名稱 值 功 能 保留 保留 保留 WUI 喚醒中斷 1 置位。退出睡眠模式時(shí)此位被置位 0 復(fù)位。微控制器的任何讀訪問將清除此位 DOI 數(shù)據(jù)溢出中斷 1 設(shè)置。當(dāng)數(shù)據(jù)溢出中斷使能位被置為 1時(shí),向數(shù)據(jù)溢出狀態(tài)位傳送 “0 1” ,此位被置位 0 復(fù)位。微控制器的任何讀訪問清除此位 EI 錯(cuò)誤中斷 1 置位。錯(cuò)誤中斷使能時(shí),錯(cuò)誤狀態(tài)位或總線狀態(tài)位的變化會(huì)置位此位 0 復(fù)位。微控制器的任何讀訪問清除此位 TI 發(fā)送中斷 1 置位。發(fā)送緩沖器狀態(tài)從 0變?yōu)?1(釋放)和發(fā)送中斷使能時(shí),置位此位 0 復(fù)位。微控制器的任何讀訪問清除此位 RI 接收中斷 1 置位。當(dāng)接收 FIFO不空和接收中斷使能時(shí)置位此位 0 復(fù)位。微控制器的任何讀訪問清除此位 2 SJA1000在節(jié)點(diǎn)中的應(yīng)用實(shí)例 該節(jié)點(diǎn)的微控制器選用了 8 位單片機(jī) AT89C51, SJA1000 作為 CAN 總線控制器,并且使用了 CAN 接口芯片82C此節(jié)點(diǎn)可直接運(yùn)用到 CAN 總線網(wǎng)絡(luò)系統(tǒng)中,或者對(duì)此節(jié)點(diǎn)電路稍加變動(dòng)來滿足設(shè)計(jì)的要求。下面從硬件電路和軟件設(shè)計(jì)兩部分來介紹。 節(jié)點(diǎn)硬件電路設(shè)計(jì) 圖 2是節(jié)點(diǎn)的電路原理圖。注意 SJA1000復(fù)位端的連接, AT89C51是高電平復(fù)位,而 SJA1000是低電平復(fù)位,因此復(fù)位信號(hào)要通過一個(gè)反相器與 SJA1000的復(fù)位端相連。另外 SJA1000的 11腳 MODE接高電平,選擇 Intel二分頻模式。 SJA1000的 16腳是中斷信號(hào)輸出端 ,在中斷允許情況下,有中斷發(fā)生時(shí), 16腳出現(xiàn)由高電平到低電平的跳變,因此 16 腳可以直接與 AT89C51 的外部中斷輸入腳相連接。該設(shè)計(jì)中之所以選擇 82C250芯片,是因?yàn)槠渚哂懈咚傩裕ㄗ罡呖蛇_(dá) 1 Mbps),具有抗瞬間干擾保護(hù)總線的能力,具有降低射頻干擾的斜率控制。此外,它可以與 110 個(gè)節(jié)點(diǎn)相連,防止電池與地之間發(fā)生短路,當(dāng)某一個(gè)節(jié)點(diǎn)掉電時(shí),不會(huì)影響總線。在設(shè)計(jì)節(jié)點(diǎn)電路時(shí),還要注意下面幾點(diǎn): 通過光耦與 82C250 的連接是電流隔離的接法,這樣可以防止線路間的串?dāng)_。在總線兩端要接 2個(gè) 120Ω 的 總線阻抗匹配電阻。忽略掉它們會(huì)降低總線的抗干擾能力,甚至導(dǎo)致無(wú)法通信。 82C250的 8腳( RS)之間接不同阻值的電阻,可選擇三種不同的工作方式:高速、斜率控制 和待機(jī),如表 5所列。 表 5 RS 選擇的三種工作方式 RB提供條件 方 式 R8上的電壓或電流 VRS 10μA IRS200μA VRS 待機(jī)方式 斜率方式 高速方式 IRS|10μA| VRS IRS500μA 在高速工作方式下,發(fā)送器輸出晶體管簡(jiǎn)單地以盡可能快 的速度啟閉。在這種方式下,不采取任何措施限制上升和下降斜率。建議使用屏蔽電纜以避免射頻干擾問題。通過將引腳 8接地,可選擇高速方式。 對(duì)于較低速度或較短總線長(zhǎng)度,可用非屏蔽雙絞線或平行線作總線。為降低射頻干擾,應(yīng)限制上升和下降斜率。上升和下降斜率可通過由引腳 8至地連接的電阻進(jìn)行控制。斜率正比于引腳 8上的電流輸出。 若引腳 8加有高電平,則電路進(jìn)入低電流待機(jī)方式。在這種方式下,發(fā)送器被關(guān)掉,而接收器轉(zhuǎn)至低電流。由于在待機(jī)方式下,接收器是慢速的,因此,第一個(gè)報(bào)文將被丟失。 TX1腳懸空, RX1引 腳的電位必須維持在約 ,否則,將不能形式 CAN協(xié)議所要求的電平邏輯 3. 2CAN總線硬件接口電路設(shè)計(jì) 硬件電路的設(shè)計(jì)主要是 CAN 通信控制器與微處理器之間和 CAN 總線收發(fā)器與物理總線之間的接口電路的設(shè)計(jì)。 CAN通信控制器是 CAN總線接口電路的核心,主要完成 CAN的通信協(xié)議,而 CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾 (RFI),實(shí)現(xiàn)熱防護(hù)等。 CAN總線接口電路 SJA1000 硬件接口原理圖如圖 l 所示。圖中, CAN 總線控制器 SJA1000 的 ADOAD7 連接到 AT89C51的 P0口。片選端 CS取反后連接到 AT89C51的 ,當(dāng) 1時(shí), CPU片外存儲(chǔ)器地址可選中 SJA1000。 CPU通過這些地址可對(duì) SJA1000執(zhí)行相應(yīng)的讀/寫操作 (即: SJA1000首地址為 8000H)。 SJA1000的 RD、WR、 ALE分別與 AT89C51的對(duì)應(yīng)引腳相連。由于 SJA1000是低電平復(fù)位,而 AT89C51是高電平復(fù)位,所以兩者的復(fù)位端接法不同。另外,當(dāng) SJA1000的 11腳 MODE接高電平時(shí),可選擇 Intel二分頻模式。 SJA1000的 16 腳 (INT)是中斷信號(hào)輸出端,在中斷允許的情況下,有中斷發(fā)生時(shí), 16 腳會(huì)輸出由高電平到低電平的跳變,因此將 AT89C51的外部中斷輸入腳 (INT0)與該腳相連接,即可通過中斷方式來訪問 SJA1000。為了增強(qiáng) CAN總線節(jié)點(diǎn)的抗干擾能力,本設(shè)計(jì)采用 SJA1000的具有光電隔離的 CAN總線接口。 SJA1000的發(fā)送輸出端 TX0與接收輸入端 RXO、 RX1分別經(jīng)高速集成光電耦合器 6N137隔離后,與 CAN 總線接口驅(qū)動(dòng)芯片 82C250的 TXD和 RXD相連, 82C250直接與 CAN物理總線相連。 CAN總線驅(qū)動(dòng)器 PCA82C250是 CAN控制器和物理總線之間的接口,具有可向總線的差動(dòng)發(fā)送數(shù)據(jù)和 CAN控制器的差動(dòng)接收數(shù)據(jù)的功能。 節(jié)點(diǎn)軟件設(shè)計(jì) 根據(jù)節(jié)點(diǎn)電路原理圖, SJA1000的首地址為 0000H。用 MCS51匯編語(yǔ)言編制的初始化程序如下: CR EQU 0000H ;控制寄存器 CMR EQU 0001H ;命令寄存器 SR EQU 0001H ;命令寄存器 SR EQU 0002H ;狀態(tài)寄存器 IR EQU 0003H ;中斷寄存器 ACR EQU 0004H ;接收代碼寄存器 AMR EQU 0005H ;接收屏蔽寄存器 BTR0 EQU 0006H ;總線時(shí)序寄存器 0 BTR1 EQU 0007H ;總線時(shí)序寄存器 1 OCR EQU 0008H ;輸出控制寄存器 MOV DPTR,CR MOV A,1BH 。開放接收、出錯(cuò)、溢出中斷 MOVX @DPTR, A ;置位復(fù)位請(qǐng)求,開始初始化 MOV DPTR, ACR MOV A, 03H ;接收代碼寄存器為 03H MOVX DPTR, A INC D
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1