7929|26

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

使用PXA270/310,需要通过GPIO读取磁卡信息——新手请教各位,可加分 [复制链接]

硬件情况:磁卡的8个引脚直接与GPIO的49-55、57号引脚连接。现在需要实现磁卡数据的读取功能,想要使用中断实现该功能,具体要怎么做呢?想法:在刷卡开始时发出中断,根据采样频率来采集数据。其中,提供采样频率的引脚,在每一个数据采样周期中发生一个中断,以便采集数据。
1、这样做是否可行?如果可行,如何把磁卡刷卡的中断和数据采样频率发生的中断结合在一起呢?
2、读到的的数据要怎样提供给应用程序呢?要把数据写到哪里以便提供给上层应用程序呢?

不知道表达是否清楚,还请各位大虾帮忙……

最新回复

我就是你说的意思,看来我说清楚了。呵呵。状态机是嵌入式系统中比较常用的方法。  详情 回复 发表于 2008-10-9 20:41
点赞 关注

回复
举报

89

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
请教高手,请帮帮忙吧
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你用8个GPIO口来模拟并行通信啊? 是可以的, 为什么中间空个 56呢? 能不能找8个IO连一块的啊/
这样处理就更方便了

你这个方法上可以的,前提是你的GPIO口够丰富, 代码实现也非常简单,我的blog里,关于LCD的文字,有介绍
就是用GPIO, 8个, 来模拟并行很LCD通信的, ARM片和你的不一样,但方法是一样的
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
开心啊,看到了希望……

硬件不是我们自己的,我们是根据他们硬件的设备来给他们做东西的,所以,想找八个连一起的GPIO口——呵呵,不太可能啊,现在硬件已经做成这个样子了

我先看看你的方法,希望偶搞的定,谢谢先
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
我看了你的文章,好长啊——不过有一些启发,但是好像我这里有些不太一样,根据硬件使用端口的情况看,我只能使用GPIO模拟串行数据通信

1、硬件GPIO引脚使用情况:
GPIO[49:55、57]对应磁卡器的RCP[3]、RDD[3]、CLS、NPWN
2、磁卡各引脚的使用情况:
CLS 刷卡开始为下降沿,磁卡走行中保持低电频,走向结束上升沿,无磁卡走行时保持高电频
RCP 记录采样频率,每班个周期的幅度为100千欧 14毫秒;620千欧 60毫秒,前半周期高电,后半周期为低频
RDD 数据采样端,当采样引脚RCP为高电频(前半周期)时,该段开始采样
CLS 为共用引脚,RCP、RDD在磁卡不同的情况下分别使用1-3个不同的引脚

不知道您对这样的情况有什么建议

另外,我看到了您留的msn,冒昧的加了,希望能向你请教一些嵌入式开发相关的问题
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
应该是很简单的case,就是描述不清楚:
1. 最重要的就是接口问题:几个GPIO是怎么分配的?有没有时钟信号?如果有,是哪根?如果没有,那必然是事先越好的时钟频率,那时钟频率是多少?我个人猜测应该是有时钟信号的,毕竟如果没有时钟信号,就需要同步的问题,对小接口来说,太复杂。其他的管脚功能又是怎么分配的?

2.多个中断合用一根中断引脚的问题,这需要硬件支持,高有效线或,低有效线与。但是需要提供状态寄存器,以便发生中断后可以通过状态寄存器直到是那个中断发生了。

3.怎么将数据告诉上层程序,好象不是一个需要讨论的问题。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
学习啦!
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
1、硬件GPIO引脚使用情况:
GPIO[49:55、57]对应磁卡器的RCP[3]、RDD[3]、CLS、NPWN
2、磁卡各引脚的使用情况:
CLS 刷卡开始为下降沿,磁卡走行中保持低电频,走向结束上升沿,无磁卡走行时保持高电频
RCP 记录采样频率,每班个周期的幅度为100千欧 14毫秒;620千欧 60毫秒,前半周期高电,后半周期为低频
RDD 数据采样端,当采样引脚RCP为高电频(前半周期)时,该段开始采样
CLS 为共用引脚,RCP、RDD在磁卡不同的情况下分别使用1-3个不同的引脚

