女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的SPI接口、cubeMX軟件配置SPI接口和分析SPI相關(guān)代碼

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2020-09-24 14:09 ? 次閱讀

本文主要介紹STM32的SPI接口、cubeMX軟件配置SPI接口和分析SPI相關(guān)代碼。

STM32之SPI簡(jiǎn)介:

SPI協(xié)議【Serial Peripheral Interface】

串行外圍設(shè)備接口,是一種高速全雙工的通信總線。主要用在MCU與FLASHADCLCD等模塊之間的通信。

SPI信號(hào)

SPI 共包含 4 條總線。

SS(Slave Select):片選信號(hào)線,當(dāng)有多個(gè)SPI 設(shè)備與 MCU 相連時(shí),每個(gè)設(shè)備的這個(gè)片選信號(hào)線是與 MCU 單獨(dú)的引腳相連的,而其他的 SCK、MOSI、MISO 線則為多個(gè)設(shè)備并聯(lián)到相同的 SPI 總線上,低電平有效。

SCK (Serial Clock):時(shí)鐘信號(hào)線,由主通信設(shè)備產(chǎn)生,不同的設(shè)備支持的時(shí)鐘頻率不一樣,如 STM32 的 SPI 時(shí)鐘頻率最大為 f PCLK /2。

MOSI (Master Output Slave Input):主設(shè)備輸出 / 從設(shè)備輸入引腳。主機(jī)的數(shù)據(jù)從這條信號(hào)線輸出,從機(jī)由這條信號(hào)線讀入數(shù)據(jù),即這條線上數(shù)據(jù)的方向?yàn)橹鳈C(jī)到從機(jī)。

MISO(Master Input Slave Output):主設(shè)備輸入 / 從設(shè)備輸出引腳。主機(jī)從這條信號(hào)線讀入數(shù)據(jù),從機(jī)的數(shù)據(jù)則由這條信號(hào)線輸出,即在這條線上數(shù)據(jù)的方向?yàn)閺臋C(jī)到主機(jī)。

其中SCK,MOSI,MISO是接在一起的,NSS分別接到不同的IO管腳控制。主器件要和從器件通信就先拉低對(duì)應(yīng)從器件的NSS管腳使能。默認(rèn)狀態(tài)IO1,IO2,IO3全為高電平,當(dāng)主器件和從器件1通信時(shí),拉低IO1管腳使能從器件1。而從器件2,3不使能,不作響應(yīng)。下圖是主器件與多個(gè)從器件通信圖。

SPI特性

單次傳輸可選擇為 8 或 16 位。波特率預(yù)分頻系數(shù)(最大為 fPCLK/2) 。時(shí)鐘極性(CPOL)和相位(CPHA)可編程設(shè)置。數(shù)據(jù)順序的傳輸順序可進(jìn)行編程選擇,MSB 在前或 LSB 在前。

注:MSB(Most Significant Bit)是“最高有效位”,LSB(Least Significant Bit)是“最低有效位”。

可觸發(fā)中斷的專用發(fā)送和接收標(biāo)志。可以使用 DMA 進(jìn)行數(shù)據(jù)傳輸操作。下圖是STM32的SPI框架圖。

如上圖,MISO數(shù)據(jù)線接收到的信號(hào)經(jīng)移位寄存器處理后把數(shù)據(jù)轉(zhuǎn)移到接收緩沖區(qū),然后這個(gè)數(shù)據(jù)就可以由我們的軟件從接收緩沖區(qū)讀出了。當(dāng)要發(fā)送數(shù)據(jù)時(shí),我們把數(shù)據(jù)寫入發(fā)送緩沖區(qū),硬件將會(huì)把它用移位寄存器處理后輸出到 MOSI數(shù)據(jù)線。SCK 的時(shí)鐘信號(hào)則由波特率發(fā)生器產(chǎn)生,我們可以通過波特率控制位(BR)來控制它輸出的波特率。

