在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CAN總線/RS232智能電平轉(zhuǎn)換器的設(shè)計(jì)

            CAN總線/RS232智能電平轉(zhuǎn)換器的設(shè)計(jì)

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


            4 軟件程序設(shè)計(jì)

            系統(tǒng)軟件程序設(shè)計(jì)包括:主程序、CAN節(jié)點(diǎn)初始化子程序、RS232報(bào)文發(fā)送子程序、RS232報(bào)文接收子程序、CAN報(bào)文接收子程序以及CAN報(bào)文發(fā)送子程序。其主程序流程圖如圖4所示。



            4.1 CAN節(jié)點(diǎn)初始化

            獨(dú)立CAN控制器SJAl000必須在上電或硬件復(fù)位后設(shè)置CAN通訊。上電后SJAl000的17引腳得到一個(gè)復(fù)位電平(低電平),使其進(jìn)入復(fù)位模式。初始化包括設(shè)置工作方式、接收濾波方式、接收屏蔽寄存器和接收代碼寄存器、波特率參數(shù)和中斷允許寄存器。初始化設(shè)置完成后,SJAl000則進(jìn)入工作狀態(tài),開(kāi)始執(zhí)行通訊任務(wù)。

            SJAl000寄存器初始化,首先要將其模式寄存器(MOD)復(fù)位模式位置為l,再通過(guò)時(shí)鐘分頻寄存器(CDR)選擇PeliCAN工作模式,同時(shí)關(guān)閉時(shí)鐘輸出(CLOCKOUT);通過(guò)中斷允許寄存器(IER)開(kāi)啟發(fā)送中斷、溢出中斷和錯(cuò)誤警告中斷;向接收屏蔽寄存器(AMR)和接收代碼(ACR)寄存器賦初值;通過(guò)總線定時(shí)寄存器0 (BTR0)和總線定時(shí)寄存器1(BTRl)設(shè)置波特率;為輸出控制寄存器(OCR)賦初值;通過(guò)接收緩沖器起始地址寄存器(RBSA)來(lái)設(shè)置接收緩沖器FIF0的起始地址;清除發(fā)送錯(cuò)誤計(jì)數(shù)寄存器(TXERR);清除錯(cuò)誤代碼捕捉寄存器(ECC),最后再次選擇方式寄存器(MOD),設(shè)置單濾波,并返回工作狀態(tài)。

            4.2 RS232報(bào)文發(fā)送

            AT89C52內(nèi)含一組全雙工串行傳輸界面,可同時(shí)接收或傳輸外部數(shù)據(jù),其信號(hào)為TTL電平。由于與標(biāo)準(zhǔn)的RS232界面不兼容,須加電平準(zhǔn)轉(zhuǎn)換IC才可與RS232相連。AT89C52串行發(fā)送及接收數(shù)據(jù)均是通過(guò)特殊功能暫存器SBUF完成,在設(shè)定通訊協(xié)議模式后,通過(guò)指令“MOV SUBF,A”就可將存儲(chǔ)在SBUF暫存器內(nèi)的數(shù)據(jù)由引腳TXD串行傳輸。

            4.3 RS232報(bào)文接收

            AT89C52串行傳輸控制暫存器是由特殊控制暫存器SCON控制,SCON設(shè)定串行傳輸工作模式,發(fā)送接收時(shí)其第9位及發(fā)送接收時(shí)中斷指示工作。通過(guò)指令“MOV A,SBUF”則將外界串行信號(hào)經(jīng)由RXD引腳讀入,并轉(zhuǎn)換成并列數(shù)據(jù)存入暫存器A。

            4.4 CAN報(bào)文發(fā)送

            根據(jù)CAN協(xié)議,報(bào)文傳輸是由獨(dú)立CAN控制器SJAl000完成。主控制器必須將要發(fā)送的數(shù)據(jù)按特定格式組合成一幀報(bào)文傳輸?shù)桨l(fā)送緩沖器,將命令寄存器中的“發(fā)送請(qǐng)求”置1,然后啟動(dòng)SJAl000發(fā)送即可。

            4.5 CAN報(bào)文接收

            CAN報(bào)文接收子程序負(fù)責(zé)節(jié)點(diǎn)的報(bào)文接收和其他情況的處理。接收子程序在結(jié)構(gòu)上要比發(fā)送子程序復(fù)雜一些,因?yàn)樵诮邮請(qǐng)?bào)文時(shí),要對(duì)同處理諸如總線關(guān)閉、錯(cuò)誤報(bào)警、接收溢出等情況。SJAl000報(bào)文接收和發(fā)送有兩種方式:中斷方式和查詢方式。查詢方式應(yīng)禁止接收中斷使能,而中斷方式一般用于實(shí)時(shí)性要求較高的情況。

            在中斷方式下,如果SJAl000已接收一個(gè)報(bào)文,而且報(bào)文通過(guò)驗(yàn)收濾波器并存入接收FIFO,則產(chǎn)生一個(gè)接收中斷。因此主控制器立刻工作,將收到的報(bào)文發(fā)送到報(bào)文存儲(chǔ)器中,再通過(guò)置位命令寄存器的相應(yīng)標(biāo)志“RRB”發(fā)送一個(gè)釋放接收緩沖器命令。接收FIF0里的更多報(bào)文將產(chǎn)生一個(gè)新的接收中斷,因此不能將所有接收FIF0中的有效信息在一個(gè)中斷周期內(nèi)讀出。接收緩沖器釋放后,SJAl000會(huì)檢查狀態(tài)寄存器中接收緩沖器狀態(tài)(RBS)是否有更多報(bào)文,所有有效信息都將循環(huán)讀出。

            5 結(jié)語(yǔ)

            本系統(tǒng)設(shè)計(jì)采用SJAl000作為CAN獨(dú)立控制器,以CAN/RS232智能電平轉(zhuǎn)換器為實(shí)例,論述了CAN總線與單片機(jī)之間的接口連接,對(duì)CAN總線的實(shí)際應(yīng)用具有一定的參考價(jià)值。

            本文引用地址:http://www.biyoush.com/article/151139.htm

            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: 收發(fā)器

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