Q群:
电话:
邮箱:
地址:
函数 | 说明 |
---|---|
os_device_find() | 根据DAC设备名称寻找设备并获取设备指针 |
os_device_open() | 打开设备 |
os_device_control() | 控制DAC设备 |
os_device_write() | DAC设备输出电压 |
os_device_close() | 关闭设备 |
该函数根据DAC设备名查找对应的DAC设备,函数原型如下:
os_device_t *os_device_find(const char *name);
参数 | 说明 |
---|---|
name | DAC设备名称 |
返回 | 说明 |
设备指针 | 查找到对应设备将返回相应的设备指针 |
OS_NULL | 没有找到设备 |
该函数用于开启DAC设备,函数原型如下:
os_err_t os_device_open(os_device_t *dev, os_uint16_t oflag);
参数 | 说明 |
---|---|
dev | 设备名称 |
oflag | 打开设备模式标志,以只写模式打开,即OS_DEVICE_OFLAG_WRONLY |
返回 | 说明 |
OS_EOK | 设备打开成功 |
其他错误码 | 设备打开失败 |
该函数用于控制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 接口 |
其他错误码 | 执行失败 |
该函数用于设置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 | 输出成功 |
其他值 | 输出失败 |
该函数用于关闭设备,函数原型如下:
os_err_t os_device_close(os_device_t *dev);
参数 | 说明 |
---|---|
dev | 设备指针 |
返回 | 说明 |
OS_EOK | 关闭设备成功 |
OS_ERROR | 设备已经完全关闭,不能重复关闭设备 |
其他错误码 | 关闭设备失败 |
本例程控制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 />