Linux字符设备控制怎么实现

技术Linux字符设备控制怎么实现本篇内容介绍了“Linux字符设备控制怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

本文介绍了“如何实现对Linux字符设备的控制”的知识。很多人在实际案例的操作中会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

与led灯类似,蜂鸣器的设备节点也在/dev目录下,如下图所示。

Linux字符设备控制怎么实现

蜂鸣器的硬件与led灯类似,如下图所示。

Linux字符设备控制怎么实现

如上图所示。

示意图很容易理解。如果网络电机脉宽调制处于高电平,L9014将打开,蜂鸣器将鸣响。如果网络电机脉宽调制处于低电平,L9014将关闭,蜂鸣器不会鸣响。

操作类似于小型led灯。蜂鸣器测试例程

写一个简单的蜂鸣器测试c文件来测试蜂鸣器。

首先添加头文件,如下图所示。下面添加了几个常用的新库文件。当编写代码时,

为了方便,可以直接全部添加。

Linux字符设备控制怎么实现

然后主要功能如下图所示。

Linux字符设备控制怎么实现

如上面的代码所示。因为只有一个IO,底层不判断第三个参数,所以无效。

第16-19行,参数argv[1]有一个简单的判断,命令只能是0或1。

第21-24行,打开功能打开蜂鸣器装置节点。

第26行,使用ioctl功能操作蜂鸣器。

第27行,使用关闭功能关闭设备节点。

运行编译测试

在Ubuntu系统下,如下图所示,输入上一个实验创建的目录“/home/linuxsystemcode/char control”,复制源码buzzertest.c,如下图所示。

Linux字符设备控制怎么实现

使用命令“arm-none-Linux-GNUEABI-GCC-O Buzzer test Buzzer test . c-static”编译蜂鸣器测试文件。如下图所示,可以看到蜂鸣器测试可执行文件是使用命令“ls”生成的。

Linux字符设备控制怎么实现

这里介绍一下u盘上复制代码的方法,也可以编译成文件系统。

将编译后的可执行程序buzzertest复制到u盘,启动开发板,插入u盘,加载u盘,运行程序如下。

使用参数1和0,蜂鸣器将鸣响。第二个参数实际上不起作用。

Linux字符设备控制怎么实现

如下图所示,使用参数0和0,蜂鸣器将停止鸣响。

Linux字符设备控制怎么实现

17.4字符模数转换器模数转换

与led灯类似,数模转换的设备节点也在/dev目录中,如下图所示。

Linux字符设备控制怎么实现

模数转换的硬件部分如下图所示。

Linux字符设备控制怎么实现

如上图所示。

XadcAIN0网络可以读取当前输入电压。当滑动变阻器R移动时,电阻R12在1和2之间变化。滑动变阻器的最大电阻为

R13,然后电压 Vadc=R12*VDD1V8_EXT/R13
上面公式中 Vadc 可以通过 4412 读取出来,VDD1V8 和 R13 已知,那么就很容易求出 R12 的电阻。如下图所示,在 4412datasheet 中 ADC 章节中有真实的电阻和电压曲线图。
Linux字符设备控制怎么实现
这里将数值做一个简单的换算,
1.8V 对应的是 10K 欧姆,对应的寄存器数值为 0xfff;
0V 对应的是 0 欧姆,对应的寄存器数值为 0x0。
这样做一个简单公式,将读取的数值 r 转化为电阻值 R。
R = r*10000/0xfff,即 R = r*10000/4095。
这个小公式在后面的代码中将会使用到。
模数转换例程
编写简单的 ADC.c 文件测试 adc 的驱动。首先添加头文件,如下图所示。
Linux字符设备控制怎么实现
然后 main 函数如下图所示。
Linux字符设备控制怎么实现
如上图代码所示。
第 14 行,设备节点为 char *adc = "/dev/adc"。
第 21 行,打开设备节点文件。
第 26 行,使用 read 函数,将读取数字赋予 buffer。
第 30 和 31 行,做个简单地换算,将读取的数值转化为电阻值。
编译运行测试
在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/charcontrol/”将源
码 ADC.c 拷贝进去,如下图所示。
Linux字符设备控制怎么实现
使用命令“arm-none-linux-gnueabi-gcc -o ADC ADC.c -static”编译 ADC 文件,如下图所示,使用命令“ls”可以看到生成了 ADC 可执行文件。
Linux字符设备控制怎么实现
这里介绍 U 盘拷贝代码的方法,也可以编译进文件系统,具体方法参考 10.3.5 小节。将编译成的可执行文件 open,拷贝到 U 盘,启动开发板,插入 U 盘,加载 U 盘,运行程序。
如下图所示,使用命令“./mnt/udisk/ADC”即可检测当前电阻值,中间的大段打印参数是多次打印寄存器的数值,在驱动实验中再去介绍。
Linux字符设备控制怎么实现
调整滑动电阻器之后,再次使用测试程序,如下图所示,输出数值会有变化。
Linux字符设备控制怎么实现
滑动变阻器向顺时针旋转,阻值会减小,最小为 0;
滑动变阻器向逆时针旋转,阻值会增大,最大为 10K。
Linux字符设备控制怎么实现

“Linux字符设备控制怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/113130.html

(0)

相关推荐

  • 有机花菜怎么做好吃又简单,酱汁蒜香有机花菜是怎么做的

    技术有机花菜怎么做好吃又简单,酱汁蒜香有机花菜是怎么做的前言最近几年在菜市场上出现了一种长的特别疏松的花菜,卖菜的老板都说那得有机花菜,它们生长的环境比较纯净,营养价值和口感都比普能的花菜要好一些有机花菜怎么做好吃又简单

    生活 2021年10月29日
  • 蛋糕简笔画图片大全,幼儿简单手工制作怎么做\’

    技术蛋糕简笔画图片大全,幼儿简单手工制作怎么做\我是爱做手工的Nina,很高兴来回答幼儿简单手工制作怎么做的话题蛋糕简笔画图片大全?我觉得幼儿手工要简单又要有创意,大家都知道孩子在幼儿期专注力不是很高,能吸引孩子专注力的

    生活 2021年10月27日
  • message可数吗,news与message的区别

    技术message可数吗,news与message的区别message, newsmessage可数吗。这两个名词都有“消息”的意思,但它们的用法不一样。
    message是个可数名词,指口头、书面、无线电等多种渠道传送的

    生活 2021年10月21日
  • 弹簧的劲度系数,弹簧被截断后的劲度系数

    技术弹簧的劲度系数,弹簧被截断后的劲度系数当然会变弹簧的劲度系数!以截一半为例,设原来劲度系数为k
    如果把两个部分首尾相连(串联)再在下面一个的末端挂上质量为m的物体,那么两弹簧总伸长是mg/k,因此每个部分伸长mg/2

    生活 2021年10月28日
  • 好用的开源JavaScript图表库有哪些

    技术好用的开源JavaScript图表库有哪些这篇文章主要介绍好用的开源JavaScript图表库有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 Chart.jsChart.js 是一个

    攻略 2021年10月30日
  • Alibaba Sentinel LeapArray源码分析

    技术Alibaba Sentinel LeapArray源码分析这篇文章主要介绍“Alibaba Sentinel LeapArray源码分析”,在日常操作中,相信很多人在Alibaba Sentinel LeapArr

    攻略 2021年11月17日