99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

Milk-V Duo開發(fā)板免費體驗 I2C分析

wakojosin ? 來源:wakojosin ? 作者:wakojosin ? 2023-07-21 10:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

I2C需要分兩部分進(jìn)行修改,第一部分是設(shè)備樹的配置,這部分主要是有關(guān)I2C控制器相關(guān)的參數(shù)、中斷等,另一部分是硬件引腳的配置,由于驅(qū)動用的是i2c-designware的通用驅(qū)動,所以需要讀取進(jìn)行IO初始化,這就出現(xiàn)了額外的操作,希望后面對驅(qū)動進(jìn)行適配,可以從設(shè)備樹對引腳進(jìn)行配置,自動完成初始化。

下面就來看看I2C驅(qū)動的大概過程吧:

設(shè)備樹

// linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base.dtsi
i2c0: i2c@04000000 {
	compatible = "snps,designware-i2c";
	clocks = ;
	reg = ;
	clock-frequency = ;

	#size-cells = ;
	#address-cells = ;
	resets = ;
	reset-names = "i2c0";
};

// linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base_riscv.dtsi
i2c0: i2c@04000000 {
	interrupts = ;
	interrupt-parent = ;
};

驅(qū)動源碼

使用的是i2c designware的框架。

控制器驅(qū)動

// linux_5.10/drivers/i2c/busses/i2c-designware-platdrv.c
dw_i2c_plat_probe(struct platform_device *pdev):
	i2c_dw_probe(struct dw_i2c_dev *dev)
		i2c_dw_probe_master(struct dw_i2c_dev *dev)
			i2c_add_numbered_adapter(struct i2c_adapter *adap)
				i2c_add_adapter(struct i2c_adapter *adapter)
					i2c_register_adapter(struct i2c_adapter *adap)
						device_register(struct device *dev) // 注冊設(shè)備

設(shè)備驅(qū)動

// linux_5.10/drivers/i2c/i2c-core-base.c
i2c_register_driver(struct module *owner, struct i2c_driver *driver)
	driver_register(&driver->driver); // 注冊驅(qū)動

通過device_register和driver_register會進(jìn)行match和probe的操作,從而關(guān)聯(lián)起來I2C適配器和設(shè)備驅(qū)動。

對于詳細(xì)得展開需要進(jìn)一步的學(xué)習(xí)。

應(yīng)用編程

i2c的驅(qū)動編程就是open/read/write/ioctrl這一套。

uint8_t reg_addr = 0x00;
uint8_t data_buf[2];

// 打開設(shè)備
int i2c_fd = open("/dev/i2c-0", O_RDWR);

// 方式一:
// 設(shè)置從機地址
ioctl(i2c_fd, I2C_SLAVE, slave_addr);
write(i2c_fd, 0, ?_addr, 1);
read(i2c_fd, 0, data_buf, 2);

// 方式二:
struct i2c_rdwr_ioctl_data rdwr;
struct i2c_msg msgs[2];
msgs[0].addr  = I2C_SLAVE;
msgs[0].flags = 0;
msgs[0].len   = 1;
msgs[0].buf   = ?_addr;
msgs[1].addr  = I2C_SLAVE;
msgs[1].flags = I2C_M_RD;
msgs[1].len   = 2;
msgs[1].buf   = data_buf;
rdwr.msgs  = msgs;
rdwr.nmsgs = 2;
ioctl(file, I2C_RDWR, &rdwr);

以上兩種方式選擇其中一種就行。

接下去就用溫濕度傳感器測試一下i2c總線的使用,演示過程后面通過視頻展示。

審核編輯:湯梓紅

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

    關(guān)注

    114

    文章

    17100

    瀏覽量

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

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127799
  • 溫濕度傳感器
    +關(guān)注

    關(guān)注

    5

    文章

    600

    瀏覽量

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

    關(guān)注

    25

    文章

    5679

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    Milk-V Duo S 開發(fā)板免費體驗】1-開箱和燒寫鏡像

    感謝電子發(fā)燒友和Milk-V提供的評測機會。 開發(fā)板簡介 我以前在電子發(fā)燒友評測過Milk-V Duo,也曾經(jīng)帶學(xué)生打過集創(chuàng)賽算能賽道,對他們的產(chǎn)品有所了解。
    發(fā)表于 07-02 20:42

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

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

    Milk-V Duo 開發(fā)板免費體驗】Milk-V Duo之開箱初體驗

    一,第一印象 外觀設(shè)計方面,Milk-V Duo以簡約而精致的風(fēng)格為主,采用沉金工藝,給人一種高端大氣的感覺。開發(fā)板的尺寸小巧,便于攜帶和使用,在我拿到的所有的開發(fā)板中,也只有
    發(fā)表于 07-16 01:15

    Milk-V Duo 開發(fā)板免費體驗】1.開箱體驗

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

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

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

    Milk-V Duo 開發(fā)板免費體驗】開發(fā)板使用3

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

    Milk-V Duo 開發(fā)板免費體驗】milkv-duo 申請成功體驗

    。 引腳圖 總結(jié) Milk-V Duo開發(fā)板的小巧精致設(shè)計和強悍的性能確實為創(chuàng)客和開發(fā)者提供了一個優(yōu)秀的平臺。它的緊湊設(shè)計使得它適用于各種空間有限的場景,同時強大的性能可以支持復(fù)雜
    發(fā)表于 07-29 14:31

    Milk-V Duo 開發(fā)板免費體驗】Milk-V Duo 開發(fā)板初體驗

    Milk-V Duo開發(fā)板(圖4)是一款基于CV1800B芯片(RISC-V架構(gòu),C906@1Ghz +
    發(fā)表于 08-18 00:26

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

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

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

    Milk-V Duo 開發(fā)板免費體驗】2控制螺旋槳電路https://bbs.elecfans.com/jishu_2371054_1_
    發(fā)表于 08-21 02:11

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

    剛剛收到開發(fā)板,給大家做個視頻來初步了解以下Milk-V Duo 開發(fā)板。 Milk-V Duo
    發(fā)表于 08-22 23:59

    Milk-V Duo開發(fā)板免費體驗】評測三、I2C功能摸索

    調(diào)試milkv duoi2c功能
    的頭像 發(fā)表于 07-28 08:59 ?2067次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費</b>體驗】評測三、<b class='flag-5'>I2C</b>功能摸索