关于GPIO模拟SPI的延时问题
最关键的就是对时钟的延时控制,我们的spi要求时钟频率是5M,那么其周期就是200ns,
我们就需要实现100ns的延迟,arm linux内核中如何实现这么小的延迟呢???目前cpu频率是180MHZ
我们就需要实现100ns的延迟,arm linux内核中如何实现这么小的延迟呢???目前cpu频率是180MHZ
作者: paopao1874 发布时间: 2011-04-28
你可以使用ndelay
具体参考include/linux/delay.h
#ifndef ndelay
static inline void ndelay(unsigned long x)
{
udelay(DIV_ROUND_UP(x, 1000));
}
#define ndelay(x) ndelay(x)
#endif
具体参考include/linux/delay.h
#ifndef ndelay
static inline void ndelay(unsigned long x)
{
udelay(DIV_ROUND_UP(x, 1000));
}
#define ndelay(x) ndelay(x)
#endif
作者: voice_shen 发布时间: 2011-04-28
用ndelay(),或者schedule_timeout(); 用内核的计时器实现
作者: confidence321 发布时间: 2011-04-28
用硬件的定时中断。
ndelay是忙等待吧,线程调度一次延时就不是固定的了。
内核的软件定时器无法实现比HZ进度更高的定时。
ndelay是忙等待吧,线程调度一次延时就不是固定的了。
内核的软件定时器无法实现比HZ进度更高的定时。
作者: yuanlulu 发布时间: 2011-04-28