ads1293 SPI讀值 都為0
时间:10-02
整理:3721RD
点击:
請問 我是用的晶片是STM32F429,我要使用SPI訊號讀取ADS1293的暫存器,
但是回傳值很奇怪,在Logic Analyzer上看到的,ADS129似乎是會有一些反應
但是時間都想當短,跟SCLK都對應不上(如下圖),圖中DRDYB也是都只有小小的一個訊號突然出現而已。

我現在只是單獨測試ADS1293的操作,我只有接IN1、IN2為輸入訊號,也沒有使用到右腿驅動,
故我將SDM2、3及INA2、3都關閉,其餘設定也是參考DataSheet的範例設定去做。
我也有測試過只單獨讀取ADS1293的REVID暫存器,回傳值也都為0。
void getADS1293_ID(SPI_HandleTypeDef *hspi)
{
uint16_t ID[] = {REVID};
uint16_t IDr[]= {0};
SPI1_CS_L();
HAL_SPI_TransmitReceive(hspi,ID,IDr,1,5000);/*Read Data*/
SPI1_CS_H();
}
底下是我初始化ADS1293的設定,及讀取ADS1293時的程式碼,麻煩大家幫我看一下了,謝謝
void ADS1293_Init(){
unsigned char lengh = 7;
uint16_t REG[lengh];
uint16_t Value[lengh];
REG[0] = FLEX_CH1_CN;
Value[0] = POS_CH_IN1|NEG_CH_IN1;
REG[1] = OSC_CN;
Value[1] = STRTCLK;
REG[2] = AFE_SHDN_CN;
Value[2] = SHDN_SDM_CH3|SHDN_SDM_CH2|SHDN_INA_CH3|SHDN_INA_CH2;
REG[3] = R2_RATE;
Value[3] = R2_RATE_5;
REG[4] = R3_RATE_CH1;
Value[4] = R3_RATE_6;
REG[5] = DRDYB_SRC;
Value[5] = DRDYB_CH1_ECG;
REG[6] = CH_CNFG;
Value[6] = E1_EN|STS_EN;
for(int i=0;i<lengh;i++){
write_register(&hspi1,REG[i],Value[i]);
}
}
uint16_t* Read_register(SPI_HandleTypeDef *hspi,unsigned char address)
{
uint16_t add[] = {(Read|address)<<8};
static uint16_t Rx[]={0};
SPI1_CS_L();
HAL_SPI_TransmitReceive(hspi,add,Rx,1, 5000); /*send Address&Command*/
SPI1_CS_H();
return Rx;
}
由于离散采样的问题, 设备可能会丢调波形, 分析你的 MCU 采集到的数据呢
