MTK 6261D平台调试Frizz sensor hub总结

其实,总结起来就是要思路明确。


第一歩,整理整个流程,写接口,然后正式调试。

           I2C接口,首先我们用的是硬件I2C,花了大半天的时间调试接口,主要一些细节方面,例如传输的字节,有的时候length-1的,导致最后一个字节读不到,所以id不对。

           还有就是参数传递,数组和指针转换的时候出错了。最后读到id,但是写大数据,会有很多报错,经过读6261d的datasheet,还有实际的验证,发现硬件i2c只能传输

           不能超过8个字节,在加上一个字节的地址,总共不能超过9个字节。后来想用dma的方式,简单的试了一下,发现行不通。


第二歩,使用模拟i2c接口。第一个坑是i2c要硬件拉高。第二个是i2c搞反了,有波形,没有ack,找了很久。第三,读写firzz地址来测试,发现不对。检查是因为别人把寄存器地址写死了。

            

            i2c调通后,download firmware ok!成功第一歩。



第三歩,调试中断,直接上代码

EINT_Registration(11, KAL_TRUE, LEVEL_HIGH, frizz_eint_callback, KAL_TRUE); 
//EINT_Set_HW_Debounce(11, 2);
EINT_SW_Debounce_Modify(11,0);
EINT_Set_Sensitivity(11, EDGE_SENSITIVE);
EINT_Set_Polarity(11, LEVEL_HIGH);
       EINT_UnMask(11);

这里由于基础不扎实,浪费了点时间,因为平时都是简单的使用,外部状态很确定,还可以测量,所以很快能试出来。

而这一次,外部状态不确定,也是由ic发的中断到cpu,外部没有测量器件,所以有点麻烦,下面加强一下eint的知识点:

void EINT_Registration(kal_uint8 eintno, kal_bool Dbounce_En, kal_bool ACT_Polarity, \
                       void (reg_hisr)(void), kal_bool auto_umask)

第一个参数是中断号

第二个参数是延时,抖动。

第三个参数是重点,ACT_Polarity,上面的例子就是默认状态低,高有效,LEVEL_HIGH。

第四个是回调函数

第五个是否默认打开。

EINT_Set_Sensitivity(11, EDGE_SENSITIVE);  这个的重点在触发方式,边沿触发还是电平触发。


void EINT_Set_Polarity(kal_uint8 eintno, kal_bool ACT_Polarity)  这里也有个ACT_Polarity,这个和EINT_Registration的第三个参数让我很困惑,后来看了下实现。

EINT_Registration的ACT_Polarity实现如下:

      /* initialize HW-dependant A-DIE EINT configuration */
      ADIE_EINT_HW_Initialize(EINT_GLB_TO_ADIE(eintno), Dbounce_En, ACT_Polarity);

这里应该是硬件初始化为高有效状态

EINT_Set_Polarity的ACT_Polarity实现如下:

      ADIE_EINT_Set_Polarity(EINT_GLB_TO_ADIE(eintno), ACT_Polarity);

这里是软件设置外部中断的极性,高有效。所以这个两个状态必须要一致,不知道这里理解错了没有,有机会看到这篇文章的人请留言指点一下。


==============================================over================================================================


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值