SPI接口與CRC算法在雙DSP數據通信中的應用

2021-01-06 電子產品世界

  摘要:提出了一種基於DSP28335片上SPI模塊和CRC校驗算法的數據通信方案。給出了接口電路設計、SPI模塊驅動程序設計和求取CRC校驗碼的具體步驟,重點介紹了通信協議中從機發送請求機制和錯誤幀重發機制的實現,解決了SPI從機不能發起傳輸的問題,並提高了通信雙方的差錯檢測能力。實驗結果表明,該方案數據傳輸速度快,可靠性高,滿足飛控計算機的性能要求。

本文引用地址:http://www.eepw.com.cn/article/117273.htm

  關鍵字:SPI;CRC;TMS320F28335;雙核通信;差錯檢測在基於雙DSP架構的某型飛控計算機系統中,兩片DSP分工協作,1片專用於導航信息的解算和傳感器信息的綜合處理,另1片專用於控制律解算和機載任務設備管理。藉助雙DSP強大的處理能力和豐富的片上資源,實現了電路結構的簡化和DSP晶片的降額使用,滿足飛控系統高性能、高可靠性的設計要求。

  雙DSP的分工協作離不開二者之間高效、可靠的數據通信。本系統最終選用SPI通信方式實現雙DSP間的數據傳輸。

  系統概述

  系統總體結構

  圖1給出了雙DSP架構飛控計算機的結構示意圖。導航DSP完成導航信息的解算和傳感器信息的綜合處理,並將處理結果送至飛控DSP;飛控DSP據此完成控制律解算,並刷新舵面給定信息,實現無人機飛行姿態和航跡的實時調整。導航DSP和飛控DSP還要共同完成機載任務設備和離散量設備的管理,完成飛行任務。雙DSP均選用TI公司面向控制領域的高性能浮點型數位訊號處理器TMS320F28335。

  TMS320F28335片上SPI模塊遵循標準的SPI通信協議[3],並具如下增強特性:有4種時鐘模式可供選擇,兼容各種不同時序特性的SPI設備;通信波特率有125種設置方案可供選擇,在DSP全速工作時,速率達10Mbits/s以上;發送和接收均有16級FIFO可用,能夠實現16字數據的連續發送/接收,減輕了CPU負擔;發送和接收均支持中斷方式,實時性高[7]。

  SPI接口電路設計

  接口電路設計如圖2所示。其中SPISTE為從機使能信號, SPISIMO為主機發往從機的串行數據信號, SPISOMI為從機發往主機的串行數據信號, SPICLK為同步時鐘信號。以上信號構成SPI通信協議所規定的4線制結構。另外,利用主機和從機的各3個I/O引腳作為握手信號,解決了SPI總線中從機無權發起數據傳輸的缺陷,並引入校驗重發機制,進一步提高了數據通信的可靠性。

  底層驅動設計

  SPI模塊初始化

  (1) 主/從模式選擇。考慮到系統在實際工作中,需由飛控DSP確定整個系統的運行時序,由飛控DSP決定是否讀取以及何時讀取導航DSP的解算結果,故將飛控DSP作為主機,導航DSP作為從機。

  (2) 數據格式設定。程序每次寫入發送緩衝寄存器的數據長度以及每次從接收緩衝寄存器讀出的數據長度均為16 bit。

  (3) 時鐘模式選擇。SPI協議使用串行時鐘同步主/從雙方的收/發操作,故一方的發送時刻與另一方的接收時刻必須嚴格匹配,否則將導致接收數據錯位甚至丟失。綜合比較4種時鐘模式後認為,將主方配置為D模式,從方配置為A模式符合要求。圖3給出了該種配置的時序對比。從圖3可知,主機在串行時鐘上升沿的半個周期之前發送數據,在串行時鐘的上升沿接收數據;從機在串行時鐘的下降沿發送數據,在串行時鐘的上升沿接收數據。因此,接收方鎖存數據的時刻總是比發送方發送數據的時刻延遲半個時鐘周期,能夠保證將數據準確鎖存。

  (4) 發送FIFO設置。發送FIFO通常與中斷模式配合使用。主機與從機的發送FIFO中斷觸發閾值均設為0,即當發送FIFO為空時觸發中斷。注意,在初始化完成後,發送FIFO為空,滿足發送中斷的觸發條件,而此時並不需要發送數據,因此必須屏蔽發送中斷。

  (5) 接收FIFO設置。接收FIFO也是與中斷模式配合使用。主機與從機的接收FIFO中斷閾值均設為16,即當接收FIFO滿16個字時觸發中斷。

  主機發送/從機接收的驅動設計

  (1) 主機發送數據的驅動設計。主機首先將待發送的數據全部準備完畢,然後使能發送中斷,在中斷服務函數中將16字數據寫入發送FIFO,硬體電路將自動開始發送,待發送FIFO為空時寫入下個數據幀,如此往復,直至數據全部發送完畢,然後屏蔽發送中斷,完成本次發送操作。

  (2) 從機接收數據的驅動設計。當接收FIFO內存滿一個數據幀後觸發接收中斷,在中斷服務函數中將此數據幀讀出。

