欢迎来到纳米网!
首页 > 公众号文章>正文

瑞芯微RV1126B I2C接口详解:从硬件接线到代码实现

1. I2C介绍

IIC又简写成I2C,是一种串行通信总线,使用多主从架构。

最初设计目的为了让主板、嵌入式系统或手机用来连接低速周边设备。多用于小数据量的场合,有传输距离短,任意时刻只能有一个主机等特性。

在Linux嵌入式应用开发的情景下,完全可以不必理会IIC协议的详细规定。只需要按照驱动层提供给我们的操作IIC外设的操作接口函数就可以像操作linux中其他普通设备文件那样轻松的操作IIC外设了。

1.1 开发板上I2C资源介绍

EASY EAI Nano-TB开发板预留引出了1路IIC资源:IIC_5,以供用户自定义调用。确切的分部位置,如下图所示:

1.2 硬件接线示意图

wKgZO2lUw7qAYD_5AADYb7LhCcw830.jpg

本示例采用ADS1115电压检测模块进行辅助演示。此模块功能是把检测到的电压(模拟信号)转化为数字信号存入寄存器中,然后以IIC的通信方式对外提供电压信息的提取。

ADS1115模块与EASY EAI Nano-TB的接线原理图如下所示:

wKgZO2lZxVKAATgbAABuq_aL1JI571.jpg

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署。

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh

wKgZPGkmcrqAUDHhAAGt1XOkqw8819.jpg

2.2 源码下载以及例程编译

首先,在虚拟机后台终端,执行以下命令,创建外设单例源码管理目录:

cd /opt mkdir -p EASY-EAI-Nano-TB/demo

首先,到【百度网盘】上下载相关的单例程序:

链接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234

提取码:1234

比如把单例程序下载到:此电脑D:BaiduNetdisk (无规定,用户可自主选择),如下图所示。

wKgZPGlZxVOABk5XAAClvPQb7LE471.jpgwKgZPGlZxVOAVMveAAEl6-tWuWA146.jpgwKgZO2kmcruAekwKAAEv5Q2aAtI194.jpgwKgZPGlZxVOAA2TsAAD5k-hlVL4004.jpg

最后,进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Nano-TB/demo/08_IIC ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

wKgZO2lZxVOAVH2GAAFDauAeuRM282.jpg

编译成功后,会生成一个test-ads1115的可执行程序,并会自动部署到开发板的/userdata/目录中。

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata

wKgZO2lZxVOAGOpPAAAcRB7OsvM874.jpg

执行例程命令,如下所示:

sudo ./test-ads1115

执行效果如下所示,利用探测分别触碰3V3,1V8,GND三个端子,则可在终端测出对应的电压值。

wKgZPGlZxVSAfg8SAAC1mtBWJNQ097.jpg

3. C语言使用案例

ADS1115的C语言使用案例,代码地址为08_IIC/test-ads1115/main.c,供用户编码参考。以下代码展示了对ADS1115操作流程:

int32_t ads1115_config_register(uint32_t fd, uint8_t configH, uint8_t configL) { uint8_t reg_data[3] = {ADS1015_REG_POINTER_CONFIG, configH, configL}; return iic_write(fd, ADS1115_ADDRESS, reg_data, sizeof(reg_data)); } int16_t ads1115_read_data(uint32_t fd) { bool ret = false; /*读取数据*/ uint8_t tx_data[1] = {ADS1015_REG_POINTER_CONVERT}; if(iic_write(fd, ADS1115_ADDRESS, tx_data, sizeof(tx_data)) >1)//量程对应的分辨率 { case(0x00): val = (double)ad_val*187.5/1000000.0; break; case(0x01): val = (double)ad_val*125/1000000.0; break; case(0x02): val = (double)ad_val*62.5/1000000.0; break; case(0x03): val = (double)ad_val*31.25/1000000.0; break; case(0x04): val = (double)ad_val*15.625/1000000.0; break; case(0x05): val = (double)ad_val*7.8125/1000000.0; break; default: val = 0.0; break; } return val; } int main(int argc, char const *argv[]) { bool ret = false; double val; int fd = iic_init("/dev/i2c-2"); if(fd

其中iic_init(),iic_set_addr_len(),iic_set_addr(),iic_read(),iic_write(),iic_release()是对系统调用的易用化封装。具体实现于08_IIC/commonApi/iic.c

除了需要有对IIC硬件资源进行操作的接口以外,要需要清楚IIC总线上的IIC从机设备的寄存器操作方法。如ADS1115电压检测芯片,与其寄存器相关的操作定义均在08_IIC/test-ads1115/ads1115.h中实现。

猜你喜欢

  • 艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    艾为电子AW9967FSR:高效升压型WLED驱动芯片详解

    在消费电子持续追求轻薄化与长续航的当下,背光系统能效成为关键瓶颈。传统方案在轻载场景效率低下,散热性能不足,严重制约设备续航并带来可靠性风险。数模龙头艾为电子推出新一代升压型WLED驱动芯片——AW9967FSR,以科学先进的热管理技术,打造卓越的散热...

    2025-12-01
  • Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    Microchip发布MCP服务器:革新AI驱动的产品数据访问方式

    该服务器支持跨AI平台获取可信产品信息,简化工作流程、加速设计并提高生产力 为进一步兑现公司为嵌入式工程师开发AI解决方案的承诺,Microchip Technology Inc.(微芯科技公司)今日推出模型语境协议(MCP)服务器。作为AI接口,MCP服务器可直接连接兼容的AI...

    2026-01-23
  • Microchip第22届中国技术精英年会北京站成功闭幕,下一站深圳

    Microchip第22届中国技术精英年会北京站成功闭幕,下一

    Microchip第22届中国技术精英年会(MASTERs)北京站于今日圆满落幕!来自各地的技术专家、行业伙伴和客户齐聚一堂,共同探讨前沿技术与创新应用。活动伊始,Microchip大中华区副总裁Edward Ho先生为本站致开幕词,欢迎各位嘉宾的到来,并分享了对行业发展的展望...

    2026-01-23
  • 国星半导体车规级LED芯片获2025年广东省名优高新技术产品

    国星半导体车规级LED芯片获2025年广东省名优高新技术

    近日,广东省高新技术企业协会正式发布《2025年第二批广东省名优高新技术产品名单》,国星半导体自主研发的车规级LED芯片与垂直LED芯片两大系列产品成功入选。该认定严格围绕技术创新性、质量稳定性、市场成熟度及产业化能力四大维度进行评审,是广东省...

    2025-12-02
  • 云英谷科技荣登2025中国半导体企业影响力百强,专注OLED显示驱动芯片

    云英谷科技荣登2025中国半导体企业影响力百强,专注OLED

    11月14日,世界集成电路协会(WICA)主办的“2025全球半导体市场峰会”在上海成功召开。本次峰会发布了2026全球半导体市场趋势展望暨2025中国半导体企业影响力百强及集成电路新锐企业50强报告。云英谷科技股份有限公司荣登“2025中国半导体企业影响力百...

    2026-01-23
^