Lis3de_porting_guide



Lis3de_porting_guide:(这个 porting guide 只是完成 Gsensor 旋转时,在 Man-Pad 上看到屏幕旋转)
调试 Lis3de 是基于 Lis3dh.c 这个驱动进行修改完成的。平台是在 RK3188 4.2.2 的 SDK上。
1、明确 Lis3de 和 Lis3dh 的区别:
a)Lis3de 的 I2C address 是:0x28 或者 0x29
b)Lis3dh 的 I2C address 是:0x18 或者 0x19
2、Lis3de 是 8bit 的 Gsensor,Lis3dh 是 16bit 的 Gsensor
首先将 Lis3dh 调试正常:
1、Lis3dh 是 RK 调试正常了的 Gsensor,只需要在 menuconfig 中选中,然后在 board 文件中将 INT 脚配置正确,就可以正常使用了。
Man-pad 中的配置:
#define LIS3DH_INT_PIN   RK30_PIN3_PD7

#if defined (CONFIG_GS_LIS3DH)
     {
         .type           = "gs_lis3dh",
         .addr           = 0x18,   //0x19(SA0-->VCC), 0x18(SA0-->GND)
         .flags          = 0,
         .irq            = LIS3DH_INT_PIN,
         .platform_data = &lis3dh_info,
     },

2、Lis3de 使用的也是一样的驱动文件,将 lis3dh.c 修改为 lis3de.c。在 makfile 和 Kconfig 中添加相应的语句。
lis3de.c 中修改的代码:
a)
#define LIS3DH_PRECISION        8

static int sensor_convert_data(struct i2c_client *client, char high_byte, char low_byte)
{
    s64 result;
    printk("andrew-----%s\n",__func__);
    struct sensor_private_data *sensor =
        (struct sensor_private_data *) i2c_get_clientdata(client);
    //int precision = sensor->ops->precision;
    switch (sensor->devid) {
        case LIS3DH_DEVID:
        //  result = ((int)high_byte << 8) | (int)low_byte;
            result = (int)high_byte;
            if (result < LIS3DH_BOUNDARY)
                result = result* LIS3DH_GRAVITY_STEP;
            else
                result = ~( ((~result & (0x7fff>>(16-LIS3DH_PRECISION)) ) + 1)
                        * LIS3DH_GRAVITY_STEP) + 1;
            break;

        default:
            printk(KERN_ERR "%s: devid wasn't set correctly\n",__func__);
            return -EFAULT;
    }

    return (int)result;
}
b)
在 board 文件中添加相应的文件,和 lis3dh 除了宏定义,其他完全一样。
#if defined (CONFIG_GS_LIS3DE)
    {
         .type           = "gs_lis3dh",
         .addr           = 0x28,   //0x39(SA0-->VCC), 0x38(SA0-->GND)
         .flags          = 0,
         .irq            = LIS3DH_INT_PIN,
         .platform_data = &lis3dh_info,
     },
#endif



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值