在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 踏踏實(shí)實(shí)搞清 stm32 SPI總線 基礎(chǔ)和編程

            踏踏實(shí)實(shí)搞清 stm32 SPI總線 基礎(chǔ)和編程

            作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏

            SPI應(yīng)用是相當(dāng)?shù)膹V了,同步串行總線,同步同步當(dāng)然需要時(shí)鐘信號(hào)來統(tǒng)一了,這樣通訊雙方通訊時(shí)就比較默契沒那么延遲(呆呆)了。應(yīng)用于中低速場(chǎng)合。

            本文引用地址:http://www.biyoush.com/article/201611/322996.htm

            學(xué)起來從哪些地方入手呢?如下:

            SPI概念與特點(diǎn) 關(guān)鍵的時(shí)序接受 編程時(shí)重點(diǎn) STM32內(nèi)部的SPI使用(介紹、功能、中斷)

            SPI概念與特點(diǎn):不多說,串行,需要同步信號(hào) 主從結(jié)構(gòu)的 CS(片選) SCK SDI SDO

            全雙工 一主控多從 8或16位數(shù)據(jù)通信

            其它特點(diǎn):8個(gè)主模式波特率預(yù)分頻系數(shù) fpcll/2

            主模式和從模式下快速通行 并支持切換

            編程MSB 或LSB在前

            專用發(fā)送和接受標(biāo)志可促發(fā)中斷

            有SPI忙標(biāo)志位

            支持硬件CRC校驗(yàn),發(fā)送模式下crc值作為最后一個(gè)字節(jié)被發(fā)送,接受模式下最后一字節(jié)自動(dòng)CRC校驗(yàn)

            支持錯(cuò)誤中斷標(biāo)志,支持DMA功能的1字節(jié)發(fā)送和接受緩沖器:產(chǎn)生發(fā)送和接受請(qǐng)求。

            SPI總線時(shí)序介紹:

            看下下圖應(yīng)該就會(huì)了


            使用stm32 spi需要以下的步驟

            1.管腳因?yàn)閺?fù)用的,故先配置好管腳、并打開spi時(shí)鐘

            2.設(shè)置spi的工作模式

            通過 SPI1_CR1 來設(shè)置,設(shè)置SPI1主機(jī)模式,設(shè)置數(shù)據(jù)格式8位,然后通過 CPOL 和 CPHA 位來設(shè)置 SCK時(shí)鐘極性及采樣方式。并設(shè)置 SPI1 的時(shí)鐘頻率(最大18Mhz),以及數(shù)據(jù)的格式(MSB 在前還是 LSB在前)。
            3.使能SPI.

            SPI固件庫(kù)函數(shù)

            下面是初始化,必須得結(jié)構(gòu)體原型

            typedef struct
            {
            uint16_t SPI_Direction;//設(shè)置方向 (2線全雙工、2線只接受、一線發(fā)送、一線接受)

            uint16_t SPI_Mode; //模式 (從或主設(shè)備)

            uint16_t SPI_DataSize; //寬度 (8或16位)

            uint16_t SPI_CPOL; //時(shí)鐘極性 (低或高)

            uint16_t SPI_CPHA; //時(shí)鐘相位 (第一個(gè)或第二個(gè)跳變沿)

            uint16_t SPI_NSS; //片選方式 (硬件或軟件方式)

            uint16_t SPI_BaudRatePrescaler; //波特率預(yù)分頻 (從2---256分頻)

            uint16_t SPI_FirstBit; //最先發(fā)送的位 (最低位,還是最高位在先)

            uint16_t SPI_CRCPolynomial; //設(shè)置crc多項(xiàng)式 (數(shù)字)如7

            }SPI_InitTypeDef;

            下面是實(shí)例,對(duì)SPI2進(jìn)行的初始化

            void SPI2_Init(void)
            {
            SPI_InitTypeDef SPI_InitStructure;
            GPIO_InitTypeDef GPIO_InitStructure;

            //配置SPI2管腳
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14| GPIO_Pin_15;
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復(fù)用推挽輸出
            GPIO_Init(GPIOB, &GPIO_InitStructure);

            //SPI2配置選項(xiàng)
            RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);

            SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
            SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
            SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
            SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
            SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
            SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
            SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
            SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
            SPI_InitStructure.SPI_CRCPolynomial = 7;
            SPI_Init(SPI2, &SPI_InitStructure);

            //使能SPI2
            SPI_Cmd(SPI2, ENABLE);
            }

            。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

            以上是,初始化的一些函數(shù),發(fā)現(xiàn)固件庫(kù)還有很多函數(shù)沒用上,下面就要談到應(yīng)用了

            STM32的SPI串行外圍總線接口,本程序,是將STM32的SPI配置為全雙工模式,且NSS使用的軟件模式。在使用SPI前,下面的這個(gè)過程我們必須理解,即STM32作為主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)時(shí),必然能接收到一個(gè)數(shù)據(jù),至于數(shù)據(jù)是否處理,由程序操作。


            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: stm32SPI總

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