1. 程式人生 > >為什麼STM32中SPI的MISO引腳設定成複用推輓輸出

為什麼STM32中SPI的MISO引腳設定成複用推輓輸出

在複用SPI匯流排時,必須先設定匯流排埠。讀取其他ARM晶片(如NXP)一般很容易看出晶片的設定是否正確。不過對於STM32就容易讓人迷惑了。例如,我們在使用SPI匯流排進行通訊時,可以這樣設定:

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     // 複用的推輓輸出

       恐怕大家對MISO埠的設定就會產生疑惑了,MISO不是應該設定成為輸入埠(GPIO_Mode_IN_FLOATING)才行的嗎?

      答題是肯定的,對於STM32的這一類管腳來說(如USART_RX)即可以設定成為輸入模式,也可以設定成為複用的推輓輸出。其工作都是正常的,不過建議大家還是設定成為輸入埠的好,容易理解。

      具體產生這一問題的原因是:從功能上來說,MISO應該配置為輸入模式才對,但為什麼也可以配置為GPIO_Mode_AF_PP?請看下面的GPIO複用功能配置框圖。當一個GPIO埠配置為GPIO_Mode_AF_PP是,這個埠的內部結構框圖如下:圖中可以看到,片上外設的複用功能輸出訊號會連線到輸出控制電路,然後在埠上產生輸出訊號。但是在晶片內部,MISO是SPI模組的輸入引腳,而不是輸出引腳,也就是說圖中的"複用功能輸出訊號"根本不存在,因此"輸出控制電路"不能對外產生輸出訊號。而另一方面看,即使在GPIO_Mode_AF_PP模式下,複用功能輸入訊號卻與外部引腳之間相互連線,既MISO得到了外部訊號的電平,實現了輸入的功能。

相關推薦

為什麼STM32SPI的MISO設定輸出

在複用SPI匯流排時,必須先設定匯流排埠。讀取其他ARM晶片(如NXP)一般很容易看出晶片的設定是否正確。不過對於STM32就容易讓人迷惑了。例如,我們在使用SPI匯流排進行通訊時,可以這樣設定:   GPIO_InitStructure.GPIO_Pin = GPIO

有關上拉輸入、下了輸入、輸出、開漏輸出開漏輸出輸出以及、浮空輸入、模擬輸入區別

1、上拉輸入:上拉就是把電位拉高,比如拉到Vcc。上拉就是將不確定的訊號通過一個電阻嵌位在高電平!電阻同時起限流作用!弱強只是上拉電阻的阻值不同,沒有什麼嚴格區分。   2、下拉輸入:就是把電壓拉低,拉到GND。與上拉原理相似。   3、浮空輸入:浮空(float

輸出輸出區別

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //複用推輓輸出     GPIO_SetBits(GPIOE,GPIO_Pin_5);      如果LED1是上拉的

STM32 DAC輸出設定模擬輸入

開啟 IO口時鐘,設定引腳為模擬輸入。 STM32F103ZET6 的 DAC 通道 1 在 PA4 上,所以,我們先要使能 PORTA 的時鐘,然後設定 PA4 為模擬輸入。DAC 本身是輸出,但是為什麼埠要設定為模擬輸入模式呢?因為一但使能 DACx 通道之後,相應的

STM32-如何使用功能輸出PWM

#define LED0_PWM_VAL TIM3->CCR2 //比較暫存器(TIM3通道2),可以調節PWM佔空比, int main(void) {  u16 led0pwmval=0;u8 dir=1;  Stm32_Clock_Init(9); //系統時

STM32F103JTAG配置普通IO

STM32上有兩個除錯介面,一個是JTAG,一個是SWD。SWD佔用2個IO口,分別為SWDIO和SWCLK。標準的JTAG介面是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、資料輸入和資料輸出線。因此我們一般用SWD來除錯MCU,這樣,除去SWDIO的兩條線,JTAG介面的另外三個

MCU輸出模式輸出與開漏輸出電路原理區別

推輓輸出:可以輸出高,低電平,連線數字器件; 開漏輸出:輸出端相當於三極體的集電極. 要得到高電平狀態需要上拉電阻才行. 適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內). 推輓結構一般是指兩個三極體分別受兩互補訊號的控制,總是在一個三極體導通的時候另一個截止. 我們先來

如何將matplotlib全域性的中文設定宋體

