TI中文支持网
TI专业的中文技术问题搜集分享网站

ads1293 SPI讀值 都為0

請問 我是用的晶片是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;
}
user151383853:

由于离散采样的问题, 设备可能会丢调波形, 分析你的 MCU 采集到的数据呢

赞(0)
未经允许不得转载:TI中文支持网 » ads1293 SPI讀值 都為0
分享到: 更多 (0)