大家好、我是一名韩国初学者、所以请注意、我不太喜欢使用 Eng
我正在使用 ADS1292R 开发面向 Arduino 的 ECG 套件、支持4个工作区。 但我现在有问题。
问题是、即使是 SDATAC、SPI 通信剂量也根本不起作用。 我不知道硬件或软件的原因…
我已经对硬件进行了两次检查、但没有短路。
以下是我发现 SPI 通信不起作用的方式:
test1.[>>>发出复位噪声>将 START 引脚切换为高电平>检查 DRDY 是否持续变为高电平-低电平(使用示波器)>将 START 引脚切换为低电平>发出 SDATAC 以停止连续读取数据模式> 再次将 START 引脚切换为高电平>检查 DRDY 是否始终保持低 电平 DRDY 仍将持续变为高电平-低电平 (我猜到、如果 SDATAC 命令停止连续读取数据模式、DRDY 会保持低电平)]
是否有人遇到过相同的问题? 您有任何故障排除建议吗?
您能在我使用的以下代码、SPI 配置或原理图上找到导致此问题的原因吗?
//~~~~~~~~~~~~~~~ //
#include
//~~跳过寄存器和命令定义~~//
void send_Command (int cmd){
digitalWrite (PIN_CS、低电平);
delayMicroseconds (1);
spi.transfer (cmd);
delayMicroseconds (6);
digitalWrite (PIN_CS、HIGH);
delayMicroseconds (5);
}
void init_Pins(){
引脚模式(SCLK、输出);//pin13
PinMode (DIN、输出);//MOSIpin11
引脚模式(DOUT、输入);//MISOpin12
引脚模式(PIN_CS、输出);//pin10
引脚模式(PIN_RESET、输出);//pin7
引脚模式(PIN_START、输出);//PIN8
引脚模式(PIN_DRDY、输入);//pin9
digitalWrite (PIN_CS、HIGH);
digitalWrite (PIN_START、LOW);
延迟(1);
}
void init_Serial(){
Serial.begin(9600);
serial.flush();
delayMicroseconds (100);
}
void init_spi(){
SPI.begin();
SPI.setDataMode(SPI_MODE1);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setBitOrder(MSBFIRST);
}
void init_ads(){
digitalWrite (PIN_RESET、HIGH);
延迟(1000);
digitalWrite (PIN_RESET、LOW);
延迟(1000);
digitalWrite (PIN_RESET、HIGH);
延迟(100);//发出复位脉冲
digitalWrite (PIN_CS、低电平);
延迟(1000);
digitalWrite (PIN_CS、HIGH);
延迟(500);//重置通信
SEND_Command (SDATAC);
digitalWrite (PIN_START、HIGH);
}
void setup(){
延迟(3000);
init_Pins();
init_Serial();
init_spi();
init_ads();
}
void loop(){
}
//~~~~~~~~~~~~~~~ //
所有 ADS1292R 寄存器都是默认值(因为我根本无法通过 SPI 进行通信)
原理图
3V3由 Arduino 3.3V 提供。
1.8k:3.3k 逻辑转换器。
我独自学习、因此我没有任何人可以确认我的设计...
即使我知道 DVDD 和 AVDD 或 DGND 和 AGND 必须在订购 PCB 后分离...
黄色:DIN (0x0A:SDATAC)
蓝色:SCLK
事务期间 CS (低电平)
DRDY
请帮帮我。。
谢谢


