SPI接口與CRC算法在雙DSP數據通信中的應用
摘要:提出了一種基于DSP28335片上SPI模塊和CRC校驗算法的數據通信方案。給出了接口電路設計、SPI模塊驅動(dòng)程序設計和求取CRC校驗碼的具體步驟,重點(diǎn)介紹了通信協(xié)議中從機發(fā)送請求機制和錯誤幀重發(fā)機制的實(shí)現,解決了SPI從機不能發(fā)起傳輸的問(wèn)題,并提高了通信雙方的差錯檢測能力。實(shí)驗結果表明,該方案數據傳輸速度快,可靠性高,滿(mǎn)足飛控計算機的性能要求。
本文引用地址:http://dyxdggzs.com/article/117273.htm關(guān)鍵字:SPI;CRC;TMS320F28335;雙核通信;差錯檢測在基于雙DSP架構的某型飛控計算機系統中,兩片DSP分工協(xié)作,1片專(zhuān)用于導航信息的解算和傳感器信息的綜合處理,另1片專(zhuān)用于控制律解算和機載任務(wù)設備管理。借助雙DSP強大的處理能力和豐富的片上資源,實(shí)現了電路結構的簡(jiǎn)化和DSP芯片的降額使用,滿(mǎn)足飛控系統高性能、高可靠性的設計要求。
雙DSP的分工協(xié)作離不開(kāi)二者之間高效、可靠的數據通信。本系統最終選用SPI通信方式實(shí)現雙DSP間的數據傳輸。
系統概述
系統總體結構
圖1給出了雙DSP架構飛控計算機的結構示意圖。導航DSP完成導航信息的解算和傳感器信息的綜合處理,并將處理結果送至飛控DSP;飛控DSP據此完成控制律解算,并刷新舵面給定信息,實(shí)現無(wú)人機飛行姿態(tài)和航跡的實(shí)時(shí)調整。導航DSP和飛控DSP還要共同完成機載任務(wù)設備和離散量設備的管理,完成飛行任務(wù)。雙DSP均選用TI公司面向控制領(lǐng)域的高性能浮點(diǎn)型數字信號處理器TMS320F28335。
TMS320F28335片上SPI模塊遵循標準的SPI通信協(xié)議[3],并具如下增強特性:有4種時(shí)鐘模式可供選擇,兼容各種不同時(shí)序特性的SPI設備;通信波特率有125種設置方案可供選擇,在DSP全速工作時(shí),速率達10Mbits/s以上;發(fā)送和接收均有16級FIFO可用,能夠實(shí)現16字數據的連續發(fā)送/接收,減輕了CPU負擔;發(fā)送和接收均支持中斷方式,實(shí)時(shí)性高[7]。
SPI接口電路設計
接口電路設計如圖2所示。其中SPISTE為從機使能信號, SPISIMO為主機發(fā)往從機的串行數據信號, SPISOMI為從機發(fā)往主機的串行數據信號, SPICLK為同步時(shí)鐘信號。以上信號構成SPI通信協(xié)議所規定的4線(xiàn)制結構。另外,利用主機和從機的各3個(gè)I/O引腳作為握手信號,解決了SPI總線(xiàn)中從機無(wú)權發(fā)起數據傳輸的缺陷,并引入校驗重發(fā)機制,進(jìn)一步提高了數據通信的可靠性。
底層驅動(dòng)設計
SPI模塊初始化
(1) 主/從模式選擇??紤]到系統在實(shí)際工作中,需由飛控DSP確定整個(gè)系統的運行時(shí)序,由飛控DSP決定是否讀取以及何時(shí)讀取導航DSP的解算結果,故將飛控DSP作為主機,導航DSP作為從機。
(2) 數據格式設定。程序每次寫(xiě)入發(fā)送緩沖寄存器的數據長(cháng)度以及每次從接收緩沖寄存器讀出的數據長(cháng)度均為16 bit。
(3) 時(shí)鐘模式選擇。SPI協(xié)議使用串行時(shí)鐘同步主/從雙方的收/發(fā)操作,故一方的發(fā)送時(shí)刻與另一方的接收時(shí)刻必須嚴格匹配,否則將導致接收數據錯位甚至丟失。綜合比較4種時(shí)鐘模式后認為,將主方配置為D模式,從方配置為A模式符合要求。圖3給出了該種配置的時(shí)序對比。從圖3可知,主機在串行時(shí)鐘上升沿的半個(gè)周期之前發(fā)送數據,在串行時(shí)鐘的上升沿接收數據;從機在串行時(shí)鐘的下降沿發(fā)送數據,在串行時(shí)鐘的上升沿接收數據。因此,接收方鎖存數據的時(shí)刻總是比發(fā)送方發(fā)送數據的時(shí)刻延遲半個(gè)時(shí)鐘周期,能夠保證將數據準確鎖存。
(4) 發(fā)送FIFO設置。發(fā)送FIFO通常與中斷模式配合使用。主機與從機的發(fā)送FIFO中斷觸發(fā)閾值均設為0,即當發(fā)送FIFO為空時(shí)觸發(fā)中斷。注意,在初始化完成后,發(fā)送FIFO為空,滿(mǎn)足發(fā)送中斷的觸發(fā)條件,而此時(shí)并不需要發(fā)送數據,因此必須屏蔽發(fā)送中斷。
(5) 接收FIFO設置。接收FIFO也是與中斷模式配合使用。主機與從機的接收FIFO中斷閾值均設為16,即當接收FIFO滿(mǎn)16個(gè)字時(shí)觸發(fā)中斷。
主機發(fā)送/從機接收的驅動(dòng)設計
(1) 主機發(fā)送數據的驅動(dòng)設計。主機首先將待發(fā)送的數據全部準備完畢,然后使能發(fā)送中斷,在中斷服務(wù)函數中將16字數據寫(xiě)入發(fā)送FIFO,硬件電路將自動(dòng)開(kāi)始發(fā)送,待發(fā)送FIFO為空時(shí)寫(xiě)入下個(gè)數據幀,如此往復,直至數據全部發(fā)送完畢,然后屏蔽發(fā)送中斷,完成本次發(fā)送操作。
(2) 從機接收數據的驅動(dòng)設計。當接收FIFO內存滿(mǎn)一個(gè)數據幀后觸發(fā)接收中斷,在中斷服務(wù)函數中將此數據幀讀出。
通信相關(guān)文章:通信原理
評論