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 采集到的数据呢