查看: 1155|回复: 2

[开发求助] 驱动移植修改i2c接口

[复制链接]

6

主题

12

帖子

43

积分

助理工程师

Rank: 1

积分
43
发表于 2020-11-2 10:02:35 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

50

主题

409

帖子

1309

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
1309
发表于 2020-11-2 10:50:58 | 显示全部楼层
您好,I2C相关问题请参照I2C
回复

使用道具 举报

50

主题

409

帖子

1309

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
1309
发表于 2020-11-2 10:55:06 | 显示全部楼层
您好,I2C相关技术问题请参照Lierda OpenCPU I2C应用笔记和API手册,若您有技术问题需要支持,方便您私信发我您的联系方式,我让前线的同事支持您一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表