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

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

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

【Milk-V Duo開發(fā)板免費(fèi)體驗(yàn)】評(píng)測(cè)三、I2C功能摸索

史逸如 ? 來源:史逸如 ? 作者:史逸如 ? 2023-07-28 08:59 ? 次閱讀

評(píng)測(cè)三、I2C功能摸索

手冊(cè)里說CV1800B有5個(gè)I2C控制器,分別如下:

wKgaomTCgTCAGAlDAAAzK7Az0yw931.png

正好手頭有個(gè)BMP180,它的設(shè)備地址是0x77,于是修改設(shè)備樹build/boards/cv180x/cv1800b_milkv_duo_sd/dts_riscv/cv1800b_milkv_duo_sd.dts使能I2C0:

&i2c0 {

status = "okay";

bmp180:bmp180@77 {

compatible = "bmp180";

reg = <0x77>;

};

};

同時(shí)修改build/boards/default/u-boot/ cv180x_qfn_cvi_board_init.c重映射I2C0功能為默認(rèn):

PINMUX_CONFIG(IIC0_SCL, IIC0_SCL);

PINMUX_CONFIG(IIC0_SDA, IIC0_SDA);

以及build/boards/cv180x/cv1800b_milkv_duo_sd/u-boot使能IIC0:

CONFIG_IIO=y

wKgZomTCgVqAJT-mAAJwLeSzcyE191.png

圖1 dts修改

然后編譯生成鏡像文件,在Windows下編譯不知道為什么老是報(bào)錯(cuò)linux5.10/build/cv1800b_milkv_duo_sd/sur/include:cannot overwrite directory

wKgaomTCga2ARlmCAAMkohtDnqs843.png

圖2 Windows下編譯老是報(bào)錯(cuò)

由于之前燒過,再燒錄重新登陸會(huì)提示“Host key verification failed”,不慌按提示的在.ssh/known_hosts編輯刪掉192.168.42.1那一行USB RNDIS即可:

wKgZomTCgcKAWswgAAHCaqEyaTM176.png

圖3重?zé)齋SH報(bào)錯(cuò)

進(jìn)入后用這篇帖子https://community.milkv.io/t/milk-v-duo-cvi-pinmux/292提供的cvi_pinmux工具查看I2C0引腳設(shè)置:

wKgaomTCgdOAWbu1AACD9FvF9e8959.png

圖4掃不到目標(biāo)

明明設(shè)置的是0x77(BMP180傳感器的從機(jī)地址為0xEE),可無中生有掃出0x56,上傳bmp180驅(qū)動(dòng),代碼如下:

#include

#include

#include

#include

#include

#include

#include

#include

#define I2C_RETRIES 0x0701

#define I2C_TIMEOUT 0x0702

#define I2C_RDWR 0x0707

/*********定義struct i2c_rdwr_ioctl_data和struct i2c_msg,要和內(nèi)核一致*******/

struct i2c_msg

{

unsigned short addr;

unsigned short flags;

#define I2C_M_TEN 0x0010

#define I2C_M_RD 0x0001

unsigned short len;

unsigned char *buf;

};

struct i2c_rdwr_ioctl_data

{

struct i2c_msg *msgs;

int nmsgs;

/* nmsgs這個(gè)數(shù)量決定了有多少開始信號(hào),對(duì)于“單開始時(shí)序”,取1*/

};

/***********主程序***********/

int main()

{

int i2c_file,ret;

struct i2c_rdwr_ioctl_data sensor_data;

i2c_file=open("/dev/i2c-0",O_RDWR);

/*

dev/i2c-0是在注冊(cè)i2c-dev.c后產(chǎn)生的,代表一個(gè)可操作的適配器。如果不使用i2c-dev.c

*的方式,就沒有,也不需要這個(gè)節(jié)點(diǎn)。

*/

if(i2c_file<0)

{

printf("open I2C device failed %dn", errno);

return -ENODEV;

}

sensor_data.nmsgs=2;

/*

*因?yàn)椴僮鲿r(shí)序中,最多是用到2個(gè)開始信號(hào)(字節(jié)讀操作中),所以此將

*sensor_data.nmsgs配置為2

*/

sensor_data.msgs=(struct i2c_msg*)malloc(sensor_data.nmsgs*sizeof(struct i2c_msg));

if(!sensor_data.msgs)

{

perror("malloc error");

exit(1);

}

ioctl(i2c_file,I2C_TIMEOUT,1);/*超時(shí)時(shí)間*/

ioctl(i2c_file,I2C_RETRIES,2);/*重復(fù)次數(shù)*/

/******read data from sensor*******/

sensor_data.nmsgs=2;

(sensor_data.msgs[0]).len=1; //sensor目標(biāo)數(shù)據(jù)的地址

(sensor_data.msgs[0]).addr=0x77; // sensor設(shè)備地址

(sensor_data.msgs[0]).flags=0;//write

(sensor_data.msgs[0]).buf[0]=0xD0;//sensor數(shù)據(jù)地址

(sensor_data.msgs[1]).len=1;//讀出的數(shù)據(jù)

(sensor_data.msgs[1]).addr=0x77;// sensor設(shè)備地址

(sensor_data.msgs[1]).flags=I2C_M_RD;//read

(sensor_data.msgs[1]).buf=(unsigned char*)malloc(1);//存放返回值的地址。

(sensor_data.msgs[1]).buf[0]=0;//初始化讀緩沖

ret=ioctl(i2c_file,I2C_RDWR,(unsigned long)&sensor_data);

if(ret<0)

{

perror("ioctl error2");

}

printf("buff[0]=%xn",(sensor_data.msgs[1]).buf[0]);

close(i2c_file);

return 0;

}

