查看: 1939|回复: 0

[评测分享] 【米尔-STM32MP135入门级开发板测评】米尔-STM32MP135开发板ADC...

[复制链接]
  • TA的每日心情
    开心
    2024-10-13 19:59
  • 签到天数: 715 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2023-10-15 17:33:33 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 satoll 于 2023-10-17 16:14 编辑

    理解一下135的ADC。
    STM32MP135 ADC使用的步骤如下:
    初始化ADC通道,配置ADC的采样规则。
    配置DMA传输参数,包括传输通道、数据存储地址、传输数据块大小、是否启用循环传输等。
    配置定时器触发模式,包括定时器选择、触发模式等参数。
    启动ADC和DMA传输,同时开启定时器中断。
    在定时器中断服务程序中,读取ADC的值并处理数据。
    处理完成后,关闭ADC和DMA传输,同时关闭定时器中断。

    MYD-YF13X 是一个开发板,提供了两路模拟数字转换器(ADC)通道。默认情况下,每个通道都提供一个电压值。ADC 的测试是通过文件系统 sysfs 接口来实现的。下面以 ADC 通道 2 和通道 8 为例进行说明。

    首先,我们需要找到 ADC 对应的设备文件,通常在 /dev 目录下。可以使用以下命令来查看设备文件列表:
    ls /dev/ad*
    这会列出所有 ADC 设备文件,其中 ad 表示 ADC,后面的数字表示通道号。例如,/dev/ad0 表示 ADC 通道 0,/dev/ad2 表示 ADC 通道 2,以此类推。

    接下来,我们可以使用 sysfs 接口来读取 ADC 的值。在 Linux 中,ADC 的值可以通过以下路径读取:

    /sys/class/hwmon/hwmon*/in*
    其中,hwmon* 表示 ADC 设备文件,in 表示输入电压。例如,要读取 ADC 通道 2 的电压值,可以执行以下命令:
    cat /sys/class/hwmon/hwmon2/in0_input
    类似地,要读取 ADC 通道 8 的电压值,可以执行以下命令:
    cat /sys/class/hwmon/hwmon3/in8_input
    上述命令将返回一个十进制数值,表示 ADC 通道的电压值。

    如果想要测试 ADC 的功能是否正常,可以使用以下命令将 ADC 值输出到控制台:
    echo 1 > /sys/class/hwmon/hwmon*/in*/uevent
    这将强制 ADC 进行一次转换,并将结果读入到上述命令指定的路径中。注意,上面的命令中的 hwmon* 表示 ADC 设备文件,而 in* 表示输入电压的属性文件。
    上面是在百度里面查的135的与ADC有关的使用步骤,我这边只参照了部分。
    下面正式开始:
    1、ADC具体操作步骤
    1697361561897.jpg
    2.ADC板载位置
    1697361978506.jpg
    3、输出结果与操作步骤
    企业微信截图_16973607622074.png
    操作步骤与命令
    企业微信截图_1697360781352.png
    4、ADC代码
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <sys/types.h>
    4. #include <sys/stat.h>
    5. #include <fcntl.h>
    6. #include <dirent.h>
    7. #include <unistd.h>
    8. #include <sys/ioctl.h>
    9. #include <errno.h>
    10. #include <unistd.h>

    11. void main()
    12. {
    13.         printf("start!\n");
    14.         
    15. #if 1
    16.         const char* fileName="/sys/bus/iio/devices/iio:device0/in_voltage2_raw";
    17. #else
    18.         const char* fileName="/home/fang/MYIR/Dome/2_adc/test.txt";
    19. #endif
    20.         while(1)
    21.         {
    22.                 int fd=open(fileName,O_RDONLY);
    23.                 if(fd<0)
    24.                 {
    25.                         printf("open file fial!\n");
    26.                 }
    27.                 char buf[128];
    28.                 while(read(fd,buf,sizeof(buf)-1)>0)
    29.                 {
    30.                         int val=atoi(buf);
    31.                         float VolVal=val*1.0/4096*3.3;        //=k*val*1.0/4096+b;
    32.                         printf("VolVal:%.2fV\n",VolVal);

    33.                         //printf("%s,%d\n",buf,val);
    34.                 }
    35.                 close(fd);
    36.                 sleep(1);
    37.         }
    38.         printf("ok\n");
    39.         
    40. }
    复制代码
    编译代码,和用SCP发送可执行程序到板子
    企业微信截图_16973608326470.png

    5、输出视频


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 05:57 , Processed in 0.115772 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.