主题 : 怎么控制GPIO引脚输出5M方波(linux 2.6.28+S3C2440) 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 59768
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2011-11-29
最后登录: 2011-12-01
楼主  发表于: 2011-11-29 19:04

 怎么控制GPIO引脚输出5M方波(linux 2.6.28+S3C2440)

我想在驱动程序里控制GPIO引脚输出5M方波,并在上升沿加载数据,输出到一端口。

我尝试了timer0中断、hrtimer定时器中断、ndelay延时、while延时,都不行,要么频率达不到,要么一运行就卡死。

实在不知道怎么实现了?麻烦大牛们指点一二,谢谢!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2011-11-29 20:50
如果你让系统产生一个5MHz的中断,那内核肯定会挂死。用PWM模块输出一个5MHz的波形就可以了,不需要中断。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 59768
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2011-11-29
最后登录: 2011-12-01
2楼  发表于: 2011-11-29 21:10
可我想在每个上升沿放数据,该怎么控制呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2011-11-29 23:43
把你的需求完整的描述出来。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 59768
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2011-11-29
最后登录: 2011-12-01
4楼  发表于: 2011-11-30 08:42
在linux系统S3C2440平台下,写一个外部设备驱动程序,负责与外设通信,包括读写数据和时钟信号的同步,时钟信号为5Mhz输出给外设使用,并与读写数据保持同步,要求在时钟的上升沿检测并读/写数据。
所以,我尝试:
(1)用timer0产生中断,在中断处理程序中反转电平输出,若是由低变高,则把数据放到端口地址上,运行结果是中断太频繁,卡死;
(2)用hrtimer定时器中断,由于原内核没有设置CONFIG_HIGH_RES_TIMERS,不支持高精度,结果中断频率只是普通定时器频率,太低;
(3)创建线程,在线程里用ndelay或while延时,能产生高频的时钟,但程序一运行系统卡死。
麻烦大牛帮忙想想解决办法,非常感谢!
级别: 新手上路
UID: 73514
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2012-07-10
最后登录: 2012-07-13
5楼  发表于: 2012-07-10 18:04

 回 1楼(kasim) 的帖子

遇到类似问题,借此贴求教,关于“用PWM模块输出一个5MHz的波形”能否分享下更详细的说明和参考资料。非常感谢!(svyee@163.com