|
本帖最后由 13268074781 于 2020-11-2 10:07 编辑
各位网友:大家好~第一次使用利尔达NB86-OpenCPU方案,遇到以下问题:
麻烦各位帮帮忙,谢谢
【问题描述】
问题一:读写寄存器接口函数对接出错
在移植ST公司某芯片驱动的时候发现ST公司提供的i2c读写的HAL库函数接口与贵公司提供的i2c读写的函数接口标准不一致,具体如截图一a/b所示:
图一a:ST公司的i2c读写的HAL库函数接口
图一b:利尔达公司的i2c读写的函数接口
如果要实现对接,应该怎么处理?
问题二:
查看该ST公司的芯片驱动层发现,里面调用了检查目标设备是否准备好进行通信的函数(如图二a/b/c所示)该函数里面也包含了一些设置/清理i2c标志位的操作,请问贵公司提供的i2c库有没有对应的函数以及相应的设置/清理i2c标志位的操作?
图二a:
图二b:
图二c:
判断i2c总线是否空闲
【所处环境】
硬件平台:lierda利尔达 NB-IOT模组 NB86-G全网通EVK开发板评估板 150
软件版本:官网SDK提供名为:Software_DEMO的基础上修改
【初步分析】
初步分析一:以为造成i2c通信出错(函数返回1,表示通信失败)的原因是i2c的SDA和SCL设置管脚不正确造成,但根据贵公司官方文档,确定所设置i2c的SDA和SCL为同一电源域(SDA对应PIO20,SCL对应PIO15),如图三所示
图三:
初步分析二:尝试将贵公司的i2c函数接口寄存器输入参数写0,但是i2c通信依旧出错(函数返回1,表示通信失败),已知该芯片的配置在ST平台是可用的
相关代码如图四所示:
图四:
附录:由参考手册可知,该芯片i2c只需要发送设备地址和对应指令,便可接收返回数据了
参考手册提供的使用例子如图五所示,其中S代表通信起始,P代表通信结束
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|