配置介紹:python 3.5 ;作業系統,windows 8.1 ; 步驟: 1、由於matplotlib預設不支援ttc,所以可以將ttc轉換ttf先。將Windows字型 simsun.ttc上傳到 https://transfonter.org/ttc-unpack

STM32第二功能對映

STM32部分外設的第二功能引腳對映 作者:JCY 時間:2012年12月11日 STM32F是ST(意法半導體公司)的產品,本晶片的設計支援了晶片上部分外設第二功能的引腳對映。這為設計STM32的電路板提供了方面,大大簡化了電路的設計。當第一次看到AFIO功能的時候感到很困惑,一直不理解,但是最近突然明

EPCS 在 nios2 分配問題

cyclone iii系列的器件在建立軟和nios2時,新增EPCS控制器的話會多出4個引腳(相對2代器件)解決辦法: In CycloneIII devices, the EPCS controller does not automatically assign its 

都是stm32的JTAG惹的禍

轉載請註明出處:http://blog.csdn.net/qq_26093511/article/category/6094215 最近在除錯08介面的LED顯示屏,使用的是自己做的STM32板子。 除錯的時候,突然發現顯示屏,怎麼都不亮,我就開始懷疑人生了。。。。。。

php類的繼承與程式碼

/** * 類的繼承 * 1. 繼承是為了程式碼複用 * 2. php只支援單繼承 * 3. 父類也叫超類,基類,子類也叫派生類 */   //宣告一個父類 class ParentClass{ public $name; protected $cour

setsockopt設定的作用(bind繫結失敗)

本文轉自:http://www.2cto.com/kf/201208/150347.html 寫Socket程式的時候經常會遇到這個問題:如果自己的程式不小心崩潰了,重新啟動程式的時候往往會在bind呼叫上失敗,錯誤原因為Address Already In Use,往往要

vue 如何給圖片設定懶載入 Vue實現圖片懶載入

懶載入:首先將圖片的src連結設為同一張圖,並將其真正的圖片地址儲存在img標籤的自定義屬性中。當js監聽到該圖片元素進入可視視窗時,即將自定義屬性中的地址儲存到src屬性中,達到懶載入的效果。 顧名思義,簡單理解就是 當頁面開啟,首先所有資料引進來的圖片先不顯示,所有圖先

vue-cli專案的請求資料的與請求

場景: 之前剛開始使用vue-cli的時候請求後臺資料是不知道怎麼使用,後來在網上看到說是用 axios ,所以我也用 axios了,在使用過程中可以請求也沒什麼bug所以在這裡推薦給大家,如果是第一次使用麻煩跟著做吧~ 安裝: 直接安裝axiox npm insta

OpenwrtMT7628/MT7688的全部GPIO配置及常用介面DTS配置總結

Openwrt的不同版本中關於MT7628,MT7688的GPIO配置,存在或多或少的一些小問題 下面將以MT7628AN為基礎,介紹其全部的GPIO功能複用配置,以及需要注意的地方 MT76x8一個就47個可作為GPIO引腳,如下  關於其全部的功能複用表可以

Intel FPGA 專用時鐘是否可以用作普通輸入,輸出或雙向IO使用?

原創 by DeeZeng FPGA 的 CLK pin 是否可以用作普通輸入 ,輸出或雙向IO 使用?    這些專用Clock input pin 是否可以當作 inout用,需要看FPGA是否支援。 像cyclone V的CLK in 同時支援 作為普通的 inout 而有

STM32之GPIO輸出例程

/* GPIO配置 */ void GPIO_config() {     GPIO_InitTypeDef GPIO_InitStructure;       /* 使能GPIOC時鐘 */     RCC_APB2PeriphClockCmd(RCC_APB2Per

輸出,開漏輸出等8IO模式的總結

(1)GPIO_Mode_AIN 模擬輸入 (2)GPIO_Mode_IN_FLOATING 浮空輸入(3)GPIO_Mode_IPD 下拉輸入(4)GPIO_Mode_IPU 上拉輸入(5)GPIO_

STM32 JTAG設定

前奏 先來copy下 JTAG、SW介面的定義, JTAG:JTAG(Joint Test Action Group;聯合測試工作組)是一種國際標準測試協議,主要用於晶片內部測試。現在多數的高階器件都支援JTAG協議,如DSP、FPGA器件等。標準的JTAG