AM335X 的 GPIO 操作方法

来源:百问网
作者:韦东山
本文字数:1077 , 阅读时长:2分钟

  • GPIO: General-purpose input/output , 通用的输入输出口
  • PRCM: Power, Reset, and Clock Management (电源、复位、时钟管理器)
  • CM: Control Module(控制模块) 或 Clock Module (时钟模块)
  • PRM_PER: Power Reset Module Peripheral Registers(电源/复位模块中关于外设的寄存器)
  • CM_PER: Clock Module Peripheral Registers (时钟模块中关于外设的寄存器)
AM335X 的 GPIO 模块结构
AM335X 的 GPIO 操作方法文章插图
有 4 组 GPIO(GPIO0~3) , 每组有 32 个 GPIO 。
【AM335X 的 GPIO 操作方法】GPIO 的控制涉及 3 大模块:PRCM、Control Module、GPIO 模块本身
① PRCM 用于使能模块:
GPIO0 永远都是使能的 , GPIO1~3 可单独控制 。
PRCM 模块给 GPIO 模块常供电 , 只需要使能 GPIO 模块的时钟 。
② Control Module 用于设置模式(Mode):
设置引脚的 Mode(即选择功能)、上下拉电阻等;
每一个 GPIO 引脚在 Control Module 中都有一个寄存器 , 怎么找到这个寄存器?
a. 根据 pin number 确定 pin name
b. 根据 pin name 在 Control Module 中确定寄存器
③ GPIO 模块内部:
方向:引脚 Mode 设置为 GPIO 时 , 可以继续设置它是输出引脚 , 还是输入引脚 。
数值:对于输出引脚 , 可以设置寄存器让它输出高、低电平;对于输入引脚 , 可以读取寄存器得到引脚的当前电平 。
AM335X 的 GPIO 相关寄存器
AM335X 的 GPIO 操作方法文章插图
set-and-clear 协议假设某个 GPIO 被设置为输出 , 怎么设置它的输出电平呢?AM335X 中对于每个 GPIO 模块有一个GPIO_DATAOUT 寄存器 , 其中的每一位对应一个引脚 , 如下:
AM335X 的 GPIO 操作方法文章插图
要设置某一位时 , 不能影响到其他位 , 操作方法是:读出原来的值 , 修改某一位 , 把新值写回去 。 需要3 个步骤才可以设置某一位的值 , 这效率太低了!
使用 set-and-clear 可以只用一个步骤即可修改某一位的值 。
当想设置某一位为 1 时 , 往 DATA_SETDATAOUT 寄存器中某位写入 1 即可 , 芯片内部会把对应引脚的电平设置为 1 , 并且不会影响其他引脚:
AM335X 的 GPIO 操作方法文章插图
当想清除某一位为 0 时 , 往 DATA_CLEARDATAOUT 寄存器中某位写入 1 即可 , 芯片内部会把对应引脚的电平设置为 0 , 并且不会影响其他引脚:
AM335X 的 GPIO 操作方法文章插图
并非所有的芯片都有 set-and-clear 功能 , TI 的 AM335X 系列芯片有这功能 。
「新品首发」STM32MP157开发板火爆预售!首批仅300套
点击“了解更多”阅读更多相关章节