时间:2022-12-23 16:56编辑:九州下载来源:www.wzjsgs.com
驱动还好吧,我之前一直做通信上层软件的(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中档产品是Microchip(美国微芯科技公司)近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增加了中断功能,指令周期可达到200ns,带A/D,内部E2PROM数据存储器,双时钟工作,比较输出,捕捉输入,PWM输出,I2C和SPI接口,异步串行通讯(USART),模拟电压比较器及LCD驱动等等,其封装从8脚到68脚,可用于高、中、低档的电子产品设计中,价格适中,广泛应用在各类电子产品中。
不够的可能是pwm,这就需要扩展板了。更不够的就需要i2c转gpio了。比如驱动一个led矩阵,io口明显是不够的,因此需要一个i2c的驱动板,如果没有,则可以自己用其他的arduino去扩展。
I2C是一个总线,一般是做人机交互的,用于简单的控制输入输出。
HID一般指的是usb的人机交互设备,如我们的键盘,鼠标、触摸板。
这里留一个关于HID规范的介绍,https://www.bytekits.com/hid/ 希望对你有所帮助
嵌入式工程师与后端开发相比还是嵌入式工程师比较难。嵌入式驱动工程师:编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如I2C协议)、系统调度、信号量、锁机制等等,开发难度最大。
该类开发者一般是软硬件综合型人才,一般的嵌入式驱动工程师指LINUX上的驱动开发工程师,需要精通Linux驱动框架(platform框架、input子系统框架等),结合芯片本身去编写驱动,驱动的好坏很大程度上决定一个产品的好坏。
业界对驱动人才的定义是三年才算入门,可见此门槛之高。
专业数据统计,95%的用户会因为[不安全]提示而放弃访问,从而给网站造成用户流失。问题就出在不安全的HTTP 明文传输协议上。2018年2月初,谷歌旗下Chrome浏览器宣布“封杀”HTTP协议的网站,并将这些网站标示为“Not Secure”(不安全)。
2023-03-03 21:141、do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。2、循环体内的代码至少执行一次。do-while的语法如下:do{ statement }while(expression)下面是一个例子:letxhs=0 do{ xhs+=2 }while(xhs<10)在上面的
2023-02-26 12:191、while语句是一种先测试循环语句,即先检测退出条件,再执行循环体内的代码。2、while循环体内的代码有可能不会执行。下面是 while 循环的语法:while(expression){ statement }实例leti=0 while(i<10){ i+=2 }在这个例子中,变量 xhs 从 0 开
2023-02-26 12:181、for语句也是先测试语句,只不过增加了进入循环之前的初始化代码.以及循环执行后要执行的表达式(loop-expression),语法如下:for(initialization;expression;loop-expression){ statement }下面是一个用例:letxhsLength=10 for(letxhs=0;xh
2023-02-26 12:17说明1、for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。2、for-of循环将按照可迭代对象的next()方法产生值的顺序迭代元素。关于可迭代对象,请参考ES6系列的Iterator。如果尝试迭代的变量不支持迭代,for-of语句就会出错。语法:只
2023-02-26 12:16说明1、switch语句可用于所有的数据类型(在许多语言中,它只能用于数值),因此可以使用字符串甚至对象。2、条件值不一定是常量,或者是一个变量或者一个表达式。实例switch('helloxhsRookies'){ case'hello'+'xhsRookies&#
2023-02-26 12:15发布日期:2022-10-29人气:641
发布日期:2022-10-10人气:555
发布日期:2022-09-29人气:335
发布日期:2022-09-04人气:311
发布日期:2023-01-16人气:226
发布日期:2022-10-02人气:149
发布日期:2022-11-07人气:145