基于DSP 技術(shù)和CAN總線(xiàn)的多節點(diǎn)遠程數據傳輸系統
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è)CAN 節點(diǎn)接收數據是根據檢測網(wǎng)絡(luò )上數據幀的ID 與接收郵箱中初始化設定的報文的設定ID 是否相符來(lái)決定該節點(diǎn)是否接收此數據,因此在接收事件中,要設置接收郵箱報文的標識符及標識符相關(guān)的局部屏蔽寄存器(LAM) 。然后判斷接收信息懸掛位RMPn 或接收中斷標志位MIFn 是否置位,如果位說(shuō)明郵箱成功接收信息,將接收的數據轉移到讀據緩沖區,然后復位接收中斷標志位和接收信息懸掛位。
圖5 數據接收流程圖
4. 2 SCI 串行通信程序設計
串行通信的程序分為DSP 的串行收發(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è)地址。由于系統為多節點(diǎn)的通信,因此采用了地址位喚醒模式來(lái)正確控制各節點(diǎn)間的數據收發(fā)。在調試程序中為每個(gè)節點(diǎn)設置了2 個(gè)標識地址(如00H 和FFH) ,當收到00H時(shí),DSP 發(fā)送數據,當收到FFH 時(shí),DSP 接收數據。圖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)傳輸器原理
評論