打印
[技术求助]

大家帮我看看我的hpi程序

[复制链接]
1390|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mentoscui|  楼主 | 2012-11-28 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在在做arm2410和DM642的HPI口驱动程序,在驱动中各个寄存器定义如下:

/* HPIC 寄存器*/

#define HPIC_L  *(volatile u16*)(HPI_BASE+0x0) //00 0 0

#define HPIC_H  *(volatile u16*)(HPI_BASE+0x2) //00 1 0



/* HPIA 寄存器*/

#define HPIA_L   *(volatile u16*)(HPI_BASE + 0x4) //01 0 0

#define HPIA_H   *(volatile u16*)(HPI_BASE + 0x6) //01 1 0



/* HPID  自增模式 */

#define HPID_A_L  *(volatile u16*)(HPI_BASE + 0x8) //10 0 0

#define HPID_A_H  *(volatile u16*)(HPI_BASE + 0xa) //10 1 0



/* HPID  固定寻址*/

#define HPID_F_L  *(volatile u16*)(HPI_BASE + 0xc) //11 0 0

#define HPID_F_H  *(volatile u16*)(HPI_BASE + 0xe) //11 1 0



其中HR/W接的是主机的R/W信号,HCNT[1-0]对应主机的A[3-2],HHWL对应A1,HRDY取反后接主机的nWAIT。用的是HPI16模式。



现在linux的驱动中中断已经可以正常工作了,初始化HPIC也基本没问题了,可是HPIA的读写有问题,也就不能做后面的操作了。



后来查到2410每次读操作只能读取半字,HPIA_H和HPIC_H总是相同的随机数,我认为没有读到东西,HPIA_L和HPIC_L内的值是相应HPIA和HPIC寄存器的高半字。

相关帖子

沙发
mentoscui|  楼主 | 2012-11-28 16:28 | 只看该作者
请大家帮忙看看是那里有问题呢,是地址设置的有问题还是什么别的原因,谢谢!

使用特权

评论回复
板凳
qwempty| | 2012-11-28 16:42 | 只看该作者
你的HAS怎么接了

使用特权

评论回复
地板
wuhaidianzi| | 2012-11-28 16:54 | 只看该作者
我也遇到和楼主同样的问题,就是nWAIT信号一旦变低后就无法恢复高电平,硬件的接发基本和楼主是一样的。不知道楼主解决这个问题没有,或者有没有其他高手知道问题出在哪里,欢迎和我联系,交流指导一下,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

176

帖子

0

粉丝