那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SPI串行外設接口的特點概述

冬至子 ? 來源:硬件工程師的小世界 ? 作者:TTYY ? 2023-04-24 17:29 ? 次閱讀

一、概述

SPI是Serial Peripheral interface的縮寫,是一種串行外設接口。全雙工通信,有4根信號線,在MCU、SOC、FLASH、DSP芯片上常見。

SPI特點

SPI接口只有一個主機,可以有一個或者多個從機。時鐘信號由主機發送,所以主機要讀一個字節就需要發送一個字節,為從機提供時鐘信號。當存在多個從機時由CS片選信號選擇從機。

一主一從連接框圖

圖片

一主多從連接框圖

圖片

SPI的片選信號

如果是一主一從也可以不使用片選信號,此時從機SPI的接收數據中斷使能,在中斷ISR里處理數據;如果使用片選信號,可以不使用SPI硬件片選信號,可以使用一個帶外部中斷功能的IO作為CS。

SPI的4根信號

MISO: 主機輸入/從機輸出引腳。

MOSI: 主機輸出/從機輸入引腳。

CLK:串行時鐘信號,由主機產生。

CS:從機片選信號,由主機控制。

當然,4根線也不是必須全用上,可以只發送或只接收。可以參考STM32的SPI介紹。

SPI的4種mode

所謂的模式,是指可以通過配置CPOL(時鐘極性)來設定CLK空閑狀態的電平是高還是低;通過配置CPHA(時鐘相位)來設定在CLK的哪個沿進行數據采樣和數據發送。CPOL和CPHA可以配置成0或1,所以組合有4種mode。

主機和從機的使用的mode要匹配對應。比如SPI FLASH只支持兩種mode,所以主機初始化配置要注意。如下圖FLASH只支持mode 0 和 mode 3:

圖片

二、STM32程序初始化舉例

void SPI1_Init(void)

{

//Enable SPI1 clock and GPIO clock for SPI1

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

//Configure SPI1 pins: SCK, MISO and MOSI

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//SPI1 Config

SPI_InitTypeDef SPI_InitStructure;

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;

SPI_InitStructure.SPI_CPOL=SPI_CPOL_Low;//主從機的配置相同

SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//主從機的配置相同

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;//主從機的配置相同

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI1, &SPI_InitStructure);

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = SPI1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

SPI_I2S_ITConfig(SPI1,SPI_I2S_IT_RXNE,ENABLE);//使能接收中斷

//Enable SPI1

SPI_Cmd(SPI1, ENABLE);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    554

    文章

    8059

    瀏覽量

    350397
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357544
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1721

    瀏覽量

    92114
  • 時鐘信號
    +關注

    關注

    4

    文章

    453

    瀏覽量

    28663
  • MCU芯片
    +關注

    關注

    3

    文章

    253

    瀏覽量

    11627
