九州下载 - 系统安卓苹果手机游戏推荐下载网站!

当前位置:九州下载 > 建站问答 >

linux i2c设备驱动

时间:2022-12-23 16:56编辑:九州下载来源:www.wzjsgs.com

linux

如何写驱动程序要学哪些?

驱动还好吧,我之前一直做通信上层软件的(Linux平台),后来转到写嵌入式,一开始不大适应,主要是思想没有转变,比如读一个IO口的值,做上层应用时我直接调API就ok了,但是做驱动是要读多次,做消抖,防止硬件干扰导致的读错误的。因为一直没有概念,在某个产品出货2w套时,问题出现了,给我留下了深刻的印象。除此之外驱动没有什么难写的,除非你写linux和windows驱动,需要学习相关知识外,假如是普通MCU,直接写就ok了,最好买个逻辑分析仪,300块左右就可以了,可显著提高调试效率。

觉得难可能还是MCU没有用熟悉,另外C语言用得还不熟练。很多硬件背景的工程师喜欢用delay来延时,这种是不好的习惯,原因也是C语言用的还不熟练吧。自己调试一下单线或者软件I2C接口,应该很容易就有感觉了。另外要有时间片的概念,不要独占CPU太长时间,可以通过设计中间状态来让出CPU时间,让其他程序有执行机会,下次轮到自己的驱动代码执行时再紧接上次运行。这个是很重要的一个点,由于很多人没有这个概念,有可能出现驱动复杂的情况下占用CPU时间过多(因为用delay一条线运行下来),反过来影响到现有的业务处理过程(比如导致时间相关的功能不准了)。

还有,你可以抄Arduino的相关器件的驱动,网上有很多,常见的器件基本都能找到。练手学习的话建议从手撸软件I2C协议开始,这个写好了其他驱动应该都不大难了。基本就是看懂datasheet,写个状态机的事情。

嵌入式的驱动分两种层次,一种是要你直接造出对于的时序波形,另外一种是基于SIP、I2C、单线等接口进行操作。第一种是最底层的,第二种是对通信进行了封装。万变不离其宗,掌握好状态机实现方法,加上并行思想应该就可以很好地写出驱动了。这里的嵌入式驱动基本是指不跑嵌入式操作系统的驱动,如果是在操作系统下写驱动,那还要学习操作系统相关的知识(比如linux是将设备抽象成文件进行读写的)。

想到那写到那,大概是这么些意思吧。

PIC是那的集团?

PIC中档产品是Microchip(美国微芯科技公司)近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增加了中断功能,指令周期可达到200ns,带A/D,内部E2PROM数据存储器,双时钟工作,比较输出,捕捉输入,PWM输出,I2C和SPI接口,异步串行通讯(USART),模拟电压比较器及LCD驱动等等,其封装从8脚到68脚,可用于高、中、低档的电子产品设计中,价格适中,广泛应用在各类电子产品中。

arduinoio口不够用怎么办?

不够的可能是pwm,这就需要扩展板了。更不够的就需要i2c转gpio了。比如驱动一个led矩阵,io口明显是不够的,因此需要一个i2c的驱动板,如果没有,则可以自己用其他的arduino去扩展。

i2c hid是什么驱动?

I2C是一个总线,一般是做人机交互的,用于简单的控制输入输出。

HID一般指的是usb的人机交互设备,如我们的键盘,鼠标、触摸板。

这里留一个关于HID规范的介绍,https://www.bytekits.com/hid/ 希望对你有所帮助

嵌入式工程师与后端开发哪个难

嵌入式工程师与后端开发相比还是嵌入式工程师比较难。嵌入式驱动工程师:编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如I2C协议)、系统调度、信号量、锁机制等等,开发难度最大。

该类开发者一般是软硬件综合型人才,一般的嵌入式驱动工程师指LINUX上的驱动开发工程师,需要精通Linux驱动框架(platform框架、input子系统框架等),结合芯片本身去编写驱动,驱动的好坏很大程度上决定一个产品的好坏。

业界对驱动人才的定义是三年才算入门,可见此门槛之高。

相关文章