RV1103 LuckFox Pico Plus 默认的ADC采样频率是多少?

2024-04-03 09:50:21 提问

RV1103 LuckFox Pico Plus 默认的ADC采样频率是多少,

如果想修改的话怎么修改呢?

RV1103 LuckFox Pico Plus ADC采样频率
我来答
浏览 1290 次
已有11个回答
斑梨游客163f5
回答时间:
2024-04-03 10:08:55

1MS/s

点赞0

举报

斑梨游客443fa
回答时间:
2024-04-03 10:16:46

意思是它加上系统上电以后默认是1M的频率采样吗,所以in0_raw_file里的信息就是以1us更新一次吗,如果想改成50KHz采样率该怎么办呢

点赞0

举报

斑梨游客163f5
回答时间:
2024-04-03 10:37:52

你的采样程序是如何写的 ?

具体的方法是 ?

点赞0

举报

斑梨游客163f5
回答时间:
2024-04-03 10:42:17

我自己写了一段,现在是每次读取前都要把文件指针移回开头处,如果每次读取完数据就移回来那么从就无法实现20us读取一次。另外附上全部程序请您帮我看一下

voidread_ADC_values()
{   
// fseek(scale_file, 0, SEEK_SET);
fseek(in0_raw_file, 0, SEEK_SET);
while(1){
sem_wait(&semaphore2);
//fseek(scale_file, 0, SEEK_SET);
flag+=2;
highbyte1++;
lowbyte1++;
if (scale_file&&in0_raw_file)
        {

fseek(in0_raw_file, 0, SEEK_SET);
fscanf(in0_raw_file, "%hu", &buffer_raw);
//rewind(in0_raw_file);
//获取高八位和低八位
pthread_mutex_lock(&high_byte_mutex);
high_byte= (buffer_raw>>8) &0xFF;
pthread_mutex_unlock(&high_byte_mutex);
pthread_mutex_lock(&low_byte_mutex);
low_byte=buffer_raw&0xFF;
pthread_mutex_unlock(&low_byte_mutex);
if(flag_2%2==0)
            {
pthread_mutex_lock(&flag_mutex);
buffer1[flag-2]=high_byte;
buffer1[flag-1]=low_byte;
pthread_mutex_unlock(&flag_mutex);
            }else{
pthread_mutex_lock(&flag_mutex);
buffer2[flag-2]=high_byte;
buffer2[flag-1]=low_byte;    
pthread_mutex_unlock(&flag_mutex);   
            }
        }
if(flag==BUFFER_SIZE)
        {
pthread_mutex_lock(&flag_mutex);
flag=0;
pthread_mutex_unlock(&flag_mutex);
sem_post(&semaphore);
highbyte1=0;
lowbyte1=0;
flag_2++;
        }
if(flag>BUFFER_SIZE)
        {
printf("out");
        }
    }
}


点赞0

举报

斑梨用户8
回答时间:
2024-04-03 10:44:12

你这个程序当前的速度是多少 ?

点赞0

举报

斑梨用户8
回答时间:
2024-04-03 10:46:49

尝试在设备树中修改

我还没试过 你自己试试

点赞0

举报

斑梨游客bc2b7
回答时间:
2024-04-03 10:47:33

当前没有修改ADC的驱动,所以ADC是以默认频率采样,但是我是每20us访问一次in0_raw_file文件

#defineTIMER_INTERVAL_US20


点赞0

举报

斑梨游客bc2b7
回答时间:
2024-04-03 11:58:13

十分感谢,现在还有一个问题就是在程序中每次读取ADC的数据都要把文件指针移向in0_raw_file的开头,即例程中的

fseek(in0_raw_file, 0, SEEK_SET);

这句话,这个文件中看来好像是每次adc采样后都会更新数据,因此每次只有一个数据。但是每次都移动文件指针到文件开头会导致读取速度达不到20us一次的要求,这个怎么办呢,是不是如果坚持使用片上AD的话就只能直接改ADC驱动了

点赞0

举报

斑梨用户8
回答时间:
2024-04-03 12:07:36

这个没有办法吧 这是文件系统的问题

常规的linux不是实时系统

没有这么高的实时性

点赞0

举报

斑梨游客bc2b7
回答时间:
2024-04-03 17:02:22

现在打算通过修改ADC的驱动来改成连续采样模式,采样700次打开一次文件读取数据来解决之前速度不够的问题,在rockchip_saradc.c文件中有如下的结构体包括了这些芯片,但是没有RV1103的,请问一下RV1103跟RV1106是用的同一个驱动吗?

static const struct of_device_id rockchip_saradc_match[] = {
    {
        .compatible = "rockchip,saradc",
        .data = &saradc_data,
    }, {
        .compatible = "rockchip,rk3066-tsadc",
        .data = &rk3066_tsadc_data,
    }, {
        .compatible = "rockchip,rk3399-saradc",
        .data = &rk3399_saradc_data,
    }, {
        .compatible = "rockchip,rk3528-saradc",
        .data = &rk3528_saradc_data,
    }, {
        .compatible = "rockchip,rk3568-saradc",
        .data = &rk3568_saradc_data,
    }, {
        .compatible = "rockchip,rk3588-saradc",
        .data = &rk3588_saradc_data,
    }, {
        .compatible = "rockchip,rv1106-saradc",
        .data = &rv1106_saradc_data,
    },
    {},
};

P.S之前的问题描述有误,之前是因为没有使用fseek函数导致fscanf失败速度才能上去,后来看了fscanf的返回值发现返回的一直是“-1”end of file

点赞0

举报

斑梨用户8
回答时间:
2024-04-03 17:15:46

同一个驱动

点赞0

举报