通信相關文章:通信原理


相關焦點

  • 單片機通信中的CRC算法原理及程序設計
    1 引 言本文引用地址:http://www.eepw.com.cn/article/172509.htm  在單片機的近、遠程通信中,為了確保傳輸報文(數據和信息)的正確性和加快報文的傳輸速度,採用CRC算法。在信道上傳輸的每一個字節,通過CRC算法校驗,從參數表中獲得其校驗值,使報文無差錯地快速傳輸。
  • FPGA設計應用實例——SPI主從端數據通信實現
    SPI數據通信是常用的一種中低速晶片級的數據通信。SPI數據通信協議簡單,連線不多,而且是全雙工通信,因此廣泛用於實現數據轉換和數據存儲等功能。本章簡要介紹SPI數據通信的協議及主端與從端的VerilogHDL建模與仿真。SPI數據通信協議SPI是英文Serial Peripheral Interface的首字母縮寫,中文可以翻譯為串行外圍設備接口。
  • CRC算法及工作原理
    @@10A08800.GIF;表1.最常用的CRC碼及生成多項式@@  由於CRC在通訊和數據處理軟體中經常採用,筆者在實際工作中對其算法進行了研究和比較,總結並編寫了一個具有最高效率的CRC通用程序庫。該程序採用查表法計算CRC,在速度上優於一般的直接模仿硬體的算法,可以應用於通訊和數據壓縮程序。
  • stm32與FPGA通信代碼實現方案spi
    為避免產生毛刺和方便信號邊沿檢測,SPI通信中spi_scl(通信時鐘),spi_cs_cmd(低,FPGA從器件地址接收片選),spi_cs_data(低,FP接收數據片選)這三個信號需要進行兩級緩存)這裡只寫spi_scl的二級緩存示例,其他兩個方法一樣搞個always@(posedge clk )如同步復位的話就先清零
  • 踏踏實實搞清 stm32 SPI總線 基礎和編程
    SPI應用是相當的廣了,同步串行總線,同步同步當然需要時鐘信號來統一了,這樣通訊雙方通訊時就比較默契沒那麼延遲(呆呆)了。應用於中低速場合。本文引用地址:http://www.eepw.com.cn/article/201611/322996.htm學起來從哪些地方入手呢?
  • STM32—cubeMX+HAL庫的SPI接口使用
    摘要: 本文主要介紹STM32的SPI接口、cubeMX軟體配置SPI接口和分析SPI相關代碼。STM32之SPI簡介:(1)SPI協議【Serial Peripheral Interface】   串行外圍設備接口,是一種高速全雙工的通信總線。
  • STM32F10x_SPI(硬體接口 + 軟體模擬)讀寫Flash(25Q16)
    Ⅰ、寫在前面SPI(Serial Perripheral Interface)串行外設通信接口,主要實現設備(主從)之間的通信。硬體上由CS、SCK、MISO、MOSI四根通信線連接而成。關於SPI更多介紹不再詳細描述,本文主要以STM32F103為主機、W25Q16為從機進行SPI通信實驗。
  • 關於CRC8/CRC16/CRC32,你要找的全部在這
    循環冗餘校驗(英語:Cyclic redundancy check,通稱「CRC」)是一種根據網絡數據包或電腦文件等數據產生簡短固定位數校驗碼的一種散列函數,主要用來檢測或校驗數據傳輸或者保存後可能出現的錯誤。一句話:CRC是將數據計算出散列的方式,一般用於校驗數據的完整性。
  • 幾種常見的校驗算法
    Modbus、MAVlink、USB等通信協議也有校驗信息。 在自定義數據存儲時,有經驗的工程師都會添加一定校驗信息。 你平時通信,或者數據存儲時,你有用到校驗信息嗎?下面就介紹幾種常見的校驗算法。
  • spi與i2c總線有什麼區別
    什麼是SPI   SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,並且在晶片的管腳上只佔用四根線,節約了晶片的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的晶片集成了這種通信協議,比如AT91RM9200。
  • CRC校驗原理及其實現
    要實現對通信數據的CRC計算,所以花了兩天的時間好好研究了一下,周末有時間整理了一下筆記。,採用一種指定的算法對原始數據進行計算,得出的一個校驗值。接收方接收到數據時,採用同樣的校驗算法對原始數據進行計算,如果計算結果和接收到的 校驗值一致 ,說明數據校驗正確,這一幀數據可以使用,如果不一致,說明傳輸過程中出現了差錯,這一幀數據丟棄
  • SPI 的通信原理及應用
    SPI,是Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數位訊號處理器和數位訊號解碼器之間。
  • CRC校驗---之avrbootloader
    While (數據未處理完)BeginIf (reg 首位是1)reg = reg XOR 0011.把reg 中的值左移一位,讀入一個新的數據並置於register 的0 bit 的位置。Endreg 的後四位就是我們所要求的餘數。這種算法簡單,容易實現,對任意長度生成多項式的G(x)都適用。
  • 八核浮點型DSP的雙千兆網接口設計
    千兆網絡接口具有數據傳輸速率快、連接方便、可以即插即用的優點,使得其應用較為廣泛。隨著電子技術和處理器的發展,很多應用場合的數據通信速率超過千兆網口的實際傳輸速率。
  • 滿足物聯網高速通信需求的SPI接口WiFi模塊介紹
    打開APP 滿足物聯網高速通信需求的SPI接口WiFi模塊介紹 佚名 發表於 2018-04-16 10:26:34 基於無線模塊的各類控制應用
  • 實現ARM和DSP或協處理器的通信和協同工作,有什麼解決方案和實現指南
    1.Codec Engine概述如圖1所示,Codec Engine是連接ARM和DSP或協處理器的橋梁,是介於應用層(ARM側的應用程式)和信號處理層(DSP側的算法)之間的軟體模塊。ARM應用程式調用Codec Engine的VISA (Video, Image, Speech, Audio)API,如圖1中VIDENC_process(a, b, c )。
  • 深入理解串行外設接口(SPI)總線及應用
    打開APP 深入理解串行外設接口(SPI)總線及應用 佚名 發表於 2018-01-31 17:11:48 串行外設接口(SPI
  • 詳解CAN/CAN FD通信中的循環冗餘校驗(CRC)方法
    CAN通信採用CRC校驗作為一種重要的錯誤檢測手段,是節點判斷CAN幀信息的完整性並產生確認應答的依據。在現場總線通信和控制的實際應用中,工業應用環境往往是極端的溫度以及電磁噪聲或是其他的惡劣環境,系統在這種條件下能否正常工作至關重要,試想一下倘若生產線設備發送的位置信息在傳輸過程出現了錯誤,輕則可能造成生產癱瘓,重則可能導致設備損壞甚至人員傷害。
  • 敏矽微電子Cortex-M0學習筆記10-SPI通信詳解
    SSEL:片選線,由主機決定使能要通信的從機,同一時間只能選中一個從機。MISO:主機輸入,從機輸出數據。MOSI:從機輸入,主機輸出數據。實際應用中通常都是按字節為單位傳輸數據,數據大小選擇8位傳輸即可。這裡要注意一下,時鐘極性和時鐘相性的選擇,這個要與SPI從機的時鐘的相性和極性相匹配,否則SPI通信會出現數據錯位、字節發送失敗等情況。
  • 3G網絡在企業數據通信安全中的應用
    3G網絡在企業數據通信安全中的應用 佚名 發表於 2010-08-20 16:58:43   前言  3G即第三代移動通信技術,是指支持高速數據傳輸的蜂窩移動通訊技術。