<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP 技術(shù)和CAN總線(xiàn)的多節點(diǎn)遠程數據傳輸系統

基于DSP 技術(shù)和CAN總線(xiàn)的多節點(diǎn)遠程數據傳輸系統

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

  4. 1. 3  郵箱信息的接收和發(fā)送

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

  

  圖4  數據發(fā)送流程圖

對于一個(gè)接收事件來(lái)說(shuō),由于每個(gè) 接收數據是根據檢測網(wǎng)絡(luò )上數據幀的ID 與接收郵箱中初始化設定的報文的設定ID 是否相符來(lái)決定該是否接收此數據,因此在接收事件中,要設置接收郵箱報文的標識符及標識符相關(guān)的局部屏蔽寄存器(LAM) 。然后判斷接收信息懸掛位RMPn 或接收中斷標志位MIFn 是否置位,如果位說(shuō)明郵箱成功接收信息,將接收的數據轉移到讀據緩沖區,然后復位接收中斷標志位和接收信息懸掛位。

  

  圖5  數據接收流程圖

  4. 2  SCI 串行通信程序設計

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

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

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

  來(lái)確定波特率選擇寄存器BRR 的值。

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

  

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

  

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

  5  結束語(yǔ)

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

雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>