[技术问答] 【MA35D1】Eadc如何使用Buffer data access

[复制链接]
2710|18
 楼主| 两只袜子 发表于 2023-10-23 09:57 | 显示全部楼层 |阅读模式
Eadc如何使用Buffer data access
riplay 发表于 2023-10-23 13:53 | 显示全部楼层
以通道5为例
# cd /sys/bus/iio/devices/
# echo 1 > iio_sysfs_trigger/add_trigger
# cat trigger0/name > iio:device1/trigger/current_trigger
# echo 100 > iio:device1/buffer/length
# echo 1 > iio:device1/scan_elements/in_voltage5_en
# echo 1 > iio:device1/buffer/enable
# hexdump -v -e '"iio0:" 100/2 "%2x " "\n"' /dev/iio\:device1
iio0:fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff fff
^C
# echo 0 > iio:device1/buffer/enable
# echo 1 > iio:device1/buffer/enable
# hexdump -v -e '"iio0:" 100/2 "%2x " "\n"' /dev/iio\:device1
iio0:627 62b 626 62b 628 62a 627 62c 627 62a 627 62a 629 62b 627 62a 627 62b 627 62b 627 62b 627 62b 627 62b 627 62b 627 62b 626 62b 627 62b 626 62b 628 62b 627 62c 627 62a 626 62b 626 62b 626 62a 627 62b 627 62a 627 62a 627 62a 627 62a 627 62a 628 62a 627 62a 628 62a 627 62a 627 62b 627 62b 627 62c 627 62b 625 62a 627 62c 627 62a 626 62c 626 62b 627 62b 627 62b 627 62a 627 62a 626 62a 627 62a 627 62a


tpgf 发表于 2023-11-7 09:22 | 显示全部楼层
EADC和咱们常说的ADC是一样的吗?
观海 发表于 2023-11-7 10:22 | 显示全部楼层
riplay 发表于 2023-10-23 13:53
以通道5为例
# cd /sys/bus/iio/devices/
# echo 1 > iio_sysfs_trigger/add_trigger

这些代码是哪个文件的内容啊
wowu 发表于 2023-11-7 20:57 | 显示全部楼层
我把二楼的代码复制到keil里边也没有格式啊
guanjiaer 发表于 2023-11-7 21:51 | 显示全部楼层
使用c语言是如何实现的呢 在代码里边
八层楼 发表于 2023-11-7 22:22 | 显示全部楼层
二楼的代码使用的是什么编程语言啊
晓伍 发表于 2023-11-7 22:51 | 显示全部楼层
先看看手册是不是多个通道公用的一个缓存啊
yangjiaxu 发表于 2023-12-8 09:04 | 显示全部楼层
八层楼 发表于 2023-11-7 22:22
二楼的代码使用的是什么编程语言啊

命令行,cmd命令这种
zhizia4f 发表于 2023-12-17 22:59 | 显示全部楼层
话说,EADC是啥东西?
 楼主| 两只袜子 发表于 2023-12-18 14:50 | 显示全部楼层
以下是一个简单的示例,演示如何使用缓冲区数据访问ADC的转换结果:

c
#include <stdio.h>  
#include <stdint.h>  
  
#define BUFFER_SIZE 100  // 缓冲区大小  
  
uint16_t adc_buffer[BUFFER_SIZE];  // 定义ADC缓冲区  
uint16_t buffer_index = 0;  // 缓冲区索引  
  
// ADC转换结果函数  
uint16_t adc_read() {  
    // 在这里实现ADC的读取操作  
    // 假设每次读取的结果是16位整数  
    return 0;  // 示例值,实际值取决于ADC的读取操作  
}  
  
int main() {  
    while (1) {  
        // 从ADC读取数据并存储到缓冲区中  
        adc_buffer[buffer_index] = adc_read();  
        buffer_index++;  
        if (buffer_index >= BUFFER_SIZE) {  
            buffer_index = 0;  // 循环使用缓冲区  
        }  
  
        // 访问缓冲区中的数据并处理  
        for (int i = 0; i < BUFFER_SIZE; i++) {  
            uint16_t data = adc_buffer[i];  
            // 在这里处理数据,例如打印数据到控制台或进行其他操作  
            printf("ADC data: %d\n", data);  
        }  
    }  
    return 0;  
}
q1ngt12 发表于 2023-12-18 14:55 | 显示全部楼层
需要初始化EADC的Buffer。配置个buffer就好了
cen9ce 发表于 2023-12-19 12:05 | 显示全部楼层
要想使用EADC的话,需要配置EADC的采样率、参考电压、输入通道等参数。
ex7s4 发表于 2023-12-19 14:21 | 显示全部楼层
启动EADC开始采样。可以使用软件触发或外部触发来启动采样。
g0d5xs 发表于 2023-12-19 15:56 | 显示全部楼层
当EADC完成一次采样后,会触发中断。在中断处理程序中,可以读取Buffer中的数据。
kaif2n9j 发表于 2023-12-19 16:33 | 显示全部楼层
我觉得这应该在例程里都应该有的吧
lix1yr 发表于 2023-12-20 12:21 | 显示全部楼层
没玩过EADC,用普通的ADC不好么
suw12q 发表于 2023-12-21 11:34 | 显示全部楼层
这EADC与ADC有啥不一样,其 优势是啥?
zhizia4f 发表于 2023-12-23 16:33 | 显示全部楼层
使用Buffer数据访问可以提高EADC的效率,减少数据丢失的可能性。但是,需要根据具体的硬件平台和开发环境
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8121

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部