色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

STM32的SPI接口、cubeMX軟件配置SPI接口和分析SPI相關代碼

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

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

STM32之SPI簡介:

SPI協議【Serial Peripheral Interface】

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

SPI信號

SPI 共包含 4 條總線。

SS(Slave Select):片選信號線,當有多個SPI 設備與 MCU 相連時,每個設備的這個片選信號線是與 MCU 單獨的引腳相連的,而其他的 SCK、MOSI、MISO 線則為多個設備并聯到相同的 SPI 總線上,低電平有效。

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

MOSI (Master Output Slave Input):主設備輸出 / 從設備輸入引腳。主機的數據從這條信號線輸出,從機由這條信號線讀入數據,即這條線上數據的方向為主機到從機。

MISO(Master Input Slave Output):主設備輸入 / 從設備輸出引腳。主機從這條信號線讀入數據,從機的數據則由這條信號線輸出,即在這條線上數據的方向為從機到主機。

其中SCK,MOSI,MISO是接在一起的,NSS分別接到不同的IO管腳控制。主器件要和從器件通信就先拉低對應從器件的NSS管腳使能。默認狀態IO1,IO2,IO3全為高電平,當主器件和從器件1通信時,拉低IO1管腳使能從器件1。而從器件2,3不使能,不作響應。下圖是主器件與多個從器件通信圖。

SPI特性

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

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

可觸發中斷的專用發送和接收標志。可以使用 DMA 進行數據傳輸操作。下圖是STM32的SPI框架圖。

如上圖,MISO數據線接收到的信號經移位寄存器處理后把數據轉移到接收緩沖區,然后這個數據就可以由我們的軟件從接收緩沖區讀出了。當要發送數據時,我們把數據寫入發送緩沖區,硬件將會把它用移位寄存器處理后輸出到 MOSI數據線。SCK 的時鐘信號則由波特率發生器產生,我們可以通過波特率控制位(BR)來控制它輸出的波特率。

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

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

SPI時鐘時序

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

時鐘極性(CPOL)定義了時鐘空閑狀態電平:

CPOL=0為時鐘空閑時為低電平

CPOL=1為時鐘空閑時為高電平

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

CPHA=0:在時鐘的第一個跳變沿(上升沿或下降沿)進行數據采樣。

CPHA=1:在時鐘的第二個跳變沿(上升沿或下降沿)進行數據采樣。

CubeMX軟件配置SPI:

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

(1)打開軟件,選擇對應芯片后,配置好時鐘源;

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

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

(4)SPI1的參數配置選擇默認,如下圖所示

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

HAL庫的SPI函數分析:

下面具體分析下生成的SPI函數和函數調用。

SPI_HandleTypeDef hspi1; //SPI結構體類定義,下面看其結構體內部的聲明。

