怎么控制GPIO引脚输出5M方波(linux 2.6.28+S3C2440)
我想在驱动程序里控制GPIO引脚输出5M方波,并在上升沿加载数据,输出到一端口。我尝试了timer0中断、hrtimer定时器中断、ndelay延时、while延时,都不...
我想在驱动程序里控制GPIO引脚输出5M方波,并在上升沿加载数据,输出到一端口。我尝试了timer0中断、hrtimer定时器中断、ndelay延时、while延时,都不行,要么频率达不到,要么一运行就卡死。实在不知道怎么实现了?麻烦大牛们指点一二,谢谢!
展开
2个回答
2013-11-24
展开全部
在linux系统S3C2440平台下,写一个外部设备驱动程负责与外设通信,包括读写数据和时钟信号的同步,时钟信号为5Mhz输出给外设使用,并与读写数据保持同步,要求在时钟的上升沿检测并读/写数据。所以,我尝试:(1)用timer0产生中断,在中断处理程序中反转电平输出,若是由低变高,则把数据放到端口地址上,运行结果是中断太频繁,卡死;(2)用hrtimer定时器中断,由于原内核没有设置CONFIG_HIGH_RES_TIMERS,不支持高精度,结果中断频率只是普通定时器频率,太低;(3)创建线程,在线程里用ndelay或while延时,能产生高频的时钟,但程序一运行系统卡死。麻烦大牛帮忙想想解决办法,非常感谢!
2013-11-24
展开全部
如果你让系统产生一个5MHz的中断,那内核肯定会挂死。用PWM模块输出一个5MHz的波形就可以了,不需要中断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询