关于电机的一切 2022-05-08 21:37 采纳率: 100%
浏览 56
已结题

嵌入式Linux中应用程序中读取到的传感器数据怎么知道哪个是哪个呢?

在单片机程序开发中,硬件的使用方式只有驱动工程师知道,因为硬件的操作接口都是他定义的。
具体到了Linux平台,有了操作系统,驱动工程师需要向操作系统提交接口的具体实现,就是open,read,write函数这些,应用工程师不需要知道硬件的具体使用方式,只需要调用open,read,write这些函数就能操作硬件。
现在我有一个很疑惑的问题就是,对于多个寄存器数据的读取,应用工程师如何知道读取到的具体是哪个寄存器的数据,举个例子,在正点原子的书中的I2C设备AP3216C这个三合一环境光传感器的驱动程序中,读取了3个数据:

img

上操作系统的一个优点就是向应用工程师提供统一的硬件操作接口,此时应用工程师只需要调用read就能读取到传感器数据。那么假设我作为一个应用工程师,驱动不是我开发的,我现在需要读取传感器的ir的值,我调用read函数以后,给我返回了三个值,这时候我怎么知道哪个值是ir的值呢?如图是应用程序中读传感器的值:

img


如果驱动不是我开发的,我怎么知道这数组中3个数据哪个是哪个物理量的值呢?

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-05-08 21:55
    关注

    文档,文档,文档,重要的事情说三遍。
    任何多人合作项目,和接口相关的东西都要有文档。接口协议,要么是业界标准协议,要么是私有协议,这些都要有文档。
    这个和Linux没有什么关系,即使是单片机之间的通讯,也是要文档的。
    你的第一句话就有问题,这不是正确的开发方式,单片机功能的实现方式可以只有硬件工程师知道,但是使用方式,这个是要和其它人发生关系的,不应该只有他一个人知道。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同