AM62x的SPI總線怎么用?讓我告訴你

原創 2022-10-27 14:59:00 AM62x am62x am6254
 SPI是一種高速的、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議。

TI AM62x處理器擁有4路SPI以及1路QSPI,豐富的SPI接口可以同時接多個設備,飛凌OK6254-C開發板的NOR Flash就接在了OSPI(QSPI)總線上。

am6254開發板

一、SPI的工作流程和時序

在介紹AM62x的SPI之前,我們先來了解一下SPI是如何工作的。通常SPI通過4個引腳與外部器件相連:

MISO:

主設備輸入/從設備輸出引腳。該引腳在從模式下發送數據,在主模式下接收數據;

MOSI:

主設備輸出/從設備輸入引腳。該引腳在主模式下發送數據,在從模式下接收數據;

CLK:

串口時鐘,作為主設備的輸出,從設備的輸入;

NSS:

從設備選擇。這是一個可選的引腳,用來選擇從設備。

SPI的工作流程是這樣的——

主機先將NSS信號拉低,這樣保證開始接收數據;

當接收端檢測到時鐘的邊沿信號時,它將立即讀取數據線上的信號,這樣就得到了一位數據(1bit);

由于時鐘是隨數據一起發送的,因此指定數據的傳輸速度并不重要,盡管設備將具有可以運行的最高速度;

主機發送到從機時:主機產生相應的時鐘信號,然后數據一位一位地將從MOSI信號線上進行發送到從機;

主機接收從機數據:如果從機需要將數據發送回主機,則主機將繼續生成預定數量的時鐘信號,并且從機會將數據通過MISO信號線發送。

SPI工作時序圖如下:

SPI工作時序

二、AM62x中SPI總線的特點

在AM62x這款芯片中,TI將SPI的MISO與MOSI設計為d0和d1,哪一個作為輸入,哪一個作為輸出,是由設備樹中的ti,pindir-d0-out-d1-in= <1>來設置的。

默認這個屬性值為0,即d0是輸入,d1是輸出。當為1時,d0為輸出,d1為輸入。

三、AM62x的SPI應用

1. menuconfig配置

將這個該項選中,SPI驅動將編譯進內核中。

makemenuconfi

DeviceDrivers ->

SPIsupport ->

Usermode SPI device driver support

注:在飛凌OK6254-C開發板中,已經將SPI驅動編譯進去。

2. 設備樹配置

01. 選擇需要使用的spi,這里我們用spi0,節點為&main_spi0;

02. 將該節點所用的引腳復用為相應的功能。

代碼配置

03.描述節點的屬性,具體配置項的功能見注釋。

代碼配置

3、編譯燒錄

在源碼路徑下輸入以下命令

代碼配置

沒有報錯即為編譯成功。

將源碼路徑下的image中的OK6254-C.dtb放到開發板的/boot目錄中,重啟開發板。

4. SPI測試

將spi0_D0和spi0_D1短接

重啟開發板后,在/dev目錄下看到多出兩個spidev設備。

使用我們的測試程序

測試代碼

四、總結

AM62x上有著豐富的SPI資源,而SPI又可以作為許多設備的總線,這使得AM62x能夠接入許多SPI接口的設備。因此在那些對SPI有著比較多需求的應用場景下,基于TI AM62x設計開發的OK6254-C開發板無疑是一個非常好的選擇。


相關產品 >

  • FET62xx-C核心板

    FET6254-C核心板基于TI Sitara? AM62x系列工業級處理器設計。采用Arm Cortex A53架構,并集成了廣泛的接口,如2路支持TSN的千兆以太網、USB 2.0CAN-FD,AM6254核心板兼容AM62x全系列處理器,提供單核、雙核、四核可選,功能引腳完全兼容,飛凌嵌入式已經適配AM6254 AM6231 AM6232三款芯片為您帶來靈活的成本組合方案,AM62x可應用于廣泛的工業環境,如人機界面(HMI)、工業計算機、邊緣計算、零售自動化、充電樁控制單元(TCU)、醫療設備等。

    了解詳情
    FET62xx-C核心板
  • OK62xx-C開發板

    AM62x 開發板是圍繞飛凌AM62x核心板設計的獨立測試和開發平臺。AM62x處理器由四核64位Arm -Cortex -A53微處理器 和Cortex-M4F組成。AM62x開發板整板工業級設計,并在開發過程中進行嚴苛的環境溫度測試、壓力測試、長期穩定性運行測試,使AM62x可在各種嚴苛環境穩定運行 了解詳情
    OK62xx-C開發板

推薦閱讀 換一批 換一批