控制寄存器 CR1掌管著主控制電路,STM32的 SPI模塊的協(xié)議設(shè)置(時(shí)鐘極性、相位等)就是由它來制定的。而控制寄存器 CR2則用于設(shè)置各種中斷使能。

最后為 NSS引腳,這個(gè)引腳扮演著 SPI協(xié)議中的SS片選信號(hào)線的角色,如果我們把 NSS引腳配置為硬件自動(dòng)控制,SPI模塊能夠自動(dòng)判別它能否成為 SPI的主機(jī),或自動(dòng)進(jìn)入 SPI從機(jī)模式。但實(shí)際上我們用得更多的是由軟件控制某些 GPIO引腳單獨(dú)作為SS信號(hào),這個(gè) GPIO引腳可以隨便選擇。

SPI時(shí)鐘時(shí)序

根據(jù)時(shí)鐘極性(CPOL)及相位(CPHA)不同,SPI有四種工作模式。

時(shí)鐘極性(CPOL)定義了時(shí)鐘空閑狀態(tài)電平:

CPOL=0為時(shí)鐘空閑時(shí)為低電平

CPOL=1為時(shí)鐘空閑時(shí)為高電平

時(shí)鐘相位(CPHA)定義數(shù)據(jù)的采集時(shí)間。

CPHA=0:在時(shí)鐘的第一個(gè)跳變沿(上升沿或下降沿)進(jìn)行數(shù)據(jù)采樣。

CPHA=1:在時(shí)鐘的第二個(gè)跳變沿(上升沿或下降沿)進(jìn)行數(shù)據(jù)采樣。

CubeMX軟件配置SPI:

下面繼續(xù)介紹cubeMX軟件配置STM32L152的SPI接口方法。

(1)打開軟件,選擇對(duì)應(yīng)芯片后,配置好時(shí)鐘源;

(2)勾選SPI1為全雙工,硬件NSS關(guān)閉,如下圖:

(3)勾選好后,PA5、PA6、PA7如下圖,在配置PA4為普通io口,gpio_output

(4)SPI1的參數(shù)配置選擇默認(rèn),如下圖所示

(5)生成代碼,保存即可。

HAL庫(kù)的SPI函數(shù)分析:

下面具體分析下生成的SPI函數(shù)和函數(shù)調(diào)用。

SPI_HandleTypeDef hspi1; //SPI結(jié)構(gòu)體類定義,下面看其結(jié)構(gòu)體內(nèi)部的聲明。

下面分析SPI的初始化函數(shù):

