產(chǎn)品詳情
1.通用輸入輸出
1.1. 模塊介紹
每組 GPIO 端口有四個32位配置寄存器(GPIOx_MODE,GPIOx_OTYPE, GPIOx_OSPEED and GPIOx_PUPD),兩個32位數(shù)據(jù)寄存器(GPIOx_IDAT and GPIOx_ODAT),一個32位置位/復位寄存器(GPIOx_BSR)和一個32位翻轉(zhuǎn)寄存器(GPIOx_TGL)。另外,所有GPIO 有兩個復用功能選擇寄存器 (GPIOx_AFRH and GPIOx_AFRL)。
注:GPIOx 中的 x 表示 GPIO 組數(shù)。
1.2. 功能特點
? 輸出狀態(tài):推挽或開漏(上下拉)
? 輸出寄存器狀態(tài)值(GPIOx_ODAT) 或者復用功能輸出
? 輸入狀態(tài):浮空、上下拉、模擬
? 輸入數(shù)據(jù)到數(shù)據(jù)寄存器(GPIOx_IDAT) 或復用功能輸入
? 獨立置位/復位/翻轉(zhuǎn) IO 狀態(tài)(GPIOx_ BSR、GPIOx_TGL)
? 模擬功能
? 復用功能(開漏或推挽、上拉或下拉)
1.3. 功能說明
GPIO 的每一個端口可以通過軟件獨立配置成下面狀態(tài)
? 輸入浮空
? 輸入上拉
? 輸入下拉
? 模擬功能
? 開漏輸出(上拉或下拉)
? 推挽輸出
? 復用功能(開漏或推挽、上拉或下拉)
1.3.1. 通用 IO(GPIO)
復位期間和剛復位后,復用功能未開啟,IO 端口被配置成浮空輸入模式。
當作為輸出配置時,寫到輸出數(shù)據(jù)寄存器上的值(GPIOx_ ODAT)輸出到相應(yīng)的 IO 引腳。可以以推挽或開漏模式使用輸出驅(qū)動器。
輸入數(shù)據(jù)寄存器(GPIOx_ IDAT)在每個 APB 時鐘周期捕捉 IO 引腳上的數(shù)據(jù)。
所有 GPIO 引腳有一個內(nèi)部弱上拉,當配置為輸入時,它們可以被激活也可以被斷開。
1.3.2. 單獨的位操作
當對 GPIOx_ ODAT 的個別位編程時,軟件不需要禁止中斷:在單次 APB 寫操作里,可以只更改一個或多個位。只需要通過對“置位/復位寄存器”(GPIOx_BSR)或“取反寄存器”(GPIOx_TGL)中想要更改的位寫“1”來實現(xiàn)。沒被選擇的位將不被更改。
1.3.3. 復用功能(AF)
芯片 IO 引腳通過多路選擇器連接到片內(nèi)外設(shè),每個 IO 上同一時刻只能選通一個復用功能。每個 IO 引腳有一個 2 輸入的多路選擇器連接到復用功能(AF0~AF1),通過配置 GPIOx_AFRH/L 選擇功能。如果把端口配置成復用輸出功能,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號連接。如果軟件把一個 GPIO 腳配置成復用輸出功能,但是外設(shè)沒有被激活,它的輸出將不確定。
1.3.4. GPIO 鎖定機制
鎖定機制允許在 GPIO 控制寄存器 GPIOx_LCK 上執(zhí)行一串鎖定程序,然后把 GPIO 的狀態(tài)鎖定,一旦 GPIO 狀態(tài)被鎖定,將不可改變,直到復位。被鎖定的寄存器有(GPIOx_MODE, GPIOx_OTYPE,GPIOx_OSPEED, GPIOx_PUPD, GPIOx_AFRL and GPIOx_AFRH)。
鎖定序列參考 GPIOx_LCK 寄存器描述 。
1.3.5. 輸入配置
當 IO 端口配置為輸入時
? 輸出緩存器被禁止
? 施密特觸發(fā)輸入被激活
? 根據(jù)輸入配置(上拉、下拉或浮空)的不同,弱上拉和下拉電阻被連接
? 出現(xiàn)在 IO 腳上的數(shù)據(jù)在每個 APB 時鐘被采樣到輸入數(shù)據(jù)寄存器
? 對輸入數(shù)據(jù)寄存器的讀訪問可得到 IO 狀態(tài)
1.3.6. 輸出配置
當 IO 端口被配置為輸出時
? 輸出緩沖器被激活
開漏模式:輸出寄存器上的“0”激活 N-MOS,而輸出寄存器上的“1”將端口置于高阻態(tài)(P-MOS從不被激活)
推挽模式:輸出寄存器上的“0”激活 N-MOS,而輸出寄存器上的“1”將激活 P-MOS。
? 施密特觸發(fā)輸入被激活
? 弱上拉和下拉電阻被禁止
? 出現(xiàn)在 IO 腳上的數(shù)據(jù)在每個 APB 時鐘被采樣到輸入數(shù)據(jù)寄存器
? 在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到 IO 狀態(tài)
? 在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最終一次寫的值
1.3.7. 模擬輸入配置
當 IO 端口被配置為模擬輸入配置時
? 輸出緩存器被禁止
? 禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬 IO 引腳上的零消耗。施密特觸發(fā)輸出值被強制為“0”
? 弱上拉和下拉電阻被禁止
? 讀取輸入數(shù)據(jù)寄存器時數(shù)值為“0”
1.3.8. 復用功能配置
對 IO 端口進行編程作為復用功能時
? 在開漏或推挽式配置中,輸出緩沖器被打開
? 內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器 (復用功能輸出)
? 施密特觸發(fā)輸入被激活
? 弱上拉和下拉電阻被禁止
? 在每個 APB 時鐘周期,出現(xiàn)在 IO 腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器
? 開漏模式時,讀輸入數(shù)據(jù)寄存器時可得到 IO 口狀態(tài)
? 在推挽模式時,讀輸出數(shù)據(jù)寄存器時可得到最終一次寫的值
2. 同步串行接口
2.1. 模塊介紹
SPI_IIC 模塊可用作 SPI 接口通信和 IIC 接口通信,兩種功能同一時間只能選擇其中一種使用。該模塊集成兩種接口協(xié)議,節(jié)省資源的同時又能滿足不同的應(yīng)用需求。
2.2. 功能特點
2.2.1. SPI 功能
? 支持主模式和從模式工作
? 支持全雙工收發(fā)
? 可編程時鐘極性,采樣相位,支持 4 種模式
? 支持 1~32bit 傳輸
? 支持 5byte 發(fā)送/接收數(shù)據(jù)緩沖
? 傳輸數(shù)據(jù)順序 MSB 和 LSB
? 支持標準模式,三線模式
? 可觸發(fā)中斷的專用發(fā)送和接收標志
2.2.2. IIC 功能
? 支持主模式和從模式
? 主模式支持時鐘同步和總線仲裁
? 從模式支持在發(fā)送數(shù)據(jù)沒有準備好或者接收緩沖器滿時候拉低 SCL
? 從模式支持 7bit 地址或者 10bit 地址
? 從模式支持接收廣播地址
? 支持 5byte 發(fā)送/接收數(shù)據(jù)緩沖
2.3. 功能說明
2.3.1. SPI 工作模式
? 模式 0:時鐘空閑為 0,上升沿采樣,下降沿出數(shù)據(jù)
? 模式 1:時鐘空閑為 0,下降沿采樣,上升沿出數(shù)據(jù)
? 模式 2:時鐘空閑為 1,下降沿采樣,上升沿出數(shù)據(jù)
? 模式 3:時鐘空閑為 1,上升沿采樣,下降沿出數(shù)據(jù)
2.3.2. SPI 接口模式
? 標準模式:通信線有 CLK,CS,IO0(MOSI),IO1(MISO),一個 CLK 傳輸 1bit 數(shù)據(jù)
? 三線模式:通信線有 CLK,CS,IO0,接收和發(fā)送都通過 IO0, 一個 CLK 傳輸 1bit 數(shù)據(jù)
2.3.3. SPI 數(shù)據(jù)幀與內(nèi)部緩存
SPI 可支持 1~32bit 幀數(shù)據(jù)傳輸,內(nèi)部集成了一個 40bit 的緩沖區(qū),根據(jù)配置的數(shù)據(jù)幀長度不同,緩沖區(qū)能緩存的幀數(shù)也不一樣。數(shù)據(jù)幀長度<=8bit 時,緩沖區(qū)可容納 5 幀數(shù)據(jù),8bit<數(shù)據(jù)幀長度<=16bit時,緩沖區(qū)可容納兩幀數(shù)據(jù),數(shù)據(jù)幀長度>16bit 時,緩沖區(qū)可容納 1 幀數(shù)據(jù),當緩沖區(qū)無法再容下一幀數(shù)據(jù)時,緩沖區(qū)滿標志會置 1。
2.3.4. IIC 主機時鐘同步和總線仲裁
IIC 主機模式時,在多主機的應(yīng)用場景下,支持時鐘同步和總線仲裁。當總線上連接了不止一個主機時,就會存在同時發(fā)起通信的情況,這時候需要時鐘同步以及總線仲裁機制決定由哪個主機占用總線完成數(shù)據(jù)傳輸。
時鐘同步的原理:IIC 總線上的不同主機可能發(fā)起傳輸時的時鐘頻率不一樣,通過時鐘同步機制,可以讓所有主機的時鐘同步,才能進行逐位仲裁。所有主機的 SCL 在總線上是線與的關(guān)系,當總線上的 SCL由高切換到低電平時,所有主機從 0 開始計算低電平周期時間。當電平時間達到時,如果總線上的其它主機的 SCL 低電平仍然保持,那么其它主機進入高電平等待狀態(tài),等低電平時間最長的主機的 SCL 拉高時再統(tǒng)一拉高。因此,總線上同步后的 SCL 的低電平時間由低電平周期最長的主機決定,而高電平時間由高電平周期最短的主機決定。
總線仲裁原理:IIC 總線上不同主機的 SDA 線也是線與的關(guān)系,各主機在 SCL 線為高電平時,檢查SDA 線的電平是否和自己發(fā)送的 SDA 信號一致,如果檢測到 SDA 線為低電平時,自己要發(fā)送的 SDA 信號為高電平,那么該主機仲裁失敗,停止總線上的傳輸動作。
2.3.5. IIC 從機拉低 SCL
IIC 從機在發(fā)送狀態(tài)下如果緩沖區(qū)中沒有可發(fā)送的數(shù)據(jù),或者在接收狀態(tài)下緩沖區(qū)已滿時,將會在 SCL端口輸出低電平,拉低總線上的 SCL 信號使主機暫停發(fā)送時鐘。當從機準備好發(fā)送或者接收后,將在 SCL 輸出高電平,主機又可以重新控制總線上的 SCL 線,恢復數(shù)據(jù)傳輸。
2.3.6. IIC 從機支持 7bit/10bit 尋址
IIC從機支持 7bit 或者 10bit 尋址模式,由寄存器 CON0 的IIC_SLAVE_ADDR_WIDTH位決定。
7bit 模式下,主機需要在 TX 模式下發(fā)送帶 START 位的 7bit 地址,然后 1bit 為 R/W 標志。當主機寫從機時,尋址完成即可進行數(shù)據(jù)發(fā)送。當主機讀從機時,尋址完成后,主機需要改成 RX 模式,然后配置準備接收的數(shù)據(jù)長度(寄存器 DMA_LEN),然后對寄存器 CMD_DATA 寫任意值啟動接收。
10bit 模式下,主機需要在 TX 模式下發(fā)送帶 START 位的第 1byte 地址(此時 R/W 位為 1),接著發(fā)送第 2byte 地址,此時如果收到從機的 ACK 信號,則為尋址成功。接下來如果是主機寫從機,就可以直接進行數(shù)據(jù)發(fā)送。如果是主機讀從機,那么需要主機再次發(fā)送帶 START 為的第 1byte 地址(此時 R/W 為 1),然后切換成 RX 模式,配置寄存器 DMA_LEN,并且對寄存器 CMD_DATA 寫任意值啟動讀數(shù)據(jù)。
主機讀從機時,從機被尋址成功且收到讀標志時,需要切換成 TX 模式,并且往緩沖區(qū)中寫入要發(fā)送的數(shù)據(jù)。
2.6. 時鐘與復位
2.6.1. 時鐘介紹
該模塊時鐘來源于系統(tǒng)時鐘,可通過配置系統(tǒng)寄存中 CLKCON2 來使能時鐘。
2.6.2. 復位介紹
該模塊的復位源有兩個,分別是系統(tǒng)復位和軟件復位,軟件復位可通過配置系統(tǒng)寄存器觸發(fā)。
沈陽芯碩科技有限公司是華大電子專業(yè)代理商,有技術(shù)問題可咨詢我們