首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保存传感器寄存器的字段细节的最佳方法是什么?

保存传感器寄存器的字段细节的最佳方法是什么?
EN

Stack Overflow用户
提问于 2018-03-09 14:37:15
回答 1查看 53关注 0票数 1

我正在通过SPI接口一个传感器到BeagleBone黑色。我能成功地读写寄存器。我现在要做的是能够访问寄存器中的每个单独字段(例如,X1、X3)来读取或写入。

我也可以这样做,但用一条漫长的枯燥之路。我通过定义一个枚举来实现这一点,它包含寄存器中字段的名称。然后,我声明了一个包含三个信息的结构:字段的寄存器地址、字段的第一位和最后一位。然后,我用字段的数量定义了一个结构数组。最后,我必须为每个单独的字段初始化这三个值(地址、第一位和最后一位)。

以下是我的代码示例:

代码语言:javascript
运行
复制
enum {X1, X2, X3,     // Fields of register in address 0
      X4, X5,         // Register in address 1
      X6, X7          // Register in address 2
     } FIELD;

typedef struct
{
      int address;
      int first_bit;
      int last_bit;
} FIELDS;

FIELDS fields[3];

fields[X1] = (FIELDS) {.address = 0x00, .first_bit = ..., .last_bit = ...}
...

正如我所说的,这种方法可以工作,但问题是我在传感器中有大量的字段(大约60)。将来,传感器可能会改变,我将不得不更改字段的名称和相关信息。

目前的方法耗时、繁琐、易出错,不易适应不同的传感器.

我认为应该有一种更聪明、更适应能力和更少出错的方法来做到这一点?你能提出更好的方法来实现我的目标吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 14:40:49

嗯,本质上是“不”,因为它可以归结为传感器的特定寄存器布局。据我所知,这些都是从来没有自我描述的,所以你必须在软件端静态地“知道”什么是可用的,什么是在哪里。

当然,如果你绝望的话,你能做的就是发明(或找到)一个比C更能描述任意位字段的DSL,并在其中描述寄存器集。然后使用代码生成技术来生成所需的C代码,从而将需要更新的部分转换为更合适的语言(当然,代价是更实际的软件复杂性)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49196057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档