色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

ch347連接mpu6050模塊的方法

CHANBAEK ? 來源:FunIO ? 作者:FunIO ? 2023-07-23 11:04 ? 次閱讀

在上一篇文章 詳解 I2C的末尾,有這樣一張波形圖:

圖片
實(shí)例2

這個對應(yīng)的就是常見的從設(shè)備寄存器讀數(shù)據(jù)的波形,只是在寫數(shù)據(jù)時多了一個字節(jié)。

通用的從 I2C 設(shè)備讀寄存器數(shù)據(jù)的模式應(yīng)該是這樣的:

圖片
從從設(shè)備寄存器讀數(shù)據(jù)示例

在mpu6050 數(shù)據(jù)表 中的9.3 I2C Communications Protocol章節(jié)說明了 mpu6050 的 i2c 接口協(xié)議,符合通用模式。

mpu6050 單字節(jié)寫和加速寫序列如下:

圖片

mpu6050單字節(jié)寫和加速寫

mpu6050 單字節(jié)讀和加速讀序列如下:

圖片

mpu6050單字節(jié)讀和加速讀

上面的加速寫和加速讀都是以 2 個數(shù)據(jù)字節(jié)為例的。

從實(shí)例 2 的波形圖可以看出,啟動傳輸后,寫了0x12``0x13``0x143 個字節(jié),這 3 個字節(jié)后都是NACK,然后是重復(fù)起始信號,跟著剛才地址字節(jié)0x12+10x13,I2C 從寫轉(zhuǎn)換到讀,然后開始讀數(shù)據(jù)字節(jié)。

對應(yīng)代碼為:

result = ch347_driver.i2c_set(device_index, 1)
if result:
    print("Success to set I2C speed.")
else:
    print("Failed to set I2C speed.")

result = ch347_driver.i2c_set_delay_ms(device_index, 1)
if result:
    print("Success to set I2C delay.")
else:
    print("Failed to set I2C delay.")


result = ch347_driver.stream_i2c(device_index, b'x12x13x14', 8)
if result:
    print("Success!")
else:
    print("Failed!")

將上面這段代碼稍加修改:

result = ch347_driver.i2c_set(device_index, 1)
if result:
    print("Success to set I2C speed.")
else:
    print("Failed to set I2C speed.")

result = ch347_driver.i2c_set_delay_ms(device_index, 1)
if result:
    print("Success to set I2C delay.")
else:
    print("Failed to set I2C delay.")


result = ch347_driver.stream_i2c(device_index, b'xd0x75', 1)
if result:
    print("Success! result:", result.hex())
else:
    print("Failed!")

mpu6050 模塊的地址是0b1101000(AD0 = 0),左移 1 位得到設(shè)備寫地址0xd0,讀數(shù)據(jù)時的讀地址 ch347 會自動產(chǎn)生,波形如下:

圖片
讀寄存器0x75

還沒有連接 mpu6050 模塊,所以沒有數(shù)據(jù)返回。現(xiàn)在把 mpu6050 模塊 i2c 接口連接到 ch347 模塊上,運(yùn)行程序,結(jié)果為:

?  python test.py
Successfully opened device index: 0
Device Information:
iIndex: 0
DevicePath: ?USB#VID_1A86&PID_55DB&MI_02#7&2887B016&0&0002#{5446F048-98B4-4EF0-96E8-27994BAC0D00}
UsbClass: 0
FuncType: 1
DeviceID: USBVID_1A86&PID_55DB&MI_02#7&2887B016&0&0002#
ChipMode: 1
DevHandle: 912
BulkOutEndpMaxSize: 512
BulkInEndpMaxSize: 512
UsbSpeedType: 1
CH347IfNum: 0
DataUpEndp: 6
DataDnEndp: 6
ProductString:
ManufacturerString:
WriteTimeout: 500
ReadTimeout: 500
FuncDescStr: USB2.0 To SPI&IIC
FirewareVer: 64
 ch347.mDeviceInforS object at 0x000002465A1E63C0 >
Version Information:
Driver Version: 35
DLL Version: 34
Device Version: 64
Chip Type: 1
Success to set I2C speed.
Success to set I2C delay.
Success! result: 68
Successfully closed device index: 0

可以看到返回了數(shù)據(jù)0x680x75是'WHO_AM_I'寄存器,默認(rèn)值為0x68

圖片
'WHO_AM_I'寄存器

完整代碼:

import ch347

dll_path = "ch347dlla64.dll"  # Replace with the actual path to the DLL
device_index = 0  # Set the device index according to your requirements

ch347_driver = ch347.CH347Driver(dll_path)

result = ch347_driver.open_device(device_index)
if result:
    print(f"Successfully opened device index: {device_index}")
else:
    print(f"Failed to close device index: {device_index}")

