| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> H3 GPIO笔记 -> 正文阅读 |
|
[嵌入式]H3 GPIO笔记 |
NanoPi-NEO-Core最近买了一块,这个板子使用全志H3。查看H3的数据手册,把GPIO这部分做个笔记。 H3有7组GPIO,如下 分别是PA,PC,PD,PE,PF,PG,PL.没有PB这一组 PA有22个端口 PC有19个端口 PD有18个端口 PE有16个端口 PF有7个端口 PG有14个端口 PL有12个端口 其中两组IO支持中断。PA和PG支持中断 PIO的基址为0x01c2_0800 抛却中断配置,主要PIO的寄存器有4个,Pn_CFG, Pn_DAT,Pn_DRV,Pn_PUL 每组IO有4个Pn_CFG寄存器,Pn_CFG0-Pn_CFG3,每4bit配置一个端口模式 ?????????? ??????????????? PA有22个端口,则需要4×22=88bit,则需要配置寄存器Pn_CFG0-Pn_CFG2 ??????????????? 例如PA的端口0配置,在Pn_CFG0的bit2-0,bit3保留位 ?Pn_CFG地址计算:基址+n*36+(0-3)*4. 例如: ????????PA_CFG0地址=0x01c2_0800 + 0×36 +0×4=0x01c2_0800 ????????PA_CFG1地址=0x01c2_0800 + 0×36 +1×4=0x01c2_0804 ????????PA_CFG2地址=0x01c2_0800 + 0×36 +2×4=0x01c2_0808 ????????PA_CFG3地址=0x01c2_0800 + 0×36 +3×4=0x01c2_080c ??????? .... ????????PC_CFG0地址=0x01c2_0800 + 1×36 +0×4=0x01c2_0824 每组IO有1个Pn_DAT寄存器,每一bit代表IO的状态。当IO配置输出,写此寄存器改变输出状态,当配置输入,读此值代表输入状态。 Pn_DAT地址计算:基址+n*36+(4)*4 例如: ????????PA_DAT地址=0x01c2_0800 + 0×36 +4×4=0x01c2_0810 ??????? PC_DAT地址=0x01c2_0800 + 1×36 +4×4=0x01c2_0834 ??????? ..... 每组IO由2个Pn_DRV寄存器。此寄存器中每2bit表示一个IO的驱动能力。共有level0-level3 Pn_DRV 地址计算:基址+n*36+(5,6)*4 例如: PA_DRV0地址=0x01c2_0800 + 0×36 +5×4=0x01c2_0814 PA_DRV1地址=0x01c2_0800 + 0×36 +6×4=0x01c2_0818 每组IO有2个Pn_PUL寄存器,此寄存器中每2bit表示IO上下拉配置。2'b00:上下拉禁止,2'b01:上拉,2'b10:下拉,2'b11:保留 Pn_PUL地址计算:基址+n*36+(7,8)*4 例如: PA_PUL0地址=0x01c2_0800 + 0×36 +7×4=0x01c2_081c PA_PUL1地址=0x01c2_0800 + 0×36 +8×4=0x01c2_0820 综上所述,每组IO有9个寄存器,所占空间9×4=36=0x24字节空间 io中断寄存器只有PA和PG支持中断 ?每组IO的中断,也是4类寄存器:PA_INT_CFG,PA_INT_CTL,PA_INT_STA,PA_INT_DEB PA_INT_CFG0-3:每4bit配置一个IO的中断类型 ??????? 4'b0000:上升沿 ??????? 4'b0001:下降沿 ??????? 4'b0010:高电平 ??????? 4'b0011:低电平 ??????? 4'b0100:双边沿 ??????? 其它:保留 PA_INT_CTL:每bit控制中断的使能和禁止 PA_INT_STA:中断状态,每一bit表示中断状态,挂起或者没有中断挂起 PA_INT_DEB:中断防抖设置。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:26:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |