广告位API接口通信错误,查看德得广告获取帮助

电竞之家_品味电竞生活移动版

主页 > CS:GO >

Thread传感器驱动开发指南(2)

的前缀。由于系统默认的设备名最长为 7 个字符,因此如果传入的名称超过3个字符的话会被裁掉。- 注册时如传感器支持 FIFO 的话,需要添加 RT_DEICE_FLAG_FIFO_RX的标志位。 - 如果两个设备有耦合的话,需要利用 module 解耦。初始化一个 module,将两个传感器的设备控制块赋值到里面,并将 module 的地址赋值给两个传感器设备。框架会自动完成 module 锁的创建。

其中传入参数

struct rt_sensor_config *cfg

是用来解耦硬件的通讯接口的,通过在底层驱动初始化的时候传入这个参数,实现硬件接口的配置。里面包含

struct rt_sensor_intf

这个结构体,

1struct rt_sensor_intf2{3 char *de_name; /* The name of the communication deice */4 rt_uint8_t type; /* Communication interface type */5 oid *user_data; /* Priate data for the sensor. ex. i2c addr,spi cs,control I/O */6};

其中,type 表示接口的类型,de_name 表示设备的名字,例如"i2c1"。user_data 是此接口类型的一些私有数据,如果是 I2C 的话,这里就是传感器对应的 i2c 地址,传入方式为

(oid*)0x55

在底层驱动初始化时,需要先初始化此结构体,然后作为参数传入,以便完成通讯接口的解耦。类似这样:

1#define irq_pin GET_PIN(B, 0)2 3int lps22hb_port(oid) 4{ 5 struct rt_sensor_config cfg; 6 7 cfg.intf.de_name = "i2c1"; 8 cfg.intf.user_data = (oid *)0x55; 9 cfg.irq_pin.pin = irq_pin;10 cfg.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN;11 rt_hw_xxx_init("xxx", &cfg);1213 return RT_EOK;14}15INIT_APP_EXPORT(lps22hb_port);

测试

通过 list_deice 命令查看对应设备是否注册成功。通过 deice 接口 open 然后 read 数据,判断能否读取成功。测试其他的模式和控制接口提交

Sensor 驱动需要按

软件包的方式提交,具体的结构可以参考已有的 Sensor 软件包。具体的提交流程也可以参考文档中心,如果不知道提交地址可以留言。

注意事项

动态分配内存时请使用 rt_calloc。静态定义的变量请赋初值,未使用的初始化为 0。如果可能的话,请尽量支持多实例。需要注意下面的问题:不能出现全局变量所有的配置信息存储到 sensor 结构体里sensor 结构体里没有的配置,利用 rt_deice 的 user_data 来存储大家如果有任何技术层面的疑问,也可以留言哦~

(责任编辑:波少)
广告位API接口通信错误,查看德得广告获取帮助