日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RK3576開發(fā)板的I2C使用說明

ljx2016 ? 來源:ljx2016 ? 作者:ljx2016 ? 2025-05-07 10:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. I2C介紹

IIC又簡寫成I2C,是一種串行通信總線,使用多主從架構(gòu)。

最初設(shè)計(jì)目的為了讓主板、嵌入式系統(tǒng)手機(jī)用來連接低速周邊設(shè)備。多用于小數(shù)據(jù)量的場合,有傳輸距離短,任意時(shí)刻只能有一個(gè)主機(jī)等特性。

Linux嵌入式應(yīng)用開發(fā)的情景下,完全可以不必理會(huì)IIC協(xié)議的詳細(xì)規(guī)定。只需要按照驅(qū)動(dòng)層提供給我們的操作IIC外設(shè)的操作接口函數(shù)就可以像操作linux中其他普通設(shè)備文件那樣輕松的操作IIC外設(shè)了。

1.1 開發(fā)板上I2C資源介紹

EASY EAI Orin-Nano開發(fā)板預(yù)留引出了2路IIC資源,以供用戶自定義調(diào)用,它們分別是IIC2和IIC8。確切的分部位置,如下圖所示:

wKgZO2gayMaAEsE5ABS-Mx3gT6o487.jpg

1.2 硬件接線示意圖

wKgZPGgayMaAZfIqAADdNgPRzl4127.png

本示例采用ADS1115電壓檢測模塊進(jìn)行輔助演示。此模塊功能是把檢測到的電壓(模擬信號(hào))轉(zhuǎn)化為數(shù)字信號(hào)存入寄存器中,然后以IIC的通信方式對(duì)外提供電壓信息的提取。

ADS1115模塊與EASY EAI Orin-Nano的接線原理圖如下所示:

wKgZO2gayMeAGSNvAABxrfCVn2A216.png

2. 快速上手

2.1 例程源碼下載

到【百度網(wǎng)盤】上下載相關(guān)的單例程序:

鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234

提取碼: 1234

比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。

wKgZPGgayMeAf0yrAACziBbs-LY313.png

然后把例程【復(fù)制粘貼】到nfs掛載目錄中。(不清楚目錄如何構(gòu)建的,可以參考《入門指南/開發(fā)環(huán)境準(zhǔn)備/nfs服務(wù)搭建與掛載》)

wKgZO2gayMeAcXWFAAEB2_3nRjY601.png

2.2 例程編譯&運(yùn)行

通過adb shell進(jìn)入開發(fā)板環(huán)境(不清楚如何通過adb進(jìn)行調(diào)試,可以參考《入門指南/開發(fā)板調(diào)試方式介紹/adb調(diào)試》),執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。

cd /home/orin-nano/Desktop/nfs/08_IIC/
./build.sh
wKgZPGgayMeAQVOtAAF5g_M9vaE021.png

編譯成功后,會(huì)生成一個(gè)test-ads1115的可執(zhí)行程序在Release目錄中。

執(zhí)行下方命令則可運(yùn)行測試demo,如下所示。

sudo ./Release/test-ads1115

執(zhí)行效果如下所示,利用探測分別觸碰3V3,1V8,GND三個(gè)端子,則可在終端測出對(duì)應(yīng)的電壓值。

wKgZO2gayMiAFnUdAACt8oyTDrM125.png

3. C語言使用案例

ADS1115的C語言使用案例,代碼地址為08_IIC/test-ads1115/main.c,供用戶編碼參考。以下代碼展示了對(duì)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;
    /*讀取數(shù)據(jù)*/
    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 write faild !n");
        return -1;
    }

    uint8_t rx_data[3]={0};
    if(iic_read(fd, ADS1115_ADDRESS, rx_data, 2) < 0){
        printf("iic read faild !n");
        return -1;
    }

    int16_t data = rx_data[0]*256+rx_data[1];
    return data;
}

double ads1115_get_voltage_val(uint32_t fd, uint8_t configH, uint8_t configL)
{
    /*配置寄存器*/
    if(ads1115_config_register(fd, configH, configL) < 0){
        printf("ads1115 config register faildn");
        return 0.0;
    }
    usleep(100 * 1000);
    
    int16_t ad_val = ads1115_read_data(fd);
    if((0x7FFF == ad_val)|(0X8000 == ad_val)) {//是否超量程了
        ad_val = 0;
        printf("ads1115 over PGArn");
    }
    
    double val = 0.0;
    switch((0x0E&configH)?>>1)//量程對(duì)應(yīng)的分辨率
    {
        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 < 0){
        printf("iic init faild n");
        return -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 Vrn",val);
        sleep(2);
    }
    
    iic_release(fd);
    return 0;
}

其中iic_init(),iic_set_addr_len(),iic_set_addr(),iic_read(),iic_write(),iic_release()是對(duì)系統(tǒng)調(diào)用的易用化封裝。具體實(shí)現(xiàn)于08_IIC/commonApi/iic.c