下面分析SPI的初始化函數:

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時鐘/**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的數據線和時鐘線/* 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;//數據位為8位hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;//CPOL=0,lowhspi1.Init.CLKPhase = SPI_PHASE_1EDGE;//CPHA為數據線的第一個變化沿hspi1.Init.NSS = SPI_NSS_SOFT;//軟件控制NSShspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;//2分頻,32M/2=16MHzhspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;//最高位先發送hspi1.Init.TIMode = SPI_TIMODE_DISABLE;//TIMODE模式關閉hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;//CRC關閉hspi1.Init.CRCPolynomial = 10;//默認值,無效if (HAL_SPI_Init(&hspi1) != HAL_OK)//初始化{_Error_Handler(__FILE__, __LINE__);}}

利用SPI接口發送和接收數據主要調用以下兩個函數:

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

原文標題:STM32CubeMX-HAL庫的SPI接口使用

文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

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

    關注

    2270

    文章

    10906

    瀏覽量

    356567
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1711

    瀏覽量

    91748

原文標題:STM32CubeMX-HAL庫的SPI接口使用

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何用ADS1271的SPI接口模式與STM32進行通信?

    現在用ADS1271EVM,該模塊是用兩個DAS1271以菊花鏈式連接的,我打算用STM32F446的SPI來連接該模塊。我查了手冊得知ADS1271進行SPI接口模式
    發表于 12-31 08:08

    KeyStone架構串行外設接口(SPI)手冊

    )、MOSI(主設備輸出從設備輸入線)、MISO(主設備輸入從設備輸出線)和CS/SS(片選線)。SPI協議支持主從模式,其中主設備生成時鐘信號并控制數據傳輸的時序,而從設備響應主設備的請求。這種協議廣泛應用于嵌入式系統中,因為它簡單、高效,并且能夠支持多種不同的數據速率和設備
    發表于 12-16 10:33 ?0次下載

    spi master接口的fpga實現

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

    TMS320C6000 McBSP:SPI ROM接口

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

    DS1302芯片與FPGA之間SPI通信原理

    本文通過以DS1302芯片為基礎,介紹該芯片與FPGA之間SPI通信原理,詳細描述硬件設計原理及FPGA SPI接口驅動設計。
    的頭像 發表于 10-24 14:16 ?514次閱讀
    DS1302芯片與FPGA之間<b class='flag-5'>SPI</b>通信原理

    SPI接口靜電放電防護方案

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

    SPI接口用于TRF7960

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

    單片機SPI通信實現

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

    SPI總線的定義和特點

    SPI總線(Serial Peripheral Interface),全稱為串行外圍設備接口,是由Motorola公司提出并定義的一種同步、串行、高速的通信總線。SPI總線以其獨特的優勢在電子通信
    的頭像 發表于 09-03 14:05 ?999次閱讀

    SPI、UART、RGMII、JTAG接口的低電壓轉換

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

    使用ESP32C3的SPI2的時候,配置SPI接口后,SPI接口讀取從設備的數據的時候會整體左偏移一bit,為什么?

    使用ESP32C3的SPI2的時候,配置SPI接口后,發現SPI接口讀取從設備的數據的時候會整體
    發表于 06-20 06:55

    Vision Board上的SPI設備驅動配置SPI主控的外部loopback功能測試

    感謝發燒友/* attach spi device */static int rt_spi_device_init(void){ ? ?struct rt_spi_configuration cfg
    的頭像 發表于 06-04 09:21 ?647次閱讀
    Vision Board上的<b class='flag-5'>SPI</b>設備驅動<b class='flag-5'>配置</b>和<b class='flag-5'>SPI</b>主控的外部loopback功能測試

    【GD32F470紫藤派開發板使用手冊】第十一講 SPI-SPI NOR FLASH讀寫實驗

    通過本實驗主要學習以下內容: ?SPI簡介 ?GD32F470 SPI簡介 ?SPI NOR FLASH——GD25Q32ESIGR簡介 ?使用GD32F470 SPI
    的頭像 發表于 05-17 09:57 ?1860次閱讀
    【GD32F470紫藤派開發板使用手冊】第十一講 <b class='flag-5'>SPI-SPI</b> NOR FLASH讀寫實驗

    超詳細的SPI原理和通信模式

    SPI分為主、從兩種模式,一個SPI通訊系統需要包含一個(且只能是一個)主設備,一個或多個從設備。提供時鐘的為主設備(Master),接收時鐘的設備為從設備(Slave),SPI接口
    發表于 02-29 12:33 ?4722次閱讀
    超詳細的<b class='flag-5'>SPI</b>原理和通信模式

    一文詳解SPI串行外設接口

    SPI也是MCU最常見的對外通信口之一,由摩托羅拉在上世紀80年代中開發,用于嵌入式系統中器件之間的短距離數據通信,標準模式使用四條信號線。目前常見的應用器件有:LCD模組、以太網模塊、SPI串行Flash和很多傳感器等,大部分SD卡都具有
    的頭像 發表于 01-18 09:45 ?7178次閱讀
    一文詳解<b class='flag-5'>SPI</b>串行外設<b class='flag-5'>接口</b>
    主站蜘蛛池模板: 棉袜足j吐奶视频| 亚洲免费视频观看| 91popny蜜桃臀| 欧美疯狂做受xxxxx喷水| 成人无码精品一区二区在线观看 | 啦啦啦视频在线观看WWW| jiucao在线观看精品| 色尼玛亚洲综合| 久久yy99re66| 草莓AV福利网站导航| 亚洲国产成人爱AV在线播放丿 | 综合久久久久久久综合网| 奇米狠狠干| 国自精品三七区| SM高H黄暴NP辣H调教性奴| 性xxxx直播放免费| 欧美 亚洲 日韩 中文2019 | 久久精品视在线观看85| 成人精品在线视频| 一二三四中文字幕在线看| 人妻兽虐曲| 久久人人爽人人片AV人成| 富婆夜店找黑人猛男BD在线| 有人有片的观看免费视频| 日本高清不卡一区久久精品| 精品久久久99大香线蕉| 成人国产一区| 最新高清无码专区在线视频| 四虎成人影院| 暖暖日本在线手机免费完整版| 国产毛片视频网站| jyzzjyzzz视频国产在线观看| 亚洲人成77777| 日韩欧无码一区二区三区免费不卡 | 白丝女仆被强扒内裤| 夜夜狂射影院欧美极品| 色欲AV亚洲永久无码精品麻豆| 毛片大片免费看| 精品国产乱码久久久久久软件| 大稥焦伊人一本dao| 佐山爱痴汉theav|