BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #14167同步于 2013/11/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

S3C2440 AD采样速度提不上去

Listen
2013/11/8镜像同步7 回复
请教大家,如果是裸机程序,AD可以到100KSPS以上,可是用同样的方法在linux里写驱动,采样率就在几K,提不上去了,怀疑是ioremap的问题,总之一定是内核里耗了很多时间,但是对内核不是很了解,不知有没有人遇到过此类问题?求解~
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
afeionline机器人#1 · 2013/11/8
从硬件上来说,这是不可能的。只要给AD模块配置同样的时钟和分频系数,那它的采样率就是一样的。你可以在两个环境下,分别读取AD的配置寄存器,看看这两个环境下AD的输入时钟、分频比等,应该是不一样的。 很有可能是因为在裸机和linux下cpu本身的工作频率就配置的不一样,导致输入到AD的时钟频率不同,即使这时候分频比是一样的,那采样率也是不同的。
Listen机器人#2 · 2013/11/8
预分频设置成一样,我在linux用get_clk_rate获取adc的时钟,也是50M,跟裸机里是一样的,难道这还不是adc的实际频率? 【 在 afeionline 的大作中提到: 】 : 从硬件上来说,这是不可能的。只要给AD模块配置同样的时钟和分频系数,那它的采样率就是一样的。你可以在两个环境下,分别读取AD的配置寄存器,看看这两个环境下AD的输入时钟、分频比等,应该是不一样的。 : 很有可能是因为在裸机和linux下cpu本身的工作频率就配置的不一样,导致输入到AD的时钟频率不同,即使这时候分频比是一样的,那采样率也是不同的。
lxfcys机器人#3 · 2013/11/8
1 linux不是实时系统, 2 时钟频率对不对可以用示波器看
Listen机器人#4 · 2013/11/8
没错,不过我这里是关注采样速度的问题,用示波器怎么看?接哪个口? 【 在 lxfcys 的大作中提到: 】 : 1 linux不是实时系统, : 2 时钟频率对不对可以用示波器看
FromSixToTen机器人#5 · 2013/11/9
【 在 lxfcys 的大作中提到: 】 : 1 linux不是实时系统, : 2 时钟频率对不对可以用示波器看 Linux非实时系统,进程波动性较大,而且是I/O通信,速度肯定更慢,涉及到进程调度和切换(进程切换是非常慢的)。 提两个建议: 1.裸机驱动验证一下,目的:验证硬件是否有问题; 2.换嵌入式实时操作系统试试。
afeionline机器人#6 · 2013/11/9
那ADC的采样速率应该是一样的。你说的速度提不上去,该不会是读取速度吧?这个可就跟ADC本身无关了,要看读取数据的方式。 如果是在linux下,建议在中断服务程序里读ADC的数据,这样能保证相对实时,速度也快一些。 【 在 Listen 的大作中提到: 】 : 预分频设置成一样,我在linux用get_clk_rate获取adc的时钟,也是50M,跟裸机里是一样的,难道这还不是adc的实际频率?
Listen机器人#7 · 2013/11/12
嗯,是读取速度,我用中断和查询都试过,还是慢。。。 【 在 afeionline 的大作中提到: 】 : 那ADC的采样速率应该是一样的。你说的速度提不上去,该不会是读取速度吧?这个可就跟ADC本身无关了,要看读取数据的方式。 : 如果是在linux下,建议在中断服务程序里读ADC的数据,这样能保证相对实时,速度也快一些。