新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > SPI通信協議:單片機spi通信接口什么意思,spi接口干什么用的?

        SPI通信協議:單片機spi通信接口什么意思,spi接口干什么用的?

        作者: 時間:2023-12-13 來源:無際單片機編程 收藏

        講真,以前做開發的時候最怕就是調spi和iic。

        本文引用地址:http://www.104case.com/article/202312/453850.htm

        因為公司沒有邏輯分析儀,調起來全憑經驗,一出問題找都找不到,只能仔細看代碼盲調,看是不是哪個時序有問題。

        說到這里,可能剛初學的小伙伴會問:單片機是什么鬼?spi接口是干什么用的?

        一、單片機是什么鬼?

        單片機是一個可編程的微控制器,和其實是兩個獨立的東西。

        只不過我們用單片機可以去實現spi通信而已,但是實現spi通信不一定非要單片機。

        我們人和人之間溝通,要靠說話,并且兩個人語言要一樣,比如說都用普通話。

        那芯片和芯片溝通,它們又不會說話,怎么傳遞信息呢?

        就是通過通信總線,通信總線有很多種,比如IIC、SPI、USART、CAN,它們的區別就像普通話、英語、韓語、俄語,都是用來傳遞信息用的,只是傳遞方式不同。

        但傳遞信息,有一個前提,就是語言要相同,也就是通信方式要相同。

        所以說,spi是一種通信方式,是用來傳遞信息的。

        不同的通信方式,傳遞信息的方式不同。

        Spi是一種全雙工、高速的、同步的通信總線。

        簡單來說,就是你們兩個可以同時快速地說話,你能把你要說的告訴對方,同時也能聽到對方說什么,這就是全雙工。

        還有一種叫半雙工,就是你們同時只能有一個人說,另一個聽,說完了,另外一個才能說。

        很明顯,全雙工傳遞信息的效率更高吧。

        同步的意思我給你們兩個對話設定個條件,比如說我說開始你們才可以對話,我說停止就都不能說話。

        二、spi接口是干什么用的?

        我們人和人傳遞信息一般是靠耳朵和嘴巴對吧?

        Spi通信傳遞信息是通過接口,來看下圖:


        spi接口有4根線,分別是CS、SCLK、MOSI、MISO。

        SCLK是同步信號,一般由主控來控制。

        既然是通信,自然是需要有個”對象”,如上圖A和B。

        A是SPI Master,也就是主控,比如說單片機,一般就是主控的角色,主控來負責發送SCLK同步信號通知SPI Slave是否需要進行數據通信。

        B是SPI Slave,也就是從機,比如說Flash芯片。

        CS代表片選信號,為什么要用片選呢?

        因為一個SPI Master可以跟不同的SPI Slave進行通信。


        SPI Master就是通過CS來控制,具體跟哪個SPI Slave通訊,控制CS為低電平就代表選中該SPI Slave。

        如果說只跟一個從設備通訊,也可以直接把CS串聯電阻接地,省的每次都去控制它。

        MOSI英文全稱是Master Output Slave Input,這個一般接主控器件數據輸出引腳,從機器件數據輸入引腳。

        MISO英文全稱是Slave Input Master Output,這個一般接主控器件數據輸入引腳,從機器件數據輸出引腳。

        除此以外,還有一種特殊的用法,就是只用SCLK和MOSI這兩個引腳的SPI通信。

        比如說我們無際單片機編程實戰項目課程里有個OLED屏的應用。


        片選引腳CS我直接硬件接地了,因為只有一個從設備。

        我們主要是控制OLED屏去顯示內容,并不需要從OLED讀取數據,所以MISO也不需要。

        這種情況是可以只用2根線的。

        所以,這種協議要從本質上去理解它們,不需要死記硬背要接幾個引腳,你學廢了嗎?




        關鍵詞: MCU spi通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 峡江县| 松潘县| 西乌珠穆沁旗| 加查县| 磐石市| 安岳县| 通化市| 基隆市| 肇东市| 广水市| 湘西| 英吉沙县| 杭锦旗| 杭州市| 交城县| 四平市| 民乐县| 古浪县| 错那县| 内乡县| 灌南县| 兴和县| 六盘水市| 佛山市| 阜新市| 澎湖县| 汝城县| 莱西市| 定兴县| 普定县| 海盐县| 广宁县| 伊宁市| 抚远县| 永川市| 甘孜| 湖州市| 罗定市| 龙胜| 咸阳市| 和田县|