社区
Linux_Kernel
帖子详情
三星的6410芯片 支持快速的GPIO么?
sanmao_1200
2010-11-12 03:12:50
请问 三星的6410芯片 支持快速的GPIO么?如果没有那么 ARM 720T以上那款芯片支持快速GPIO
...全文
158
4
打赏
收藏
三星的6410芯片 支持快速的GPIO么?
请问 三星的6410芯片 支持快速的GPIO么?如果没有那么 ARM 720T以上那款芯片支持快速GPIO
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ANY1314
2010-11-13
打赏
举报
回复
很好,牛X
Corepy
2010-11-13
打赏
举报
回复
6410的GPIO使用
一,每组GPIO的数目:
#define S3C64XX_GPIO_A_NR (8)
#define S3C64XX_GPIO_B_NR (7)
#define S3C64XX_GPIO_C_NR (8)
#define S3C64XX_GPIO_D_NR (5)
#define S3C64XX_GPIO_E_NR (5)
#define S3C64XX_GPIO_F_NR (16)
#define S3C64XX_GPIO_G_NR (7)
#define S3C64XX_GPIO_H_NR (10)
#define S3C64XX_GPIO_I_NR (16)
#define S3C64XX_GPIO_J_NR (12)
#define S3C64XX_GPIO_K_NR (16)
#define S3C64XX_GPIO_L_NR (15)
#define S3C64XX_GPIO_M_NR (6)
#define S3C64XX_GPIO_N_NR (16)
#define S3C64XX_GPIO_O_NR (16)
#define S3C64XX_GPIO_P_NR (15)
#define S3C64XX_GPIO_Q_NR (9)
二,每组GPIO的起始号码
#define S3C64XX_GPIO_NEXT(__gpio) \
((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 1)
用黏贴符号来运算的,以A组的0起始,依次加每组的GPIO个数
enum s3c_gpio_number {
S3C64XX_GPIO_A_START = 0,
S3C64XX_GPIO_B_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_A),
S3C64XX_GPIO_C_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_B),
S3C64XX_GPIO_D_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_C),
S3C64XX_GPIO_E_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_D),
S3C64XX_GPIO_F_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_E),
S3C64XX_GPIO_G_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_F),
S3C64XX_GPIO_H_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_G),
S3C64XX_GPIO_I_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_H),
S3C64XX_GPIO_J_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_I),
S3C64XX_GPIO_K_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_J),
S3C64XX_GPIO_L_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_K),
S3C64XX_GPIO_M_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_L),
S3C64XX_GPIO_N_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_M),
S3C64XX_GPIO_O_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_N),
S3C64XX_GPIO_P_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_O),
S3C64XX_GPIO_Q_START = S3C64XX_GPIO_NEXT(S3C64XX_GPIO_P),
};
三,单个GPIO脚的号码
以单组的起始号
#define S3C64XX_GPA(_nr) (S3C64XX_GPIO_A_START + (_nr))
#define S3C64XX_GPB(_nr) (S3C64XX_GPIO_B_START + (_nr))
#define S3C64XX_GPC(_nr) (S3C64XX_GPIO_C_START + (_nr))
#define S3C64XX_GPD(_nr) (S3C64XX_GPIO_D_START + (_nr))
#define S3C64XX_GPE(_nr) (S3C64XX_GPIO_E_START + (_nr))
#define S3C64XX_GPF(_nr) (S3C64XX_GPIO_F_START + (_nr))
#define S3C64XX_GPG(_nr) (S3C64XX_GPIO_G_START + (_nr))
#define S3C64XX_GPH(_nr) (S3C64XX_GPIO_H_START + (_nr))
#define S3C64XX_GPI(_nr) (S3C64XX_GPIO_I_START + (_nr))
#define S3C64XX_GPJ(_nr) (S3C64XX_GPIO_J_START + (_nr))
#define S3C64XX_GPK(_nr) (S3C64XX_GPIO_K_START + (_nr))
#define S3C64XX_GPL(_nr) (S3C64XX_GPIO_L_START + (_nr))
#define S3C64XX_GPM(_nr) (S3C64XX_GPIO_M_START + (_nr))
#define S3C64XX_GPN(_nr) (S3C64XX_GPIO_N_START + (_nr))
#define S3C64XX_GPO(_nr) (S3C64XX_GPIO_O_START + (_nr))
#define S3C64XX_GPP(_nr) (S3C64XX_GPIO_P_START + (_nr))
#define S3C64XX_GPQ(_nr) (S3C64XX_GPIO_Q_START + (_nr))
四,判断GPIO是否有效
比如:if (gpio_is_valid(S3C64XX_GPB(0)))
static inline int gpio_is_valid(int number)
{
return ((unsigned)number) < ARCH_NR_GPIOS;
}
因为定义了#define ARCH_NR_GPIOS (S3C64XX_GPQ(S3C64XX_GPIO_Q_NR) + 1)
同样类似的范围定义有:
#define S3C64XX_GPIO_END (S3C64XX_GPQ(S3C64XX_GPIO_Q_NR) + 1)
#define S3C_GPIO_END S3C64XX_GPIO_END
五,判断GPIO是否被占用
比如:if(gpio_request(S3C64XX_GPB(0), "GPB")),通过查看该GPIO保存的记录标志是否为NULL来判断。
六,配置GPIO用途
由于GPIO多复用,所以不管是把它当作GPIO使用时,还是当作中断亦或UART口,需要配置它的用途。比如:s3c_gpio_cfgpin(S3C64XX_GPB(0), 0x2);根据芯片规格书来配置其端口。所有的这些配置工作在Gpiolib.c (\arch\arm\plat-s3c64xx) 来完成的。
七,上下拉
有的GPIO口可以内部配置成上拉或者下拉,这样就不需要外部再接电阻连线。配置成上拉时,驱动能力更强。配置上下拉对外部接口来说呈现的只是一种默认的电平,其本身可以对外输出高低由软件控制,就像I2C。
比如:s3c_gpio_setpull(S3C64XX_GPB(0), S3C_GPIO_PULL_DOWN);
八,配置成外中断
s3c_gpio_cfgpin(HdPhone_GpioPin, S3C_GPIO_SFN(2));
set_irq_type(HdPhone_EintPin, IRQ_TYPE_EDGE_BOTH); //中断边沿类型
具体应用的话还需要用request_irq注册对应的中断处理函数。
八,配置GPIO方向,输入和输出
比如:gpio_direction_output(S3C64XX_GPL(0), 1);
九,使用GPIO
比如输出:gpio_set_value(S3C64XX_GPG(1), 1); 或者是输入:gpio_get_value(S3C64XX_GPQ(8))
十,释放GPIO
比如:gpio_free(S3C64XX_GPF(15));就是把对应GPIO口的控制标志FLAG_REQUESTED清掉,成NULL,之后可以再被其他调用。
asmlearn
2010-11-13
打赏
举报
回复
是rapid io吗,6410支持吧。
gpio
.rar_
GPIO
-test_S3C2440 LINUX_
gpio
ti_linux
gpio
_s3c2440 gpi
基于linux和s3c2440的
gpio
驱动程序,同时包含了应用程序例子,能够访问任意的单个IO管脚,设置为输入、输出等
三星
2410
芯片
测试程序
三星
2410开发资料,供ARM初学者使用,带测试实例,
芯片
引脚说明等
三星
ARM11系列
芯片
S3C
6410
开发板SMDK6400的全套电路
三星
ARM11系列
芯片
S3C
6410
开发板SMDK6400的全套电路,是自己花钱买的开发板的资料。不用多说,很难下载到得资料。
三星
s3c2440
芯片
中文手册
ARM
三星
s3c2440
芯片
中文手册,难得的中文资料!!!!
最新最全
三星
S5P6818
芯片
手册
包含底板资料,
三星
S5P6818最新最全资料,还有其它的一些
芯片
资料
Linux_Kernel
4,469
社区成员
17,459
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章