在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ch347連接mpu6050模塊的方法

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

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

圖片
實例2

這個對應的就是常見的從設備寄存器讀數據的波形,只是在寫數據時多了一個字節。

通用的從 I2C 設備讀寄存器數據的模式應該是這樣的:

圖片
從從設備寄存器讀數據示例

在mpu6050 數據表 中的9.3 I2C Communications Protocol章節說明了 mpu6050 的 i2c 接口協議,符合通用模式。

mpu6050 單字節寫和加速寫序列如下:

圖片

mpu6050單字節寫和加速寫

mpu6050 單字節讀和加速讀序列如下:

圖片

mpu6050單字節讀和加速讀

上面的加速寫和加速讀都是以 2 個數據字節為例的。

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

對應代碼為:

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 位得到設備寫地址0xd0,讀數據時的讀地址 ch347 會自動產生,波形如下:

圖片
讀寄存器0x75

還沒有連接 mpu6050 模塊,所以沒有數據返回。現在把 mpu6050 模塊 i2c 接口連接到 ch347 模塊上,運行程序,結果為:

?  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

可以看到返回了數據0x680x75是'WHO_AM_I'寄存器,默認值為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 各種功能進行封裝,然后在電腦上直接獲取傳感器數據了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2785

    瀏覽量

    49891
  • 寄存器
    +關注

    關注

    31

    文章

    5427

    瀏覽量

    123731
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1538

    瀏覽量

    127251
  • MPU6050
    +關注

    關注

    39

    文章

    310

    瀏覽量

    72865
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    MPU6050連接失敗錯誤

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

    MPU6050模塊

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

    使用esp32連接mpu6050讀取角度數據

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

    MPU6050(硬件IIC)

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

    Arduino與MPU6050的通信

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

    mpu6050怎么與單片機連接

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

    Arduino與MPU6050連接的代碼詳細資料免費下載

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

    怎樣將Arduino與MPU6050連接

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

    MPU6050專用穩壓模塊的原理圖設計

    MPU6050專用穩壓模塊的原理圖設計
    發表于 11-07 19:21 ?42次下載
    <b class='flag-5'>MPU6050</b>專用穩壓<b class='flag-5'>模塊</b>的原理圖設計

    MPU6050簡介

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

    mpu6050使用 基于esp32

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

    GY-521模塊--MPU6050芯片基本學習(一)

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

    C語言 | 基于STM32的MPU6050模塊程序(主程序)

    C語言 | 基于STM32的MPU6050模塊程序(主程序)
    發表于 12-06 15:06 ?56次下載
    C語言 | 基于STM32的<b class='flag-5'>MPU6050</b><b class='flag-5'>模塊</b>程序(主程序)

    高速USB轉接芯片CH347技術手冊

    電子發燒友網站提供《高速USB轉接芯片CH347技術手冊.pdf》資料免費下載
    發表于 09-09 15:29 ?7次下載
    高速USB轉接芯片<b class='flag-5'>CH347</b>技術手冊

    高速USB轉接芯片 CH347

    CH347 是一款高速 USB 總線轉接芯片,通過 USB 總線提供異步串口、I2C 同步串行接口、SPI 同 步串行接口和 JTAG 接口等。 在異步串口方式下,CH347 提供了 2 個
    的頭像 發表于 04-28 11:27 ?3706次閱讀
    高速USB轉接芯片 <b class='flag-5'>CH347</b>
    主站蜘蛛池模板: 亚洲成人在线电影 | 亚洲色播永久网址大全 | 她也啪97在线视频 | 欧美无限看 | 五月丁香六月综合缴清无码 | 在线免费看高清视频大全 | 亚洲国产福利精品一区二区 | 亚洲香蕉毛片久久网站老妇人 | 婷婷月| 午夜免费毛片 | 国产日本在线观看 | 91福利视频免费 | 国产高清一区二区三区四区 | 玖玖玖精品视频免费播放 | asian极品呦女爱爱 | 国产黄色小视频在线观看 | 国产精品黄网站免费观看 | 毛片污| 五月天停婷基地 | xxxx日本在线播放免费不卡 | 91在线激情在线观看 | 久久综合九色综合欧美狠狠 | 在线资源天堂 | 国产精品波多野结衣 | 国产精品久久久久影视不卡 | 久久国内精品视频 | 丁香午夜婷婷 | 天天摸天天爽天天澡视频 | 99色在线观看 | 永久免费在线看 | 久久天天躁狠狠躁夜夜爽 | 一级毛片看真人在线视频 | 超级狂色而且免费又超好看 | 日本不卡视频免费的 | 一级免费黄色片 | 好硬好湿好爽再深一点h | 欧美三级免费看 | 额去鲁97在线观看视频 | 美女扒开尿口给男人捅 | 成人爽a毛片在线视频网站 成人窝窝午夜看片 | 国产一区二区三区美女在线观看 |