项目要求实现准确的300us间隔,读取AD数据。可如何实现呢?
1、HRtimer
可实现基于ns的定时,但不准确,参考文章,文章结论,在系统负载大时,定时不准确:
https://blog.csdn.net/qq_33406883/article/details/99641461
2、基于内核定时器
只能ms级定时
3、看设备树,V3S的3个内部定时器都占用。是不是自己的驱动就不能用这3个定时器了?
4、V3S内部有个HS timer,似乎可以用?但没搜到用法。
5、设置一个周期300us的PWM信号,接到Gpio接口上,用GPIO中断来实现?
大佬们有什么建议?
离线
参考a20手册看看,有寄存器描述,v3s和a20的HSTMR都是在0x01c60000
a20 hstmr主线支持
现在,已经让hstmr跑起来了 ,但在Request_isr时,不知如何确定中断号?
手册里写的84,应该是硬件中断号, 用到Linux里不行,注册失败.
离线
在V3S 4.13版本中,HRtimer代码失败. 可能内核不支持,需重新编译内核
经检查,没有这个内核选项.
在Ubuntu中可运行,但V3S不行.
最近编辑记录 jjwly (2024-07-22 17:10:15)
离线