无法使用 Earlphilhower 的 Arduino-Pico 初始化 Pico RP2040 上用于 AS5601 库的 I2C 引脚

问题描述 投票:0回答:1

我正在使用 Earlphilhower 的 Arduino-Pico 和 这个 AS5601 库来测试我的 AS5601 分线板。 以下是我正在运行的示例代码:

#include "Arduino.h"
#include "AS5601.h"

AS5601 Sensor;

void setup()
{
    Wire.begin();
    delay( 1000 );
    Serial.begin( 115200 );
    Serial.println( F("Angle Measurement with AS5601") );
}

void loop()
{
    Serial.print( F("Magnitude: ") );
    Serial.print( Sensor.getMagnitude() );

    Serial.print( F(" | Raw angle: ") );
    Serial.print( Sensor.getRawAngle() );

    Serial.print( F(" | Clean angle: ") );
    Serial.print( Sensor.getAngle() );

    if ( Serial.read() == '0' )
    {
        Sensor.setZeroPosition();
        Serial.print( F(" | Zero position set!") );
    }

    Serial.println();

    delay( 50 );
}

但我无法从传感器读取任何内容,但这整个设置适用于我的 teesny 3.5 我知道初始化 Pico 的 I2C 引脚时存在一些问题,但在互联网上搜索后我无法弄清楚,请帮助我。

我在网上彻底搜索,但无法弄清楚。

我尝试在 AS%601.h lib 文件中设置 sda 和 scl 引脚:

            wireChannel = &Wire;
            wireChannel->setSCL(5);
            wireChannel->setSDA(4);
            wireChannel->begin();

像这样,但它不起作用,而且当我这样做时,我的电脑中没有检测到主板,每当我运行此代码时,就会发生这种情况,就像每当我设置这些引脚声明时一样。

请帮助我在我的 Pico RP2040 中正确初始化 i2c,以便我可以使用 AS5601。

arduino i2c raspberry-pi-pico platformio rp2040
1个回答
0
投票
void loop() {
  Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
  Wire.write(AS5600_AS5601_REG_RAW_ANGLE);
  Wire.endTransmission(false);
  Wire.requestFrom(AS5600_AS5601_DEV_ADDRESS, 2);
  uint16_t RawAngle = 0;
  RawAngle  = ((uint16_t)Wire.read() << 8) & 0x0F00;
  RawAngle |= (uint16_t)Wire.read();

  Wire.beginTransmission(AS5600_AS5601_DEV_ADDRESS);
  Wire.write(AS5600_AS5601_REG_ANGLE);
  Wire.endTransmission(false);
  Wire.requestFrom(AS5600_AS5601_DEV_ADDRESS, 2);
  uint16_t Angle = 0;
  Angle  = ((uint16_t)Wire.read() << 8) & 0x0F00;
  Angle |= (uint16_t)Wire.read();

  Serial.print(RawAngle);
  Serial.print(",");
  Serial.println(Angle);

尝试运行这个,我只是直接使用了regs

© www.soinside.com 2019 - 2024. All rights reserved.