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)

相关推荐

  • 高抬腿的正确做法,胖子跑步上气不接下气怎么解决

    技术高抬腿的正确做法,胖子跑步上气不接下气怎么解决答:首先你要排除有没有心肺功能疾病高抬腿的正确做法?如果没有这方面的疾病的话,就在跑步的时候循序渐进,每天坚持跑,先跑个500米,然后加码,逐渐加上去,让你的身体逐渐适应

    生活 2021年10月25日
  • 如何解决红杉离线备份的相关问题

    技术Sequoiadb backupOffline相关问题怎么解决这篇文章主要介绍“Sequoiadb backupOffline相关问题怎么解决”,在日常操作中,相信很多人在Sequoiadb backupOfflin

    攻略 2021年12月22日
  • springcloud判断微服务循环调用(springmessaging)

    技术如何进行spring-messaging远程代码执行漏洞分析这篇文章给大家介绍如何进行spring-messaging远程代码执行漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00

    攻略 2021年12月20日
  • 2021CCPC广州站C. Necklace

    技术2021CCPC广州站C. Necklace 2021CCPC广州站C. Necklace题目:C. Necklace
    题意:
    https://codeforces.com/gym/103415/p

    礼包 2021年11月20日
  • 数据库数据文件如何进行分区转移

    技术数据库数据文件如何进行分区转移数据库数据文件如何进行分区转移,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。由于之前同事没有对磁盘分区做规

    攻略 2021年11月29日
  • 用innobackupex对于全量备份恢复mysql出错的示例分析

    技术用innobackupex对于全量备份恢复mysql出错的示例分析这篇文章给大家分享的是有关用innobackupex对于全量备份恢复mysql出错的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随

    攻略 2021年11月6日