除了需要有對(duì)IIC硬件資源進(jìn)行操作的接口以外,要需要清楚IIC總線上的IIC從機(jī)設(shè)備的寄存器操作方法。如ADS1115電壓檢測芯片,與其寄存器相關(guān)的操作定義均在08_IIC/test-ads1115/ads1115.h中實(shí)現(xiàn)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1563

    瀏覽量

    131797
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6433

    瀏覽量

    121226
  • rk3576
    +關(guān)注

    關(guān)注

    1

    文章

    304

    瀏覽量

    1686
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于RK3576開發(fā)板的WDT看門狗使用說明

    RK3576開發(fā)板的WDT使用說明
    的頭像 發(fā)表于 05-06 17:15 ?1401次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的WDT看門狗<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的PCIE固態(tài)硬盤使用說明

    RK3576開發(fā)板的PICE固態(tài)硬盤使用方法
    的頭像 發(fā)表于 05-06 17:33 ?2215次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PCIE固態(tài)硬盤<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的TF卡槽使用說明

    RK3576開發(fā)板使用TF卡槽
    的頭像 發(fā)表于 05-07 09:24 ?2483次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的TF卡槽<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的PWN使用說明

    RK3576開發(fā)板使用PWN教程及Demo
    的頭像 發(fā)表于 05-07 14:07 ?2535次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PWN<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的RTC使用說明

    文章主要展示RK3576開發(fā)板的RTC信息和快速上手例程
    的頭像 發(fā)表于 05-07 15:04 ?2663次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的RTC<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的人臉識(shí)別算法

    RK3576開發(fā)板展示人臉識(shí)別算法例程和API說明
    的頭像 發(fā)表于 05-07 16:48 ?2981次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人臉識(shí)別算法

    【作品合集】米爾RK3576開發(fā)板測評(píng)

    】米爾RK3576開發(fā)板免費(fèi)試用 作者:EPTmachine【米爾RK3576開發(fā)板免費(fèi)體驗(yàn)】1、開發(fā)環(huán)境、鏡像燒錄、QT
    發(fā)表于 09-11 10:19

    【作品合集】靈眸科技EASY EAI Orin Nano(RK3576開發(fā)板測評(píng)

    體驗(yàn)】HDMI &amp; SPITFTLCD雙屏異顯(雙進(jìn)程) 【EASY EAI Orin Nano(RK3576開發(fā)板試用體驗(yàn)】移植LVGL9.1(C語言工程) 【EASY EAI
    發(fā)表于 09-09 09:59

    米爾RK3576開發(fā)板特惠活動(dòng)!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板RK3576作為國產(chǎn)熱門處理器,其高性能數(shù)據(jù)處理能力、領(lǐng)先的AI智能分析、強(qiáng)大的擴(kuò)展性與兼容性受到廣大
    的頭像 發(fā)表于 11-12 01:00 ?2470次閱讀
    米爾<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>特惠活動(dòng)!

    迅為RK3576開發(fā)板核心與底板接口硬件介紹

    迅為RK3576開發(fā)板核心與底板接口硬件介紹
    的頭像 發(fā)表于 01-14 15:15 ?3205次閱讀
    迅為<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>核心<b class='flag-5'>板</b>與底板接口硬件介紹

    基于RK3576開發(fā)板的MIPI-DSI使用

    MIPI DSI接口是由MIPI聯(lián)盟下的Display工作組指定的DSI(Display Serial Interface)的接口標(biāo)準(zhǔn)。rk3576開發(fā)板使用mipi-dsi教程
    的頭像 發(fā)表于 05-06 16:11 ?1684次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的MIPI-DSI使用

    基于RK3576開發(fā)板的揚(yáng)聲器和耳機(jī)使用說明

    RK3576開發(fā)板的揚(yáng)聲器和耳機(jī)使用說明
    的頭像 發(fā)表于 05-06 16:36 ?2123次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的揚(yáng)聲器和耳機(jī)<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的HDMI-OUT使用說明

    RK3576開發(fā)板的HDMI-OUT使用說明
    的頭像 發(fā)表于 05-06 16:48 ?1624次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的HDMI-OUT<b class='flag-5'>使用說明</b>

    基于RK3576開發(fā)板的人員檢測算法

    展示了RK3576開發(fā)板的人員檢測算法例程及API說明
    的頭像 發(fā)表于 05-07 17:33 ?1053次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人員檢測算法

    RK3576開發(fā)板OpenGL性能大起底,這數(shù)據(jù)我真的服了

    瑞芯微RK3576芯片作為一款中高端的八核Arm架構(gòu)嵌入式處理器,集成Mali-G52MC3的GPU。本次OpenGL性能測試,基于觸覺智能RK3576開發(fā)板PurplePiOH2演示
    的頭像 發(fā)表于 01-16 17:20 ?1822次閱讀
    <b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>OpenGL性能大起底,這數(shù)據(jù)我真的服了
    仪陇县| 涞水县| 双牌县| 象山县| 梓潼县| 鱼台县| 清涧县| 六安市| 剑阁县| 建阳市| 陵水| 永川市| 潍坊市| 搜索| 阳曲县| 榕江县| 华阴市| 葵青区| 阳城县| 阳春市| 合阳县| 浑源县| 库伦旗| 深州市| 衡水市| 威宁| 台中县| 鲁甸县| 谷城县| 厦门市| 鄂伦春自治旗| 镇雄县| 龙山县| 青冈县| 泽普县| 南乐县| 巧家县| 扎赉特旗| 丹寨县| 苏尼特左旗| 隆林|