以LS2K1000为例进行描述
ls2k1000共有60个GPIO引脚,4个专用GPIO,其余56个与其他功能复用,pmon下使用时记得配置复用关系配置,复用配置在通用配置寄存器0里,寄存器地址查看ls2k1000用户手册。
一、GPIO程序
以测试GPIO2,配置GPIO2输出高电平为例
1、汇编程序
li v0, 0xbfe10500
ld v1, (v0)
dli a0, (1<<2)
or v1, a0
xor v1, a0 //清零为输出
sd v1, (v0) //gpio2配置成输出模式
ld v1, 0x10(v0)
or v1, a0
//xor v1, a0 //去掉注释,gpio2输出低电平,否则输出高电平
sd v1, 0x10(v0)
2、C程序
#define GPIO_EN (*(volatile int *)0xbfe10500)
#define GPIO_O (*(volatile int *)0xbfe10510)
GPIO_EN &=~(1<<2); //配置gpio2为输出模式
GPIO_O |=(1<<2); //gpio2输出高电平
二、gpio测试方法
1、pmon下测试GPIO方法
pmon命令行下直接使用d4、m4操作GPIO寄存器
以测试GPIO2,配置GPIO2输出高电平为例: 备注:有GPIO复用的必须先配置复用
① d4 0xbfe10420 查看复用,如果引脚没有复用成GPIO,用m4命令进行配置
② d4 0xbfe10500 查看gpio2输入输出模式,假如读到的结果为v1
③ m4 0xbfe10500 date1 配置gpio2为输出模式 date1=v1 & (~(1<<2))
④ d4 0xbfe10510 读取输出设置寄存器,假如读到的结果为v2
⑤ m4 0xbfe10500 date2 配置gpio2为输出高 date2=v2 | (1<<2)
2、内核下测试GPIO方法
以测试GPIO2,配置GPIO2输出高电平为例: 备注:内核配置里必须选上GPIO选项
① 执行cd sys/class/gpio 进入gpio目录下
② 执行echo 2 > export 在gpio目录下生成一个gpio2
③ 进入gpio2目录下 cd gpio92
④ 查看GPIO端口是输入还是输出,执行cat direction 结果:in表示输入 out表
⑤ 设置GPIO为输出模式执行echo out > direction
⑥ 设置GPIO输出为高 echo 1 > value
或者直接操作寄存器
① devmem 0x1fe10420 查看复用,如果引脚没有复用成GPIO,用devmem命令进行配置
② devmem 0x1fe10500 查看gpio2输入输出模式,假如读到的结果为v1
③ devmem 0x1fe10500 32 date1 配置gpio2为输出模式 date1=v1 & (~(1<<2))
④ devmem 0x1fe10510 读取输出设置寄存器,假如读到的结果为v2
⑤ devmem 0x1fe10500 32 date2 配置gpio2为输出高 date2=v2 | (1<<2)