龙芯测试GPIO方法

以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)

3、应用程序操作GPIO方法

应用层通过mmap方式控制gpio

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大、猫

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值