1.復位和時鐘系統
1.1. 復位
CIU32M010、CIU32M030 支持系統復位、電源復位和主復位。
1.1.1. 系統復位
系統復位將復位除某些復位狀態寄存器和特殊功能寄存器之外的所有寄存器。
當以下事件中的一件發生時,產生一個系統復位
• SLEEP 模式下外部 IO 口喚醒
• WDT 計數溢出復位
• 系統鎖定復位
1.1.2. 主復位
主復位能將部分系統復位無法復位的寄存器復位。
以下事件可以觸發一個主復位
• 軟件復位
• PVD 檢測到電壓低事件,且控制器處于復位功能模式
1.1.3. 電源復位
上電/掉電復位(POR/PDR 復位)都屬于電源復位。電源復位將復位所有的邏輯和模擬模塊。復位入口矢量被固定在地址 0x0000_0004。
1.2 時鐘
1.2.1. 模塊框圖
1.2.2. HIRC 時鐘
HIRC 時鐘信號由內部 72MHz 的振蕩器產生,HIRC 振蕩器能夠在不需要任何外部器件的條件下提供系統時鐘。HIRC 需要頻率校準,校準值寫在 FLASH 系統存儲區域。在程序使用這個時鐘前,可以讀取并配置出高精度的 HIRC 時鐘。經過出廠校驗后,正常溫度范圍下 HIRC 精度為 72MHz(±1.5%),具體請參考電氣特性參數 。
1.2.3. LIRC 時鐘
LIRC 振蕩器擔當一個低功耗時鐘源的角色,它作為系統啟動時鐘為其他單元提供時鐘。LIRC 時鐘頻率大約 256KHz。
1.2.4. 系統時鐘(SYSCLK)
兩種不同的時鐘源可被用來驅動系統時鐘(SYSCLK)
• 內部低速 256KHz LIRC
• 內部高速 72MHz(±1.5%) 高速振蕩器
1.2.5. 毛刺濾波時鐘源選擇
三種不同的時鐘源可被用來驅動 GPIO 的毛刺濾波時鐘
• 內部高速 HIRC 的分頻時鐘
• 內部低速 LIRC_256K 8 分頻時鐘
• 系統時鐘
• 內部低速 LIRC_256K
當不被使用時,任一個時鐘源都可被獨立地啟動或關閉,由此優化系統功耗。
2. 通用輸入輸出
2.1. 模塊介紹
每組 GPIO 端口有四個 32 位配置寄存器(GPIOx_MODE,GPIOx_OTYPE,GPIOx_OSPEED and GPIOx_PUPD),兩個 32 位數據寄存器(GPIOx_IDAT and GPIOx_ODAT),一個 32 位置位/復位寄存器
(GPIOx_BSR)和一個 32 位翻轉寄存器(GPIOx_TGL)。另外,所有 GPIO 有兩個復用功能選擇寄存器(GPIOx_AFRH and GPIOx_AFRL)。
注:GPIOx 中的 x 表示 GPIO 組數。
2.2. 功能特點
• 輸出狀態:推挽或開漏(上下拉)
• 輸出寄存器狀態值(GPIOx_ODAT) 或者復用功能輸出
• 輸入狀態:浮空、上下拉、模擬
• 輸入數據到數據寄存器(GPIOx_IDAT) 或復用功能輸入
• 獨立置位/復位/翻轉 IO 狀態(GPIOx_ BSR、GPIOx_TGL)
• 模擬功能
• 復用功能(開漏或推挽、上拉或下拉)
2.3. 功能說明
GPIO 的每一個端口可以通過軟件獨立配置成下面狀態
• 輸入浮空
• 輸入上拉
• 輸入下拉
• 模擬功能
• 開漏輸出(上拉或下拉)
• 推挽輸出
• 復用功能(開漏或推挽、上拉或下拉)
2.3.1. 通用 IO(GPIO)
復位期間和剛復位后,復用功能未開啟,IO 端口被配置成浮空輸入模式。當作為輸出配置時,寫到輸出數據寄存器上的值(GPIOx_ ODAT)輸出到相應的 IO 引腳。可以以推挽或開漏模式使用輸出驅動器。輸入數據寄存器(GPIOx_ IDAT)在每個 APB 時鐘周期 IO 引腳上的數據。所有 GPIO 引腳有一個內部弱上拉,當配置為輸入時,它們可以被斷開。
2.3.2. 單獨的位操作
當對 GPIOx_ ODAT 的個別位編程時,軟件不需要禁止中斷:在單次 APB 寫操作里,可以只更改一個或多個位。只需要通過對“置位/復位寄存器”(GPIOx_BSR)或“取反寄存器”(GPIOx_TGL)中想要更改的位寫“1”來實現。沒被選擇的位將不被更改。
2.3.3. 復用功能(AF)
芯片 IO 引腳通過多路選擇器連接到片內外設,每個 IO 上同一時刻只能選通一個復用功能。每個 IO引腳有一個 2 輸入的多路選擇器連接到復用功能(AF0~AF1),通過配置 GPIOx_AFRH/L 選擇功能。如果把端口配置成復用輸出功能,則引腳和輸出寄存器斷開,并和片上外設的輸出信號連接。如果軟件把一個 GPIO 腳配置成復用輸出功能,它的輸出將不確定。
2.3.4. GPIO 鎖定機制
鎖定機制允許在 GPIO 控制寄存器 GPIOx_LCK 上執行一串鎖定程序,然后把 GPIO 的狀態鎖定,一旦 GPIO 狀態被鎖定,將不可改變,直到復位。被鎖定的寄存器有(GPIOx_MODE, GPIOx_OTYPE,GPIOx_OSPEED, GPIOx_PUPD, GPIOx_AFRL and GPIOx_AFRH)。鎖定序列參考 GPIOx_LCK 寄存器描述 。
2.3.5. 輸入配置
當 IO 端口配置為輸入時
• 輸出緩存器被禁止
• 根據輸入配置(上拉、下拉或浮空)的不同,弱上拉和下拉電阻被連接
• 出現在 IO 腳上的數據在每個 APB 時鐘被采樣到輸入數據寄存器
• 對輸入數據寄存器的讀訪問可得到 IO 狀態
2.3.6. 輸出配置
當 IO 端口被配置為輸出時
• 輸出緩沖器被激活開漏模式:輸出寄存器上的“0”激活 N-MOS,而輸出寄存器上的“
1”將端口置于高阻態(P-MOS從不被激活)推挽模式:輸出寄存器上的“0”激活 N-MOS,而輸出寄存器上的“1”將激活 P-MOS。
• 施密特觸發輸入被激活
• 弱上拉和下拉電阻被禁止 CIU32M010、CIU32M030
• 出現在 IO 腳上的數據在每個 APB 時鐘被采樣到輸入數據寄存器
• 在開漏模式時,對輸入數據寄存器的讀訪問可得到 IO 狀態
• 在推挽模式時,對輸出數據寄存器的讀訪問得到后一次寫的值
2.3.7. 模擬輸入配置
當 IO 端口被配置為模擬輸入配置時
• 輸出緩存器被禁止
• 禁止施密特觸發輸入,實現了每個模擬 IO 引腳上的零消耗。施密特觸發輸出值被強制為“0”
• 弱上拉和下拉電阻被禁止
• 讀取輸入數據寄存器時數值為“0”
2.3.8. 復用功能配置
對 IO 端口進行編程作為復用功能時
• 在開漏或推挽式配置中,輸出緩沖器被打開
• 內置外設的信號驅動輸出緩沖器 (復用功能輸出)
• 施密特觸發輸入被激活
• 弱上拉和下拉電阻被禁止
• 在每個 APB 時鐘周期,出現在 IO 腳上的數據被采樣到輸入數據寄存器
• 開漏模式時,讀輸入數據寄存器時可得到 IO 口狀態
• 在推挽模式時,讀輸出數據寄存器時可得到后一次寫的值