result, device_info = ch347_driver.get_device_info(device_index)
if result:
    print("Device Information:")
    print(f"iIndex: {device_info.iIndex}")
    print(f"DevicePath: {device_info.DevicePath.decode()}")
    print(f"UsbClass: {device_info.UsbClass}")
    print(f"FuncType: {device_info.FuncType}")
    print(f"DeviceID: {device_info.DeviceID.decode()}")
    print(f"ChipMode: {device_info.ChipMode}")
    print(f"DevHandle: {device_info.DevHandle}")
    print(f"BulkOutEndpMaxSize: {device_info.BulkOutEndpMaxSize}")
    print(f"BulkInEndpMaxSize: {device_info.BulkInEndpMaxSize}")
    print(f"UsbSpeedType: {device_info.UsbSpeedType}")
    print(f"CH347IfNum: {device_info.CH347IfNum}")
    print(f"DataUpEndp: {device_info.DataUpEndp}")
    print(f"DataDnEndp: {device_info.DataDnEndp}")
    print(f"ProductString: {device_info.ProductString.decode()}")
    print(f"ManufacturerString: {device_info.ManufacturerString.decode()}")
    print(f"WriteTimeout: {device_info.WriteTimeout}")
    print(f"ReadTimeout: {device_info.ReadTimeout}")
    print(f"FuncDescStr: {device_info.FuncDescStr.decode()}")
    print(f"FirewareVer: {device_info.FirewareVer}")
    print(repr(device_info))
else:
    print("Failed to get device information.")

result, driver_ver, dll_ver, device_ver, chip_type = ch347_driver.get_version(device_index)
if result:
    print("Version Information:")
    print(f"Driver Version: {driver_ver}")
    print(f"DLL Version: {dll_ver}")
    print(f"Device Version: {device_ver}")
    print(f"Chip Type: {chip_type}")
else:
    print("Failed to get version information.")

result = ch347_driver.i2c_set(device_index, 1)
if result:
    print("Success to set I2C speed.")
else:
    print("Failed to set I2C speed.")

result = ch347_driver.i2c_set_delay_ms(device_index, 1)
if result:
    print("Success to set I2C delay.")
else:
    print("Failed to set I2C delay.")


result = ch347_driver.stream_i2c(device_index, b'xd0x75', 1)
if result:
    print("Success! result:", result.hex())
else:
    print("Failed!")


# Example usage of CH347CloseDevice
result = ch347_driver.close_device(device_index)
if result:
    print(f"Successfully closed device index: {device_index}")
else:
    print(f"Failed to close device index: {device_index}")

接下來就可以對 mpu6050 各種功能進(jìn)行封裝,然后在電腦上直接獲取傳感器數(shù)據(jù)了。

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

    關(guān)注

    7

    文章

    2730

    瀏覽量

    47649
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

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

    關(guān)注

    28

    文章

    1495

    瀏覽量

    124231
  • MPU6050
    +關(guān)注

    關(guān)注

    39

    文章

    307

    瀏覽量

    71556
