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)

相关推荐

  • Disruptor的共享与缓存是怎样的

    技术Disruptor的共享与缓存是怎样的这篇文章将为大家详细讲解有关Disruptor的共享与缓存是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是共享下图是

    攻略 2021年10月21日
  • 第二篇Scrum冲刺博客

    技术第二篇Scrum冲刺博客 第二篇Scrum冲刺博客1
    1.1每天举行站立式会议
    由于我们是不同班而且有男生和女生,所以大家都很难抽出时间参加站立式会议,所以我们改为微信会议1.2昨天已完成工作成员

    礼包 2021年11月24日
  • 沃尔沃是哪国车,沃尔沃汽车原产地是哪个国家

    技术沃尔沃是哪国车,沃尔沃汽车原产地是哪个国家沃尔沃,英文名为Volvo,原为瑞典著名汽车品牌,又译为富豪,该品牌汽车安全性能很高沃尔沃是哪国车。沃尔沃汽车公司原是北欧最大的汽车企业,也曾经是瑞典最大的工业企业集团,其中

    生活 2021年10月21日
  • iOS ScrollView嵌套tableView联动滚动的思路分析

    技术iOS ScrollView嵌套tableView联动滚动的思路分析这篇文章主要讲解了“iOS ScrollView嵌套tableView联动滚动的思路分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小

    攻略 2021年11月4日
  • 苹果日历怎么添加生日,正点日历怎么添加好友生日

    技术苹果日历怎么添加生日,正点日历怎么添加好友生日在正点日历app中,不仅包含有我们日常使用的阳历苹果日历怎么添加生日、农历日历查询功能,并且我们还能够设置每位重要好友的生日,对于一些新手用户来说,刚刚使用正点日历却不知

    生活 2021年10月20日
  • java如何使用java swing(swing 怎么启动一个后台线程)

    技术如何解析Swing线程的内容这篇文章将为大家详细讲解有关如何解析Swing线程的内容,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一. 事件1.事件来源:本地系统,应

    攻略 2021年12月18日