使用者工具

網站工具


other:workspace:mt7620:mt7620_gpio_設定

MT7620 GPIO 設定

(以 GPIO#40為例)

1. refer MT7620_ProgrammingGuide_E1_20120522.pdf

2. 查系統 address base (p19, 2.1.4 Register Descriptions (base: 0x1000_0000)), 這是physical address, 我們須要用virtual address, 所以請使用:

# reg s 0
switch register base addr to system register 0xb0000000
(可以看出為 0xB0000000)

3. 找出 GPIO#40 對應的群組

3.1 請參考 MT7620_Datasheet_20130102.pdf p23/24, 找出 GPIO#40 為 EPHY_LED0_N_JTDO, 且 Group 為 SW_PHY_LED/JTAG.

4. 設定 GPIO Mode 為 GPIO 控制

4.1 查 (ProgrammingGuide)p18, System Control - List of Register, 找到 Offset 0x0060 GPIOMODE GPIO Purpose Select, 為第21項, 對應35頁

4.2 至 p35, 依前一步驟找出的群組“SW_PHY_LED/JTAG” 來找對應的值, 如 “SW_PHY_LED/JTAG”, 即猜出應為 bit 15 “EPHY_LED_GPIO_MODE”

4.3 取出原來的值(此表的開頭說明的 offset: 0x0060), 並改成 GPIO 控制

# reg r 60
0x1a171d
#reg w 60 0x1a971d  //將 bit 15 設為 1, EPHY_LED_GPIO_MODE 設為 gpio

1a171d ⇒ 0000 0000 0001 1010 0001 0111 0001 1101

1a971d ⇒ 0000 0000 0001 1010 1001 0111 0001 1101

5. 控制 GPIO - 設定 INPUT / OUPUT

5.1 查(ProgrammingGuide) Programmable I/O 的 List of Register 在 p80

5.2 因要控制 GPIO#40, 所以找 40~71的區段的, 即 GPIO71_40_DIR:PIO Pin Direction(offset:0x0074), 並對應至90頁

5.3 查GPIO address base (ProgrammingGuide)p82, 2.7.4 Register Descriptions (base: 0x1000_0600), 這是physical address, 我們須要用virtual address即 0xB000_0600, (項次2找出的base 為0xb000_0000)

5.4 設定GPIO#40為 output ( 0:INPUT, 1:OUTPUT)

# reg s 0xb0000600
# reg r 74
# reg w 74 1

(因此address是 71~40, 所以GPIO#40 對到 bit0的位置)

原 0000 0000 0000 0000 0000 0000 0000 0000

新 0000 0000 0000 0000 0000 0000 0000 0001

若要控制 GPIO#40~44

# reg s 0xb0000600
# reg r 74
# reg w 74 1F

原 0000 0000 0000 0000 0000 0000 0000 0000

新 0000 0000 0000 0000 0000 0000 0001 1111

6. 控制 GPIO (以 GPIO#40 - EPHY_LED0 為例)(系統設計 EPHY_LED, 0:亮 1:滅)

方法一:
找到 set 及 reset 位置,
p90 GPIO71_40_SET:Set PIO Pin Data Bit(office:0x007C)
p91 GPIO71_40_RESET:Clean PIO Pin Data Bit(office:0x0080)

# reg w 80 1 (reset GPIO#40, set 0 亮)
# reg w 80 2 (reset GPIO#41, set 0 亮)
# reg w 80 4 (reset GPIO#42, set 0 亮)
# reg w 80 7 (reset GPIO#40,41,42, set 0 亮)

# reg w 7c 1 (set GPIO#40, set 1 滅)
# reg w 7c 2 (set GPIO#41, set 1 滅)
# reg w 7c 4 (set GPIO#42, set 1 滅)
# reg w 7c 7 (set GPIO#40,41,42, set 1 滅)

方法二: (直接改值)
找到 Data 位置,
p89~90 GPIO71_40_DATA:PIO Pin Data(office:0x0070)

# reg r 70
0x60fffff (原 GPIO 40~44 都沒亮)
# reg w 70 0x60FFFFFE (reset GPIO#40, set 0 亮)
# reg w 70 0x60FFFFFD (reset GPIO#41, set 0 亮)
# reg w 70 0x60FFFFFB (reset GPIO#42, set 0 亮)
# reg w 70 0x60FFFFF8 (reset GPIO#40,41,42, set 0 亮)

ex.

GPIO #40
1. reg s 0

2. set GPIO Mode
reg r 60
0x1a171d
reg w 60 0x1a971d (改bit 15 為 1)

3. set Input/Output(0/1)
reg s 0xb0000600
reg r 74
0x0
reg w 74 1 (改bit 0(GPIO #40) 為 1 output)

4. pull hi/low
reg r 70
0x60FFFFFF
reg w 70 0x60FFFFFE (改bit 0(GPIO #40) 為 0 (low), 點亮)


GPIO #58
1. reg s 0

2. reg r 60
0x14971D
reg w 60 0x18971D (改 bit 19:18 為 2)

3. set Input/Output
reg s 0xb0000600
reg r 74
0x19
reg w 74 0x40019 (將 GPIO 58(bit 18 ) 改為 Output)

4. pull hi/low
reg r 70
0xFFFFFDFF (GPIO 58原為 1:low)
reg w 70 0xFFFBFDFF (改 GPIO 58 為 0)

GPIO #11
reg s 0

reg r 60
0x14971d
reg w 60 0x18971d

reg s 0xb0000600
reg r 24
0x0
reg w 24 0x800 (將 GPIO 11(bit 11) 改為 Output)

reg r 20
0xf03f86 (GPIO 11原為 1:low)
reg w 20 0xf03786(改 GPIO 11為 0)
other/workspace/mt7620/mt7620_gpio_設定.txt · 上一次變更: 2019/11/16 08:12 (外部編輯)