void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi){GPIO_InitTypeDef GPIO_InitStruct;if(hspi->Instance==SPI1){/* USER CODE BEGIN SPI1_MspInit 0 *//* USER CODE END SPI1_MspInit 0 *//* Peripheral clock enable */__HAL_RCC_SPI1_CLK_ENABLE();//使能SPI1時(shí)鐘/**SPI1 GPIO ConfigurationPA5 ------> SPI1_SCKPA6 ------> SPI1_MISOPA7 ------> SPI1_MOSI*/GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);//配置SPI的數(shù)據(jù)線和時(shí)鐘線/* USER CODE BEGIN SPI1_MspInit 1 *//* USER CODE END SPI1_MspInit 1 */} static void MX_SPI1_Init(void){hspi1.Instance = SPI1;hspi1.Init.Mode = SPI_MODE_MASTER;//主模式hspi1.Init.Direction = SPI_DIRECTION_2LINES;//全雙工hspi1.Init.DataSize = SPI_DATASIZE_8BIT;//數(shù)據(jù)位為8位hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;//CPOL=0,lowhspi1.Init.CLKPhase = SPI_PHASE_1EDGE;//CPHA為數(shù)據(jù)線的第一個(gè)變化沿hspi1.Init.NSS = SPI_NSS_SOFT;//軟件控制NSShspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;//2分頻,32M/2=16MHzhspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;//最高位先發(fā)送hspi1.Init.TIMode = SPI_TIMODE_DISABLE;//TIMODE模式關(guān)閉hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;//CRC關(guān)閉hspi1.Init.CRCPolynomial = 10;//默認(rèn)值,無效if (HAL_SPI_Init(&hspi1) != HAL_OK)//初始化{_Error_Handler(__FILE__, __LINE__);}}

利用SPI接口發(fā)送和接收數(shù)據(jù)主要調(diào)用以下兩個(gè)函數(shù):

HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);//發(fā)送數(shù)據(jù)HAL_StatusTypeDefHAL_SPI_Receive(SPI_HandleTypeDef*hspi,uint8_t*pData,uint16_tSize,uint32_tTimeout);//接收數(shù)據(jù)

原文標(biāo)題:STM32CubeMX-HAL庫(kù)的SPI接口使用

文章出處:【微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2289

    文章

    11012

    瀏覽量

    362364
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1783

    瀏覽量

    94715

原文標(biāo)題:STM32CubeMX-HAL庫(kù)的SPI接口使用

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LTM2895 100MHz隔離型DAC SPI串行接口技術(shù)手冊(cè)

    LTM2895 是一款采用 DAC 控制信號(hào)的高速隔離型 μModule ^?^ (微型模塊) SPI 接口,該器件專為隔離LTC 的通用型 DAC 系列和隔離通用型 SPI 接口而設(shè)
    的頭像 發(fā)表于 06-03 10:04 ?98次閱讀
    LTM2895 100MHz隔離型DAC <b class='flag-5'>SPI</b>串行<b class='flag-5'>接口</b>技術(shù)手冊(cè)

    第十七章 SPI

    本篇文章介紹了W55MH32的SPI接口,可工作于SPI或I2S模式,支持半 / 全雙工、主從操作,具可編程時(shí)鐘極性/相位等特征。闡述了主從模式配置、DMA 通信等,介紹
    的頭像 發(fā)表于 05-28 17:29 ?288次閱讀
    第十七章 <b class='flag-5'>SPI</b>

    串行通信接口SPI與QSPI的區(qū)別

    在嵌入式系統(tǒng)的世界里,選擇正確的通信技術(shù)可以對(duì)項(xiàng)目的性能和可擴(kuò)展性產(chǎn)生重大影響。讓我們比較兩個(gè)流行的串行通信接口SPI(串行外設(shè)接口)和QSPI(四路SPI)。
    的頭像 發(fā)表于 04-09 15:24 ?897次閱讀
    串行通信<b class='flag-5'>接口</b><b class='flag-5'>SPI</b>與QSPI的區(qū)別

    【CW32模塊使用】0.96寸SPI單色屏

    硬件SPI軟件SPI相比,硬件SPI是靠硬件上面的SPI控制器,所有的時(shí)鐘邊緣采樣,時(shí)鐘發(fā)生,還有時(shí)序控制,都是由硬件完成的。它降低了CP
    的頭像 發(fā)表于 03-29 17:29 ?1884次閱讀
    【CW32模塊使用】0.96寸<b class='flag-5'>SPI</b>單色屏

    STM32CUBEMX使用硬件SPI軟件SPI的區(qū)別是什么?

    在使用CUBEMX生成的代碼 使用硬件SPI的速度 比 使用軟件模擬的SPI速度要慢幾倍 (已經(jīng)在硬件S
    發(fā)表于 03-13 07:21

    Java的SPI機(jī)制詳解

    作者:京東物流 楊葦葦 1.SPI簡(jiǎn)介 SPI(Service Provicer Interface)是Java語(yǔ)言提供的一種接口發(fā)現(xiàn)機(jī)制,用來實(shí)現(xiàn)接口
    的頭像 發(fā)表于 03-05 11:35 ?678次閱讀
    Java的<b class='flag-5'>SPI</b>機(jī)制詳解

    如何用ADS1271的SPI接口模式與STM32進(jìn)行通信?

    現(xiàn)在用ADS1271EVM,該模塊是用兩個(gè)DAS1271以菊花鏈?zhǔn)竭B接的,我打算用STM32F446的SPI來連接該模塊。我查了手冊(cè)得知ADS1271進(jìn)行SPI接口模式
    發(fā)表于 12-31 08:08

    KeyStone架構(gòu)串行外設(shè)接口(SPI)手冊(cè)

    )、MOSI(主設(shè)備輸出從設(shè)備輸入線)、MISO(主設(shè)備輸入從設(shè)備輸出線)和CS/SS(片選線)。SPI協(xié)議支持主從模式,其中主設(shè)備生成時(shí)鐘信號(hào)并控制數(shù)據(jù)傳輸?shù)臅r(shí)序,而從設(shè)備響應(yīng)主設(shè)備的請(qǐng)求。這種協(xié)議廣泛應(yīng)用于嵌入式系統(tǒng)中,因?yàn)樗?jiǎn)單、高效,并且能夠支持多種不同的數(shù)據(jù)速率和設(shè)備
    發(fā)表于 12-16 10:33 ?0次下載

    spi master接口的fpga實(shí)現(xiàn)

    串行外圍接口 大致了解: spi是個(gè)同步協(xié)議,數(shù)據(jù)在master和slaver間交換通過時(shí)鐘sck,由于它是同步協(xié)議,時(shí)鐘速率就可以各種變換。 sck:主機(jī)提供,從機(jī)不能操控,從器件由主機(jī)產(chǎn)生的時(shí)鐘控制。數(shù)據(jù)只有在sck來了的上升沿或者下降沿才傳輸。 高級(jí)一點(diǎn)的
    的頭像 發(fā)表于 11-16 10:35 ?1051次閱讀
    <b class='flag-5'>spi</b> master<b class='flag-5'>接口</b>的fpga實(shí)現(xiàn)

    TMS320C6000 McBSP:SPI ROM接口

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000 McBSP:SPI ROM接口.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 10:11 ?0次下載
    TMS320C6000 McBSP:<b class='flag-5'>SPI</b> ROM<b class='flag-5'>接口</b>

    SPI接口靜電放電防護(hù)方案

    SPI(Serial Peripheral Interface,串行外圍設(shè)備接口),是Motorola公司提出的一種同步串行接口技術(shù),是一種高速、全雙工、同步通信總線,在芯片中只占用四根管腳用來控制
    的頭像 發(fā)表于 09-20 15:31 ?672次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>靜電放電防護(hù)方案

    SPI接口用于TRF7960

    電子發(fā)燒友網(wǎng)站提供《將SPI接口用于TRF7960.pdf》資料免費(fèi)下載
    發(fā)表于 09-18 14:29 ?0次下載
    將<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>用于TRF7960

    單片機(jī)SPI通信實(shí)現(xiàn)

    在深入探討單片機(jī)(如基于STM32、AVR、PIC等)如何通過SPI(Serial Peripheral Interface)進(jìn)行通信之前,我們先概述SPI通信的基本原理,隨后以STM32
    的頭像 發(fā)表于 09-09 17:00 ?1422次閱讀

    SPI、UART、RGMII、JTAG接口的低電壓轉(zhuǎn)換

    電子發(fā)燒友網(wǎng)站提供《SPI、UART、RGMII、JTAG接口的低電壓轉(zhuǎn)換.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 11:09 ?0次下載
    <b class='flag-5'>SPI</b>、UART、RGMII、JTAG<b class='flag-5'>接口</b>的低電壓轉(zhuǎn)換

    使用ESP32C3的SPI2的時(shí)候,配置SPI接口后,SPI接口讀取從設(shè)備的數(shù)據(jù)的時(shí)候會(huì)整體左偏移一bit,為什么?

    使用ESP32C3的SPI2的時(shí)候,配置SPI接口后,發(fā)現(xiàn)SPI接口讀取從設(shè)備的數(shù)據(jù)的時(shí)候會(huì)整體
    發(fā)表于 06-20 06:55