一起游 手游攻略 手游评测 瑞芯微(EASY EAI)RV1126B I2C使用

瑞芯微(EASY EAI)RV1126B I2C使用

时间: 来源:互联网 浏览:0

1. I2C介绍

IIC,也缩写为I2C,是一种采用多主从架构的串行通信总线。

它最初的设计目的是让主板、嵌入式系统或手机连接低速外围设备。多用于数据量小、传输距离短、同时只有一台主机的情况。

在Linux嵌入式应用开发的背景下,你完全可以忽略IIC协议的详细规定。我们只需要按照驱动层提供的操作接口函数来操作IIC外设,就可以像Linux中其他普通设备文件一样方便地操作IIC外设。

1.1 开发板上I2C资源介绍

EASY EAI Nano-TB开发板预留了1个IIC资源:IIC_5供用户自定义调用。具体分支位置如下图所示:

wKgZO2lZxVOAb2X3ABZVWXedUhc148.jpg

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:\百度网盘(无规定,用户可自主选择),如下图。

wKgZPGlZxVOABk5XAAClvPQb7LE471.jpg wKgZPGlZxVOAVMveAAEl6-tWuWA146.jpg wKgZO2kmcruAekwKAAEv5Q2aAtI194.jpg wKgZPGlZxVOAA2TsAAD5k-hlVL4004.jpg最后进入相应的例程目录进行编译操作。具体命令如下:

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

注意:

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

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

2.3 例程运行

通过串口调试或者ssh调试,进入板子后台,找到例程部署的位置,如下图:

cd /用户数据

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};返回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)) sizeof(tx_data)){ printf('iic 写入失败!\n');返回-1; } uint8_t rx_data[3]={0}; if(iic_read(fd, ADS1115_ADDRESS, rx_data, 2) 0){ printf('iic 读取失败!\n');返回-1; } int16_t 数据=rx_data[0]*256+rx_data[1];返回数据; } double ads1115_get_Voltage_val(uint32_t fd, uint8_t configH, uint8_t configL) { /*配置寄存器*/if(ads1115_config_register(fd, configH, configL) 0){ printf('ads1115 配置寄存器失败\n');返回0.0;睡眠(100 * 1000); int16_t ad_val=ads1115_read_data(fd); if((0x7FFF==ad_val)|(0X8000==ad_val)) {//是否超出范围ad_val=0; printf('ads1115 over PGA\r\n');双值=0.0; switch((0x0EconfigH)1)//范围对应的分辨率{ case(0x00): val=(double)ad_val*187.5/1000000.0;休息;案例(0x01): val=(双)ad_val*125/1000000.0;休息;案例(0x02): val=(双)ad_val*62.5/1000000.0;休息;案例(0x03): val=(双)ad_val*31.25/1000000.0;休息;案例(0x04): val=(双)ad_val * 15.625/1000000.0;休息;案例(0x05): val=(双)ad_val*7.8125/1000000.0;休息;默认: val=0.0;休息;返回值; } int main(int argc, char const *argv[]) { bool ret=false;双值; int fd=iic_init('/dev/i2c-2'); if(fd 0){ printf('iic 初始化失败\n');返回-1; } if(0 !=iic_set_addr_len(fd, 7)){ return -1; } if(0 !=iic_set_addr(fd, ADS1115_ADDRESS)){ return -1; } while (1) { val=ads1115_get_Voltage_val(fd, CONFIG_REG_H, CONFIG_REG_L); printf('val: %f V\r\n',val);睡眠(2); iic_release(fd);返回0; }

其中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中实现。

标题:瑞芯微(EASY EAI)RV1126B I2C使用
链接:https://yqqlyw.com/news/sypc/67392.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
  • 瑞芯微(EASY EAI)RV1126B TF卡使用
  • 廉价Linux智能商务 摩托A1210仅售1
  • 绯红之境兑换码最新2021 礼包兑换码大全

    绯红之境兑换码最新2021 礼包兑换码大全[多图],绯红之境兑换码怎么领取?绯红之境兑换码有哪些?绯红之境在今日

    2026-01-04
    三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法

    三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法[多图],三国群英传7霸王再临怎么玩?三国群英传7霸王再临

    2026-01-04
    妄想山海怎么加好友 加好友方法大全

    妄想山海怎么加好友 加好友方法大全[多图],妄想山海添加好友功能在哪里?妄想山海添加好友的方法是什么?好友添

    2026-01-04
    江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略

    江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略[多图],江南百景图又见桃花村钓鱼怎么钓?又见桃花村钓

    2026-01-04