主题中讨论的其他器件: ADS1258
我已经使用 STM32中的软件 SPI1来驱动 ADS1259芯片、SPI 的速度为250kHz。
当我打开系统电源时、我等待200ms、然后 初始化 ADS1259、并执行如下复位:
//
硬件复位模式 void ADS1259_reset (void) { ADS1259_Init_delay (delay_time_reset); ADS1259_reset_L; ADS1259_Init_delay (delay_time_reset); ADS1259_reset_H; ADS1259_Init_delay (delay_time_reset); }
然后发送数据路径命令
void ADS1259_init (void) { ADS1259_Init_delay (delay_time_reset); ADS1259_reset (ADS1259_Init_delay (delay_time_reset); ADS1259_write (CMD_SDATAC);//停止连续读取数据模式 ADS1259_Init_short_delay (delay);ADS1259_short_delay (ADS1259_short_delay);ADS1259_delay (ADS1259_delay)/ADS1259_short_delay (short_delay);ADS1259_delay (ADS1259_delay)+ ADS1259_short_short_delay);ADS1259/ ADS1259_delay (ADS1259_short_short_delay (ADS1259_delay);ADS1259_short_delay (ADS1259_delay)/ADS1259_delay (ADS1259_delay)/ADS1259_short_delay (ADS1259_delay);ADS1259 ADS1259_WRITE (0x00); ADS1259_Init_short_delay (delay_short); //fSC[2:0] ADS12559_write (0x00); ADS1259_Init_short_delay (delay_short); ADS1259_write (0x00); ADS1259_Init_short_delay (delay_short); ADS1259_write (0x40); #endif ADS1259_Init_delay (delay_time_reset); }
while 循环、我调用函数:
void ADS1259_Read_Reg_Enable (void) { ADS1259_Init_short_delay (delay_short); ADS1259_write (CMD_SDATAC);//停止连续读取数据模式 ADS1259_Init_short_delay (delay_short); ADS1259_write (0x20);//第一个操作码、 ADS1259_short_delay (in_delay);ADS1259_short_delay (in_delay);ADS1259_delay (in_dimay)
要读取寄存器值、
但是、在我刷写芯片并运行 THR MCU 后、
我获取以下数据:
ADS1259_REG[0]= 0x25
ADS1259_REG[1]= 0x8
ADS1259_REG[2]= 0xc0
ADS1259_REG[3]= 0x0
ADS1259_REG[4]= 0x0
ADS1259_REG[5]= 0x0
ADS1259_REG[6]= 0x0
ADS1259_REG[7]= 0x0
ADS1259_REG[8]= 0x40
第一个数据是来自数据表的 diff (复位值为10XX0101b)、这会导致我根本不写入任何寄存器。
然后、我编写如下所示的寄存器:
ADS1259_WRITE (0x40);//从00h ADS1259_Init_short_delay (delay_short)开始写入; ADS1259_write (0x08);//写入9 reg 8+1=9 ADS1259_Init_short_delay (delay_short_short_delay); ADS1259_delay (0x05_short_delay);// ADS1259_short_short_delay (ADS1259_short_short_delay) ;ADS1259_delay (ADS1259_short_short_short_short_delay);ADS1259_delay (ADS1259_short_short_short_short_delay);ADS1259/ ADS1259_delay (ADS1259_short_short_short_short_short_delay (0x59_delay);ADS1259_short_delay (ADS1259_short_short_short_short_short_short_delay ( 0x59_ ADS1259_WRITE (0x00); ADS1259_Init_short_delay (delay_short); //fSC[2:0] ADS12559_write (0x00); ADS1259_Init_short_delay (delay_short); ADS1259_write (0x00); ADS1259_Init_short_delay (delay_short); ADS1259_write (0x40);
结果是相同的,没有任何变化,
我再次获取以下数据:
ADS1259_REG[0]= 0x25
ADS1259_REG[1]= 0x8
ADS1259_REG[2]= 0xc0
ADS1259_REG[3]= 0x0
ADS1259_REG[4]= 0x0
ADS1259_REG[5]= 0x0
ADS1259_REG[6]= 0x0
ADS1259_REG[7]= 0x0
ADS1259_REG[8]= 0x40
有人可以告诉我原因吗?
从寄存器读取和 写入寄存器的过程中是否出错?
非常感谢



