操作一个设备

操作一个设备
============
  参考文档:自己的总结  

  无论有没有操作系统,无论目标平台如何,控制一个外部设备的具体步骤都是一样的。它始终包括如下步骤
  
迎合设备电平特性
---------------
  要使用一个设备首先要让设备得到它想要的。
  首先就是给设备供电。供电从来都不是一件轻轻松松的事情。
  -->交流或直流:对于设备的工作电压可能是交流或直流,或同时都有,比如一个数控的交流电风扇,需要交流电
     提供电机转动,需要一个继电器以控制其开关,继电器是直流的。

  -->正电压或负电压:某些传输芯片,如rs232协议的正逻辑就是-12v,负逻辑就是+12v。某些器件如数字放大
     器,也许要负电压才能放大到负电压。这往往需要系统提供负电源(电源转换芯片提供)

  -->模拟/数字:对于数字芯片可能会同时有数字电压和模拟电压,数字电压确定其逻辑电平或者控制其数字部分,
     模拟电压负责其模拟部分或者成为芯片的主电源,比如一块无线接收芯片,模拟部分处理无线信号,数字部分
     也参与部分处理并且和外部通信。

  -->电源特性:一个器件有一定的电压工作范围,比如5V逻辑的8051单片机在4.3V的时候还是工作的好好的,又
     比如一块AD转换芯片获得的参考电压可以在多个大概的电压点变化,如2.5V,5V。各种器件对电压的稳定度
     要求也不一样,在AD转换中,参考电压越稳定,转换精度就越符合预期(理论上转换精度是由AD的位宽决定的)
     ,51单片机虽然工作电压不一定要标准的5V,但是需要接一个滤波电容和去耦电容来加强电源的稳定性和去
     纹波。另外复杂的芯片需要对多个引脚进行供电,一个复杂的嵌入式处理器有多个VCC,GND。

  -->功耗和散热:不要小看这个问题,君不见笔记本i5+独显还不即台式上面一个单i3?不同的设备又不同的功耗,
     可大可小,功耗高除了本身对电源功率的要求以外还产生了两个问题:电流,散热。一般电流越大布线就要
     越宽,否则线路也要烧掉;散热不是问题,问题是散热的器件的选择,设备的m密集度要调小。不解决功耗问题
     整个系统都无法正常运行。

  -->节能问题:不使用的设备要断开电源或睡眠,处理器也要睡眠。这就涉及到中断相应的问题。

  给设备供电之后才是查看其引脚的电气特性。以下每一点都是可以用一个重要的知识点,所以很简略。
  -->上/下拉电阻:上/下拉电阻的特性之一就是让0更接近于0V,1更接近于VDD。

  -->电压兼容:有的3.3V器件的引脚也兼容5V电平,有的则不行,那么稳定起见就需要接电压转换电路或芯片。

  -->匹配电路:长距离的通信会受传输线的限制,需要接匹配电路。

  -->防止干扰:在高速信号传输和远距离信号传输中都需要考虑干扰问题。高速信号线的数据线必须一样长,避免
     其他信号的时钟线平行。远距离传输时用差分方法,然后使用双绞线是常用的抗共模干扰的方法。

硬件通信协议
------------
  处理器要控制外部设备需要在硬件上匹配设备的通信协议。比较出名的协议有I2C,SPI,UART,CAN,USB,还有
  和外部存储器相连的8,16,32位并行数据的协议(不知到有没有名字)以及一个引脚的PWM和高低电平的控制。
  这些协议网上资料一大片,它们的协议流程各不相同,不过可能有一些共同的地方需要设置。
  -->时钟速率:不同的器件所支持的时钟速率是不同的,I2C大致分标准速率(100kbps)和高速模式(150kps)
    两种,很多器件只支持标准的速率。UART也分不同的波特率,不同器件的差距就更大了。使用PWM来调节的设备
    也是一样,不同的设备需要不同的PWM基准频率,频率不匹配达到的效果你都想笑。

  -->数据采样边沿:同样是SPI兼容的AD芯片,它的数据有效边沿可能不太一样,可能在上升沿,可能在下降沿。
   
  -->各种时间:数据保持时间,上升沿变化时间,时钟低电平时间,时钟高电平时间。

  -->信号有效极性:同步信号的极性,如PWM是高电平算“有效”还是低电平,LCD的帧同步信号是高电平还是
     低电平。

设备的规则
-----------
  有一些简单的设备如led,受pwm调节的背光,SRAM,DA的直通模式等等,在和它们进行通信时都不需要有什么
  多余操作,led直接高低电平控制亮灭,SRAM直接读取对应地址的字节或字。但其他设备可能就需要多一点的
  约定,比如,温度采样芯片可能是基于命令控制的,不同的命令之后数据的传输方向不同,可能命令之后又要写  
  地址...这就构成了设备的规则,设备的规则几乎是不可违背的,一旦违背那肯定不是你想要的结果。这个没什么
  好说的,只是具体的设备都不会太标新立异,各个类型的设备操作流程几乎都是大同小异的。像存储类的设备无非
  就是写命令-写地址-读写数据-结束标志。


使用操作系统  
------------
  软件编程的基本思想之一就是:统一方法,屏蔽细节,实现与接口分离。操作系统对于设备的操作能更好的做到这
  点。
  
  不得不说的是为什么要使用linux操作系统,因为正是操作系统才屏蔽了那么多设备的实现细节。还是拿存储设备
  来说,不管设备是基于什么硬件协议,不管访问设备需要遵循何种约定在linux用户程序眼中它们几乎都是文件,
  只有一个规则--linux文件访问接口函数的规则。而作为驱动程序就显得光荣了很多,和操作系统一起屏蔽细节。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值