工具与软件:
您好!
我下面是数据表中的伪代码示例(10.1.6页、第90页)
但是、当我发送 RESET 命令、然后读取状态寄存器(使用 RREG 命令)以检查器件就绪标志时、它始终返回为1。
在发送 RESET 命令之前、该值为0 (本应该如此)。 我曾尝试过更大的延迟和/或不同的 SPI 速度、但结果始终是相同的。
我还尝试了其他库、结果是一样的。
我不知道我是不是在误解什么或者我是在做一些错误的事情。
代码如下
库:
// C++ #include "PUADS124S08.h" void PUADS124S08::deselect() { digitalWrite(cs, HIGH); SPI.endTransaction(); // Wait >~20ns asm ( "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" ); } void PUADS124S08::select() { SPI.beginTransaction(spisett); digitalWrite(cs, LOW); // TODO: Wait 4096 * (1 / freq) asm ( "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" "nop" "\n" ); } PUADS124S08::PUADS124S08(int cs) : cs(cs) { pinMode(cs, OUTPUT); deselect(); } bool PUADS124S08::reset() { select(); SPI.transfer(Commands::RESET); deselect(); delayMicroseconds(100); if (!isready()) { return false; } // TODO: FL_POR flag return true; } bool PUADS124S08::isready() { uint8_t byte = readb(Registers::STATUS); #ifdef DEBUG Serial.println(millis()); Serial.print("Status register: "); Serial.print("0b"); Serial.print(byte, BIN); Serial.println(); #endif return !(byte & 0b01000000); } uint8_t PUADS124S08::readb(uint8_t adrr) { uint8_t com = Commands::RREG | (adrr & 0b00011111); uint8_t r; select(); SPI.transfer(com); SPI.transfer(0x00); r = SPI.transfer(0x00); deselect(); return r; }
主页:
(代码块不工作)
```CPP
// main.cpp
#include
#include
#define MISO 16.
第19章:我是你的
PUADS124S08 ADC1;
void setup(){
延迟(3000);
引脚模式(MISO、输入);
pinMode (MOSI、输出);
Serial.begin(115200);
SPI.begin();
ADC1 = PUADS124S08 (15);
serial.println(adc1.isready());
// adc1.reset ();
while (!ADC1.reset())
{
serial.println ("错误");
delay(1000);
}
serial.println ("ADC Init");
while (1);
}
```μ A
// main.cpp #include <Arduino.h> #include <PUADS124S08.h> #define MISO 16 #define MOSI 19 PUADS124S08 adc1; void setup() { delay(3000); pinMode(MISO, INPUT); pinMode(MOSI, OUTPUT); Serial.begin(115200); SPI.begin(); adc1 = PUADS124S08(15); Serial.println(adc1.isready()); // adc1.reset(); while (!adc1.reset()) { Serial.println("Error"); delay(1000); } Serial.println("ADC Init"); while(1); }
串行:
740063 Status register: 0b11000000 Error ... 740231 Status register: 0b11000000 Error
逻辑分析仪
复位:
RREG:
然后我发送0x00
再次使用0x00来读取 MISO:
电气原理图:
此外、我正在使用 Raspberry PI pico (rp2040)与 Arduino 框架
如果有任何帮助、将不胜感激
谢谢