收藏 人收藏

    評論

    相關(guān)推薦

    MPU6050連接失敗錯誤

    大家好,我想知道是否有人能快速瀏覽一下我的項(xiàng)目,讓我知道我做錯了什么。這是我從山姆的博客下載的一個項(xiàng)目,我遵循了他推薦的內(nèi)容。代碼運(yùn)行但引發(fā)了一個錯誤:“MPU6050連接失敗”,然后打印0遍。我想
    發(fā)表于 10-24 16:57

    MPU6050模塊

    2.4 STM32 MPU6050數(shù)據(jù)獲取(IIC + DMP)本篇文章主要針對廉價的MPU6050模塊。我們這里完成了MPU6050的數(shù)據(jù)獲取、零偏自動設(shè)置、溫漂抑制。這里提供源碼工
    發(fā)表于 08-09 07:17

    使用esp32連接mpu6050讀取角度數(shù)據(jù)

    使用esp32連接mpu6050,讀取角度(這里只是讀取角度,其他的自行去查閱,很多廠家都有例程的)。這邊使用的是維特一家廠家的(他們的技術(shù)服務(wù)很好),看了官方的arduino例程,發(fā)現(xiàn)他們
    發(fā)表于 02-10 07:11

    MPU6050(硬件IIC)

    MPU6050(硬件IIC)MPU6050(硬件IIC)
    發(fā)表于 04-02 16:29 ?79次下載

    Arduino與MPU6050的通信

    為避免糾纏于電路細(xì)節(jié),我們直接使用集成的MPU6050模塊MPU6050的數(shù)據(jù)接口用的是I2C總線協(xié)議,因此我們需要Wire程序庫的幫助來實(shí)現(xiàn)Arduino與MPU6050之間的通信
    發(fā)表于 11-07 14:25 ?7851次閱讀
    Arduino與<b class='flag-5'>MPU6050</b>的通信

    mpu6050怎么與單片機(jī)連接

    本文開始介紹了mpu6050的定義和mpu6050的感測范圍,其次闡述了mpu6050特征,最后介紹了mpu6050與單片機(jī)的連接
    發(fā)表于 03-09 08:42 ?2.7w次閱讀

    Arduino與MPU6050連接的代碼詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Arduino與MPU6050連接的代碼詳細(xì)資料免費(fèi)下載。
    發(fā)表于 07-23 08:00 ?4次下載
    Arduino與<b class='flag-5'>MPU6050</b><b class='flag-5'>連接</b>的代碼詳細(xì)資料免費(fèi)下載

    怎樣將Arduino與MPU6050連接

    在進(jìn)入項(xiàng)目之前,您需要了解MPU6050傳感器的一些基礎(chǔ)知識。 MPU-6050是一種IMU傳感器,在單個芯片上包含MEMS(微機(jī)電系統(tǒng))加速度計(jì)和MEMS陀螺儀。
    的頭像 發(fā)表于 07-29 08:56 ?3.8w次閱讀

    MPU6050專用穩(wěn)壓模塊的原理圖設(shè)計(jì)

    MPU6050專用穩(wěn)壓模塊的原理圖設(shè)計(jì)
    發(fā)表于 11-07 19:21 ?42次下載
    <b class='flag-5'>MPU6050</b>專用穩(wěn)壓<b class='flag-5'>模塊</b>的原理圖設(shè)計(jì)

    MPU6050簡介

    MPU6050簡介什么是MPU6050MPU6050的特點(diǎn)MPU6050框圖MPU6050初始化MPU6050—DMP使用介紹
    發(fā)表于 12-06 11:51 ?76次下載
    <b class='flag-5'>MPU6050</b>簡介

    mpu6050使用 基于esp32

    使用esp32連接mpu6050,讀取角度(這里只是讀取角度,其他的自行去查閱,很多廠家都有例程的)。這邊使用的是維特一家廠家的(他們的技術(shù)服務(wù)很好),看了官方的arduino例程,發(fā)現(xiàn)他們
    發(fā)表于 12-06 12:36 ?10次下載
    <b class='flag-5'>mpu6050</b>使用 基于esp32

    GY-521模塊--MPU6050芯片基本學(xué)習(xí)(一)

    GY-521模塊--MPU6050芯片學(xué)習(xí)(一)一、模塊介紹二、MPU6050MPU6050 的特點(diǎn):MPU6050檢測軸示意圖
    發(fā)表于 12-06 13:36 ?32次下載
    GY-521<b class='flag-5'>模塊</b>--<b class='flag-5'>MPU6050</b>芯片基本學(xué)習(xí)(一)

    MPU6050( )

    MPU6050( )
    發(fā)表于 12-06 15:06 ?31次下載
    <b class='flag-5'>MPU6050</b>( )

    高速USB轉(zhuǎn)接芯片CH347技術(shù)手冊

    電子發(fā)燒友網(wǎng)站提供《高速USB轉(zhuǎn)接芯片CH347技術(shù)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 15:29 ?7次下載
    高速USB轉(zhuǎn)接芯片<b class='flag-5'>CH347</b>技術(shù)手冊

    高速USB轉(zhuǎn)接芯片 CH347

    CH347 是一款高速 USB 總線轉(zhuǎn)接芯片,通過 USB 總線提供異步串口、I2C 同步串行接口、SPI 同 步串行接口和 JTAG 接口等。 在異步串口方式下,CH347 提供了 2 個
    的頭像 發(fā)表于 04-28 11:27 ?3061次閱讀
    高速USB轉(zhuǎn)接芯片 <b class='flag-5'>CH347</b>
    主站蜘蛛池模板: 日本在线免费| 国产精品无码视频一区二区| 男人有噶坏| 国产精华av午夜在线观看| 伊人综合在线影院| 如懿传免费观看在线全集| 精品亚洲午夜久久久久| z0000性欧美| 一个人免费观看在线视频播放| 欧美成人免费观看久久| 激情综合色| 国产精品av| 国产精品久久久久a影院| beeg日本老师按摩| 亚洲色在线| 视频三区 国产盗摄| 男人日女人的b| 欧美成人国产| 人妻中文字幕乱人伦在线| 快穿女主有名器的H纯肉黄暴拉文| 国产福利视频第一导航| 国产成人高清精品免费观看| 999久久狠狠免费精品| 亚洲高清毛片一区二区| 日韩精品一区VR观看| 男同志vdieos免费| 欧美成人性色生活18黑人| 欧美一区二区影院| 男人叼女人| 欧美高清vivoesond在线播放| 嗯啊插的好深啊使劲抽视频| 欧美成ee人免费视频| 日本成熟bbxxxxxxxx| 婷婷五月久久精品国产亚洲| 青青视频国产色偷偷| 欧美成人精品高清在线观看| 青青青青久久久久国产的| 无码AV免费精品一区二区三区| 青青草国产自偷拍| 伸到同桌奶罩里捏她胸h| 亚洲国产精品一区二区动图 |