色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的CAN總線多節(jié)點(diǎn)遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)

          基于DSP的CAN總線多節(jié)點(diǎn)遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)

          作者: 時(shí)間:2012-07-27 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/257328.htm

          4. 1. 2  初始化郵箱
            
          對郵箱初始化即是對郵箱中的有關(guān)寄存器進(jìn)行初始化,主要用來設(shè)置郵箱接收或發(fā)送報(bào)文的標(biāo)識符,發(fā)送的是遠(yuǎn)程幀還是數(shù)據(jù)幀,并對發(fā)送的數(shù)據(jù)區(qū)賦初值。步驟為:禁止郵箱工作,即向郵箱方向/ 使能控制寄存器MDER 中的郵箱使能位MEn( n = 0~5) 寫0 ;設(shè)置MCR 寄存器中數(shù)據(jù)域改變請求位為1 ;配置郵箱的內(nèi)容;返回正常模式;使能郵箱。

          4. 1. 3  郵箱信息的接收和發(fā)送
            
          在做完以上初始化工作后, 就可以轉(zhuǎn)入郵箱的收發(fā)程序。為了大量的數(shù)據(jù)能在系統(tǒng)網(wǎng)絡(luò)上連續(xù)傳輸, 在內(nèi)存設(shè)置了2個(gè)數(shù)據(jù)緩沖區(qū)(讀和寫2 個(gè)數(shù)據(jù)區(qū)) , 分別用來存放要發(fā)送和接收的數(shù)據(jù)。用郵箱發(fā)送時(shí), 將準(zhǔn)備發(fā)送的數(shù)據(jù)從寫數(shù)據(jù)存儲區(qū)寫到發(fā)送郵箱的數(shù)據(jù)區(qū), 然后使能發(fā)送郵箱并設(shè)置TCR寄存器中發(fā)送請求位為1 , 判斷發(fā)送應(yīng)答信號和發(fā)送中斷標(biāo)志位, 在成功發(fā)送之后再將發(fā)送中斷標(biāo)志位和發(fā)送應(yīng)答位清除。


          圖4  數(shù)據(jù)發(fā)送流程圖
           
          對于一個(gè)接收事件來說,由于每個(gè)CAN 節(jié)點(diǎn)接收數(shù)據(jù)是根據(jù)檢測網(wǎng)絡(luò)上數(shù)據(jù)幀的ID 與接收郵箱中初始化設(shè)定的報(bào)文的設(shè)定ID 是否相符來決定該節(jié)點(diǎn)是否接收此數(shù)據(jù),因此在接收事件中,要設(shè)置接收郵箱報(bào)文的標(biāo)識符及標(biāo)識符相關(guān)的局部屏蔽寄存器(LAM) 。然后判斷接收信息懸掛位RMPn 或接收中斷標(biāo)志位MIFn 是否置位,如果位說明郵箱成功接收信息,將接收的數(shù)據(jù)轉(zhuǎn)移到讀據(jù)緩沖區(qū),然后復(fù)位接收中斷標(biāo)志位和接收信息懸掛位。


          圖5  數(shù)據(jù)接收流程圖

          4. 2  SCI 串行通信程序設(shè)計(jì)

          串行通信的程序分為 的串行收發(fā)和PC 機(jī)的串行收發(fā)兩個(gè)。對于PC 機(jī)的串行收發(fā)采用了標(biāo)準(zhǔn)串口通訊程序。TMS320LF2407 串行通信的軟件設(shè)計(jì)可以采用查詢和中斷兩種方式,設(shè)計(jì)中采用了中斷方式接收數(shù)據(jù),并設(shè)置軟件發(fā)送標(biāo)志位來查詢發(fā)送的方式。程序分為主程序和中斷服務(wù)程序2 個(gè)部分。

          在主程序中對SCI 異步串口進(jìn)行初始化(包括操作模式、波特率、字符長度、奇偶校驗(yàn)位、停止位位數(shù)、中斷優(yōu)先級和使能控制等信息) 。主程序設(shè)置了軟件發(fā)送標(biāo)志位,并不斷查詢此位,在其置位時(shí)發(fā)送數(shù)據(jù)。中斷服務(wù)程序中,當(dāng)需要上傳數(shù)據(jù)時(shí),在中斷程序或其他的子程序中置發(fā)送標(biāo)志位,由主程序通過查詢該標(biāo)志位來控制發(fā)送數(shù)據(jù);對于接收數(shù)據(jù),則在中斷服務(wù)程序中,將接收到的數(shù)據(jù)地址與相應(yīng)軟件設(shè)置的地址進(jìn)行比較,采用地址位喚醒模式實(shí)現(xiàn)與上位機(jī)通訊。

          在串行通信中,時(shí)鐘和波特率的同步是十分重要的,在編程中,考慮到所用芯片的特性和實(shí)際應(yīng)用需要,采用了系統(tǒng)時(shí)鐘為20 MHz ,通訊波特率4 800 bit/ s 與RS - 232 進(jìn)行通信。根據(jù)公式: SCI 異步波特率= SYSCLK/ [ (BRR + 1) ×8]
          來確定波特率選擇寄存器BRR 的值。

          值得注意的是在串行通信設(shè)置中,串行通信控制寄存器SCICTL1 的SLEEP 位(上電時(shí)為1) 設(shè)置很重要,SLEEP 位為SCI休眠位,為1 時(shí)使能休眠方式,它的正確設(shè)置可以使得通信過程正確的響應(yīng)中斷,從而轉(zhuǎn)移到相應(yīng)的服務(wù)程序中。因此必須正確設(shè)置使得程序只有在檢測到地址字節(jié)時(shí)被中斷。而在中斷程序中比較地址:若相同,則軟件清除SLEEP 位,確保在收到每個(gè)數(shù)據(jù)字節(jié)都可產(chǎn)生中斷;若不相同,則保持SLEEP 為1 以接收下一個(gè)地址。由于系統(tǒng)為多節(jié)點(diǎn)的通信,因此采用了地址位喚醒模式來正確控制各節(jié)點(diǎn)間的數(shù)據(jù)收發(fā)。在調(diào)試程序中為每個(gè)節(jié)點(diǎn)設(shè)置了2 個(gè)標(biāo)識地址(如00H 和FFH) ,當(dāng)收到00H時(shí), 發(fā)送數(shù)據(jù),當(dāng)收到FFH 時(shí), 接收數(shù)據(jù)。圖6、圖7 分別為串行主程序和中斷服務(wù)程序的流程圖。

          圖6 串行通信主程序流程圖


          圖7 中斷服務(wù)程序的流程圖

          5  結(jié)束語

          系統(tǒng)解決了野外作業(yè)時(shí)要求高穩(wěn)定性的遠(yuǎn)程問題,可以在環(huán)境惡劣的情況下,多點(diǎn)采集數(shù)據(jù),并將采集到的數(shù) 據(jù)及時(shí)處理傳輸?shù)竭h(yuǎn)端上位機(jī)進(jìn)行分析控制。在實(shí)際的測試中,用此系統(tǒng)很好地完成了數(shù)據(jù)的采集傳輸工作,由此得出此系統(tǒng)可以穩(wěn)定的進(jìn)行工作。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