对以上:
1.cls 可以做下跳沿中断。
2.做一个驱动,将rcp rdd在驱动里面映射 。当cls中断时,读rcp根据rcp读rdd

3有了驱动 ,你就可以在应用层得到数据了

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
我也在搞310,跟着学习一下
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

10
 
    终于有点进展了,可是还有新的问题

    之前,无法检测到磁卡相关引脚的信号,后来发现,是因为GPIO引脚的功能内有设置(不知道是不是所有的板子都需要设置引脚功能)现在,根据硬件说明书把功能设置好了,终于可以随意的置高、置低各个引脚的电平、方向等。在允许中断的情况下,刷卡也是可以引起中断产生的,但是,中断会发生死循环,具体情况是这样的:
    在刷卡的时候,会检测到中断的发生,希望在底层的中断处理代码中处理掉:根据RCP中断读取RDD信息的功能,然后,由CLS的下降沿中断唤起IST,把读到的信息返回给驱动,可是,在底层代码里加了调试信息后,调试信息循环出现,其他测试信息完全被停止了,不知道是调试信息过多还是真的进入了死循环。
    问题:如果在下层中断代码中处理读取信息的功能,也就是说,在RCP采样时钟发生跳变时(上升沿引起中断时)读取RDD的数据,是否需要在结束的时候进行IntrDone的处理,如果需要,具体应该怎么做?如果不需要,会不会引起以上的"死循环"情况?或者在读取信息结束的时候(走行结束,即CLS下降沿中断发生的时候)需要一些其他的处理程序?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
今天是国庆节,祝大家节日快乐^_^
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
有的系统需要手工擤出标志位,有的系统在读取标志位的时候硬件会自动清除标志位。这纯粹就是实现方法不同, 不知道的你系统属于哪种?你的系统是否要求在中断处理程序中手工清除中断标志位?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

13
 
GPIO是需要配置的,包括复用情况,极性,方向等等。这个CPU的手册应该有很详细的说明。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

14
 
你所说的手工清楚标志位,要怎么看呢?在IntrDoneIrq的代码里,我看每一个GPIOXX的子中断都有对应的处理,比如说:
switch(irq)
{
……
case IRQ_GPIO9_ETHERNET:
g_pGPIORegs->gfer0 |= XLLP_GPIO_BIT_LAN_INT;
break;
……
}
这个是不是说明需要手动清楚标志位呢?

               
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

15
 
呵呵,中断出现死循环的问题解决了,确实是中断触发后没有清除标志位。
现在我有了新的疑问,首先,CLS引脚上升沿和下降沿中断都需要,请问,如何判断是上升沿触发的中断还是下降沿触发的呢?现在的做法:根据引脚触发状态寄存器的值判断CLS引脚发生中断后,再根据其电平寄存器的高低判断是上升沿触发中断还是下降沿触发中断的,如果是高点平则认为是高否则认为是低,这样做正确么?引脚电平触发中断时,电平寄存器存储的是什么时候的电平信号,跳变前的状态还是跳变后的或者是不定的(在硬件式样书的波形图上看跳变的是一个点,有高有低的,搞不清楚了)?
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

16
 
要看频率是否合适
建议做成快速中断,不要去做IST了,用KernelIoControl()函数直接跟内核通讯
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 15 楼 sxy_9761 的回复:
要看频率是否合适
建议做成快速中断,不要去做IST了,用KernelIoControl()函数直接跟内核通讯


先谢谢你,请问:快速中断是什么意思啊?要怎么做呢?还请指教^_^
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
关注
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

19
 
一起学习
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

20
 
一个硬件方法,如果可能,比如你的模块用cpld做的接口,你可以将上下跳沿的中断信号,用硬件分成两个独立的中断。。。。
一路相应下跳沿,一路相应上升沿。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表