收藏 人收藏

    評論

    相關推薦

    串行外設接口SPI模塊簡析

    慕課蘇州大學.嵌入式開發及應用.第四章.較復雜通信模塊.串行外設接口SPI模塊0 目錄4 較復雜通信模塊4.1 串行
    發表于 11-08 07:35

    一文讀懂串行外設接口SPI

    串行外設接口SPI是什么?其有哪些部分組成呢?如何對串行外設
    發表于 12-16 06:28

    ADIuC812的串行外設接口(SPI)及其在LonWork

    ADIuC812的串行外設接口(SPI)及其在LonWorks智能節點中的應用:介紹了ADIuC812單片機的串行
    發表于 05-29 12:20 ?22次下載

    串行外設接口SPI

    串行外設接口SPISPI是一個高速同步串行輸入/輸出端口,傳送速率可編程,應用:外部移位寄存器、D/A轉換器、A/D轉換器、串行EEPROM
    發表于 09-15 08:01 ?14次下載

    理解ATE SPI (串行外設接口)

    理解ATE SPI (串行外設接口) 大多數Maxim® ATE設計都采用了一個串行接口
    發表于 01-26 16:34 ?2659次閱讀
    理解ATE <b class='flag-5'>SPI</b> (<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>)

    一文讀懂SPI串行外設接口

    SPI總線系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。正是由于有了通信方式,我們才能夠通過芯片控制
    發表于 04-27 15:19 ?1w次閱讀

    dsPIC33E/PIC24E器件之串行外設接口SPI

    串行外設接口(Serial Peripheral Interface,SPI)模塊是用于同其他外設或單片機進行通信的同步
    發表于 06-03 09:19 ?19次下載

    dsPIC30F系列參考手冊之串行外設接口SPI

    串行外設接口(Serial Peripheral Interface,SPI)模塊是用于同其他外設或單片機進行通信的同 步
    發表于 06-22 08:20 ?5次下載
    dsPIC30F系列參考手冊之<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)

    PIC24F系列參考手冊之串行外設接口SPI

    串行外設接口(Serial Peripheral Interface,SPI)模塊是用于同其他外設或單片機器件進行通信 的同步
    發表于 06-24 03:20 ?3次下載
    PIC24F系列參考手冊之<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)

    PIC24H系列參考手冊之串行外設接口SPI

    串行外設接口(Serial Peripheral Interface,SPI)模塊是用于同其他外設或單片機器件進行通信 的同步
    發表于 06-25 03:20 ?4次下載
    PIC24H系列參考手冊之<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>(<b class='flag-5'>SPI</b>)

    PIC32系列參考手冊之串行外設接口SPI

    本文主要介紹了PIC32系列參考手冊之串行外設接口SPI)。
    發表于 06-06 17:28 ?6次下載

    SPI串行外設接口的編程說明資料免費下載

    本文檔的主要內容詳細介紹的是SPI串行外設接口的編程說明資料免費下載。
    發表于 03-25 08:00 ?2次下載
    <b class='flag-5'>SPI</b><b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>的編程說明資料免費下載

    第9章:串行外設接口模塊(SPI)PPT下載

    第9章:串行外設接口模塊(SPI)PPT下載
    發表于 10-08 14:56 ?36次下載

    SPI 串行外設接口

    **SPI簡介:**串行外設接口(Serial Peripheral Interface Bus)SPI是一種用于芯片通信的同步
    發表于 12-20 19:31 ?9次下載
    <b class='flag-5'>SPI</b> <b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>

    SPI串行外設接口設計實現

    SPI 全稱為 Serial Peripheral Interface,譯為串行外設接口。它是 Motorola 公司推出的一種相對高速的同步、全雙工的通信總線協議。
    發表于 05-29 15:40 ?1567次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>設計實現
    百家乐bp| 帝王百家乐官网新足球平台| 三公百家乐官网在哪里可以玩| 网上百家乐是不是真的| 百家乐官网网真人真钱群| 一直对百家乐很感兴趣.zibo太阳城娱乐城 | 石阡县| 百家乐网站哪个好| 丁青县| 百家乐桌德州扑克桌| 贵族娱乐城信誉| 百家乐波音平台导航网| 豪杰百家乐官网游戏| 太阳城百家乐客户端| 百家乐官网单双打法| 伯爵百家乐娱乐平台| 太阳城百家乐官网作弊| 全讯网123| 利都百家乐官网国际赌场娱乐网规则| 威尼斯人娱乐城官网lm0| 怎么看百家乐官网路单| 申城棋牌官网| 百家乐官网小游戏单机版| 优博网站| 真人百家乐新开户送彩金| 网上百家乐官网如何作假| 百家乐投资| 百家乐官网策略网络游戏信誉怎么样| 明升国际娱乐 | 百家乐视频游戏界面| 博彩通百家乐官网概率| CEO百家乐的玩法技巧和规则| 真人百家乐官网作假视频| 大发888充值 在线| 百家乐筹码订做| 搜索| 百家乐平注资讯| 二爷百家乐官网的玩法技巧和规则 | 大都会百家乐官网的玩法技巧和规则 | 月华百家乐官网的玩法技巧和规则 | 茅台百家乐官网的玩法技巧和规则|