全部文档
OneOS简介 硬件支持 编译构造工具 API参考文档 高级语言 用户编程手册 应用笔记 FAQ

DAC设备


API 列表

函数 说明
os_device_find() 根据DAC设备名称寻找设备并获取设备指针
os_device_open() 打开设备
os_device_control() 控制DAC设备
os_device_write() DAC设备输出电压

os_device_find

该函数根据DAC设备名查找对应的DAC设备,函数原型如下:

os_device_t *os_device_find(const char *name);
参数 说明
name DAC设备名称
返回 说明
设备指针 查找到对应设备将返回相应的设备指针
OS_NULL 没有找到设备

os_device_open

该函数用于开启DAC设备,函数原型如下:

os_err_t os_device_open(os_device_t *dev, os_uint16_t oflag);
参数 说明
dev 设备名称
oflag 打开设备模式标志,以只写模式打开,即OS_DEVICE_OFLAG_WRONLY
返回 说明
OS_EOK 设备打开成功
其他错误码 设备打开失败

os_device_control

该函数用于控制DAC设备通道开关,函数原型如下:

os_err_t os_device_control(os_device_t *dev, int cmd, void *arg);
参数 说明
dev DAC设备指针
cmd 命令控制字,可取值:OS_DAC_CMD_ENABLE/OS_DAC_CMD_DISABLE
arg 控制的参数,可取类型: channel-通道号
返回 说明
OS_EOK 函数执行成功
OS_ENOSYS 执行失败,设备不支持 control 接口
其他错误码 执行失败

os_device_write

该函数用于设置DAC通道输出值,函数原型如下:

os_size_t os_device_write(os_device_t *dev, os_off_t pos, const void *buffer, os_size_t size);
参数 说明
dev DAC设备指针
pos DAC通道
buffer DAC数据缓存指针
size 数据大小,该参数未使用,给0
返回 说明
0 输出成功
其他值 输出失败

使用示例

DAC设备使用示例

本例程控制DAC输出指定电压值,通过ADC进行采样,观察DAC的电压输出。

#include <drv_cfg.h>
#include <shell.h>

static int dac(int argc, char **argv)
{
    char *dev_name;
    int   channel;
    int   voltage;

    os_device_t *dac;

    if (argc != 4)
    {
        os_kprintf("usage: dac <dev> <channel> <voltage(mV)>\r\n");
        os_kprintf("       dac dac 1 1500\r\n");
        return -1;
    }

    dev_name = argv[1];
    channel  = strtol(argv[2], OS_NULL, 0);
    voltage  = strtol(argv[3], OS_NULL, 0);

    dac = os_device_find(dev_name);
    if (dac == OS_NULL)
    {
        os_kprintf("invalid adc device %s.\r\n", dev_name);
        return -2;
    }

    os_kprintf("dac device %s, %d, %d.\r\n", dev_name, channel, voltage);

    os_device_open(dac, OS_DEVICE_OFLAG_WRONLY);
    os_device_control(dac, OS_DAC_CMD_ENABLE, (void *)channel);
    os_device_write(dac, channel, &voltage, sizeof(voltage));
    return 0;
}

SH_CMD_EXPORT(dac, dac, "dac_output");

运行结果如下:

sh />dac dac 1 700  
dac device dac, 1, 700.
sh />
sh />adc_sample read 0
adc channle: 0 voltage value: 722
sh />

results matching ""

    No results matching ""

    返回顶部