依舊報(bào)錯(cuò),暫時(shí)未調(diào)通。

審核編輯:湯梓紅

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

    關(guān)注

    112

    文章

    16419

    瀏覽量

    178803
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11329

    瀏覽量

    209977
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1495

    瀏覽量

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

    關(guān)注

    25

    文章

    5096

    瀏覽量

    97829
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2308

    瀏覽量

    46301
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】小身板大能力RISC-V開發(fā)板

    Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能夠運(yùn)行基于LINUX和RTOS的操作系統(tǒng)。Milk-V Duo為專業(yè)人士、工業(yè)OEM企業(yè)、物聯(lián)網(wǎng)愛好者、業(yè)余愛好者、D
    的頭像 發(fā)表于 06-30 10:25 ?4991次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b> <b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費(fèi)</b>體驗(yàn)】小身板大能力RISC-<b class='flag-5'>V</b><b class='flag-5'>開發(fā)板</b>

    Milk-V Duo】1、入門篇

    入門milk-V Duo開發(fā)板
    的頭像 發(fā)表于 07-07 11:21 ?1684次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b>】1、入門篇

    Milk-V Duo開發(fā)板免費(fèi)體驗(yàn)】Milk-V初次使用

    Milk-V Duo開發(fā)板免費(fèi)體驗(yàn)】Milk-V初次使用
    的頭像 發(fā)表于 08-08 09:03 ?2529次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費(fèi)</b>體驗(yàn)】<b class='flag-5'>Milk-V</b>初次使用

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】 + 系統(tǒng)鏡像燒錄以及登錄

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】+系統(tǒng)鏡像燒錄以及登錄 一.Milk-V Duo
    發(fā)表于 07-11 11:43

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo之開箱初體驗(yàn)

    STM32103C8T6核心的體積能與之媲美了,但是前者在同樣的體積下塞進(jìn)去了更強(qiáng)的功能。 二,外設(shè) Milk-V Duo是一個(gè)基于CV
    發(fā)表于 07-16 01:15

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】1.開箱體驗(yàn)

    感謝算能和電子發(fā)燒友論壇的開發(fā)板試用活動(dòng),有幸體驗(yàn)Milk-V Duo 開發(fā)板Milk-V Duo
    發(fā)表于 07-23 16:00

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開發(fā)板學(xué)習(xí)初體驗(yàn)

    milkv-duo-20230616-2232.img自制成linux啟動(dòng)盤 3、通過Type-C數(shù)據(jù)線連接電腦,小板系統(tǒng)順暢的啟動(dòng)了 登錄Milk-V Duo小板的系統(tǒng)耍耍吧 1、正
    發(fā)表于 07-28 15:58

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】開發(fā)板使用3

    接上文 【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】開發(fā)板使用1 |和接上文 【Milk-V
    發(fā)表于 07-29 08:17

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】milkv-duo 申請(qǐng)成功體驗(yàn)

    任務(wù)處理。 對(duì)于創(chuàng)客和開發(fā)者來說,Milk-V Duo開發(fā)板可能是一個(gè)理想的選擇。它提供了豐富的接口和功能,可以滿足各種創(chuàng)意項(xiàng)目的需求。無論
    發(fā)表于 07-29 14:31

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】初步體驗(yàn) + 搭建開發(fā)環(huán)境

    鏈接依賴過去即可了,后續(xù)可以直接修改文件系統(tǒng)去燒錄?!?b class='flag-5'>Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】OpenCV的交叉編譯 - RISC-V MCU
    發(fā)表于 08-01 12:49

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開發(fā)板初體驗(yàn)

    今天收到 ,打開快遞的第一感覺就是非常精致小巧,一個(gè)黑色的小盒子及一塊非常小巧但功能非常完善的開發(fā)板。 Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能夠運(yùn)行基于LI
    發(fā)表于 08-18 00:26

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】3-Linux控制小車方向

    接上兩篇:【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】2控制螺旋槳電路https://bbs.elecfans.com/jishu_237105
    發(fā)表于 08-20 23:57

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】4-Linux控制小車動(dòng)作(原創(chuàng))首發(fā)

    接上篇: [接上兩篇:【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】3-Linux控制小車方向https://bbs.elecfans.com/
    發(fā)表于 08-21 02:11

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】初體驗(yàn)及開箱視頻

    Duo為專業(yè)人士、工業(yè)OEM企業(yè)、物聯(lián)網(wǎng)愛好者、業(yè)余愛好者、DIYers和創(chuàng)作者提供了一個(gè)可靠、低成本且極具功能的平臺(tái),使他們能夠打造和調(diào)試自己的想法,并將其變成現(xiàn)實(shí)。 開發(fā)板盒子只有口香糖大小,
    發(fā)表于 08-22 23:59

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】②、ssh連接Milk-V Duo開發(fā)板

    承接上期的開箱貼,此次將Milk-V Duo開發(fā)板運(yùn)行l(wèi)inux系統(tǒng)。在此之前需要手頭準(zhǔn)備一張8GB以上的TF卡,并使用讀卡器將TF燒錄Linux鏡像文件。這里需要借助燒寫工具rufus,這款工具
    發(fā)表于 08-29 00:53