簡體   English   中英

Raspberry Pi:通過I2C進行通信時出現問題

[英]Raspberry Pi: issue communicating via I2C

我正在嘗試使用I2C接口創建一個簡單的項目。 為此,我在Arduino中創建了一個始終發送單個字節的草圖:

#include <Wire.h>

void setup() {
  Wire.begin(8);
  Wire.onRequest(requestEvent);
}

void loop() {
  delay(100);
}

void requestEvent() {
  Wire.write(0x11);
}

在Raspberry Pi上,有一個Python腳本:

#!/usr/bin/env python3

import smbus
import time

bus = smbus.SMBus(1)

while True:
    try:
        data = bus.read_byte_data(0x8, 0)
        print(data)
    except Exception as e:
        print(e)
    time.sleep(1)

這是它的輸出:

17
17
17
17
17
17
17
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
[Errno 5] Input/output error
17
17
17
17
17
[Errno 5] Input/output error
[Errno 5] Input/output error
17
17

我要弄清楚的是為什么在某些隨機時間點I2C返回錯誤而不是返回數據? 無需更改硬件,RPi上沒有其他任何東西運行,實際上什么也沒有改變,但是I2C停止工作。

有任何想法嗎?

你解決了這個問題嗎?

將Raspberry配置為主服務器時,我也遇到相同的問題。 我認為它們是由於缺少讀寫操作之間的同步所致。 也就是說,我碰巧在完成書寫時可以嘗試閱讀。 不幸的是,如果您認為相反的話,覆盆子也會做一些事情。 這是因為raspberry是一個多線程平台,並且只有一個總線可用(據我所知)。

我通過使用樹莓派上的GPIO引腳和picaxe上的GPIO引腳解決了在樹莓派和picaxe之間添加同步的問題。 這樣,只有在另一個系統發出確定的信號時,我才會讀(寫)。

我希望這種延遲在這種延遲下也能有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM