[Android][sensor][accel]加速度单元测试tLOW值小于门限问题解决思路

三轴加速度器件(仅A)单元测试SCL高电平持续时间tLOW值约为1.26us,小于门限(最小值)1.3us,i2c频率实测391kHz(应该为400kHz),需要进行时序优化。

该问题最后未进行任何时序优化,不过在该过程中的思考方式可供参考。

SCL高电平持续时间tLOW由i2c clk控制。

进行以下尝试

1.将单A器件中i2c clk发送的频率由400改为800

/adsp_proc/ssc/sensors/da718/src/sns_mir3da_sensor.c

     state->common.com_port_info.com_config.min_bus_speed_KHz = 400;
     state->common.com_port_info.com_config.max_bus_speed_KHz = 400;

测试无明显改善。

2.更改i2c的dts配置

ap侧:kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm89x9.dtsi
在该器件对应的i2c通路上更改(需要知道该器件接在哪个芯片上、接在哪路i2c上)

         qcom,noise-rjct-scl = <0>;
         qcom,noise-rjct-sda = <0>;

从0到3分别尝试
测试无明显改善。(这个是芯片平台修改错了,于是修改无效,该项目正确的芯片是msm89x7,但是由于时间原因,没有去修改编译测试,大家遇到问题的时候可以自己尝试修改试试)

3.依据I2C_CLK =19.2Mhz/(29+14+6)修改

ap侧:
kernel/msm-4.9/drivers/i2c/busses/i2c-msm-v2.c

/*
  * divider values as per HW Designers
  */
 static struct i2c_msm_clk_div_fld i2c_msm_clk_div_map[] = {
         {KHz(100), 124, 62},
         {KHz(400),  28, 14},  //28 is SCL tLOW counter and 14 is SCL tHIGH counter
         {KHz(1000),  8,  5},
 };

将SCL tLOW 改为比28大的数值,分别测试在29,32,34时的tLOW值,测试无明显改善。

fs_div,ht_div分别是低电平的计数器和高电平的计数器,要保证fs_div+ht_div+6总体减小,fs_div增大,这样时钟频率可以向400KHz接近,然后t_low的持续时间增大。可以根据需求调整这两个分频系数。

增大SCL tLOW 改为比28大的数值,减小SCL tHIGH,同时保证(fs_div+ht_div+6)减小,改为(30,11),(32,9),测试无明显改善。

4.评估风险

Qcom回复:已无可更改寄存器。
联系单A器件FAE,其研发评估通信正常无风险。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霁之鸢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值