主题中讨论的其他器件:ADS1262
正如 Chris 建议的那样、我继续、但没有任何问题得到解决。 当我看到 TI 给出的示例时、从我的角度来看、问题仍然存在基本问题
- 如何配置初始化哪个 ADC 以及在何处读取其数据、因为 ADC 具有11个通道编号 一个示例
- 数据表中未提供时序图(这无疑为我们提供了了解其工作原理的简单方法)
- 我已经完成了一些初始化、如下所示、但不知道问题在哪里
/////////////////////////////////////////////////////// 包括文件////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "ADS1263.h" ////////////////////////////////////////////////////////////////////////// 引脚声明//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// GPIOE_ODR.B2上的 sbit defADC1263_RESETPin; GPIOE_ODR.B3上的 sbit defADC1263_STARTpin; sbit defADC1263_CSPin GPIOE_ODR.B4; GPIOE_ODR.B5上的 sbit defADC1263_DRDYPin; sbit defADC1263_SCKPin 在 GPIOB_ODR.B3;// sbit defADC1263_DOUTPin 在 GPIOB_ODR.B4;// sbit defADC1263_DINPin 在 GPIOB_ODR.B5;// char j; // ADS1262.h - ADS1262 Shield Arduino Firmwar 的库。 由 Protocentral 创建、2013年12月27日。 发布到公共领域。 */ char* ads1262_read_Data(){ 静态 char SPI_Dummy_buff [6]; defADC1263_CSPin_Clr; 对于(j = 0;j < 6;+j){ SPI_Dummy_buff [j]= SPI3_read (CONFIG_SPI_MASTER_Dummy_D); } defADC1263_CSPIN_SET; 返回 SPI_Dummy_buff; } void ads1262_Init(){ GPIO_Digital_Output (&GPIOB_BASE、_GPIO_PINMASK_3 |_GPIO_PINMASK_5); GPIO_Digital_Output (&GPIOE_base、_GPIO_PINMASK_2 |_GPIO_PINMASK_3 |_GPIO_PINMASK_4); GPIO_Digital_Input (&GPIOE_base、_GPIO_PINMASK_5); GPIO_Digital_Input (&GPIOB_BASE、_GPIO_PINMASK_4); //defADC1263_RESETPIN_SET; //defADC1263_STARTPin_SET; //defADC1263_CSPIN_SET; //defADC1263_SCKPIN_SET; //defADC1263_DINPIN_SET; //while (1); //启动 SPI 库: // SPI.begin(); // SPI.setBitOrder(MSBFIRST); //CPOL = 0、CPHA = 1 // SPI.setDataMode(SPI_MODE1); //为 SPI 选择1MHz 时钟 // SPI.setClockDivider(SPI_CLOCK_DIV8);// DIV16 // hs // SPI2_Init (); SPI3_Init (); ads1262_Reset(); delay_ms (100); // ads1262_Disable_Start (); // ads1262_Enable_Start (); ads1262_Hard_Stop(); // ads1262_Start_Data_Conv_Command (); // ads1262_SOFT_Stop (); delay_ms (50); // ads1262_Stop_Read_Data_Continuous(); // SDATAC 命令 delay_ms (300); ADs1262_Reg_Write (POWER、0x11); //将采样率设置为125SPS delay_ms (10); ADs1262_ReG_Write (interface、0x05); //导联脱落补偿关闭、测试信号禁用 delay_ms (10); ADs1262_Reg_Write (MODE0、0x00); //lead-off 默认值 delay_ms (10); ADs1262_Reg_Write (MODE1、0x80); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (Mode2、0x06); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (INPMUX、0x01); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (OFCAL0、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (OFCAL1、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (OFCAL2、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (FSCAL0、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (FSCAL1、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (FSCAL2、0x40); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (IDACMUX、0xBB); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (IDACMAG、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (REFMUX、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_ReG_Write (TDACP、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (TDACN、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (GPIOCON、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (GPIODIR、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (GPIODAT、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2CFG、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2MUX、0x01); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2OFC0、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2OFC1、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2FSC0、0x00); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ADs1262_Reg_Write (ADC2FSC1、0x40); //Ch 1被启用、增益6、被连接至中的电极 delay_ms (10); ads1262_Start_Read_Data_Continuous(); delay_ms (10); ads1262_Enable_Start(); } void ads1262_Reset(){ defADC1263_RESETPIN_SET; delay_ms (100); //等待100毫秒 defADC1263_RESETPin_Clr; delay_ms (100); defADC1263_RESETPIN_SET; delay_ms (100); } void ads1262_Disable_Start (){ defADC1263_STARTPin_Clr; delay_ms (20); } void ads1262_Enable_Start (){ defADC1263_STARTPin_SET; delay_ms (20); } void ads1262_Hard_Stop (void){ defADC1263_STARTPin_Clr; delay_ms (100); } void ads1262_Start_Data_Conv_Command (void){ ads1262_SPI_Command_Data (开始); //将0x08发送到 ADS1x9x } void ads1262_SOFT_Stop (void){ ads1262_SPI_Command_Data (停止); //将0x0A 发送到 ADS1x9x } void ads1262_Start_Read_Data_Continuous (void){ ads1262_SPI_Command_Data (RDATAC); //将0x10发送到 ADS1x9x } void ads1262_Stop_Read_Data_Continuous (void){ ads1262_SPI_Command_Data (SDATAC); //将0x11发送到 ADS1x9x } void ads1262_SPI_Command_Data (unsigned char data_in){ char CD2[1]; //data[0]= data_in; defADC1263_CSPin_Clr; delay_ms (2); defADC1263_CSPIN_SET; delay_ms (2); defADC1263_CSPin_Clr; delay_ms (2); SPI3_Write (DATA_IN); delay_ms (2); defADC1263_CSPIN_SET; } //向 SCP1000 void ads1262_Reg_Write (unsigned char read_write_address、unsigned char data){发送写入命令 char dataToSend; //现在将寄存器地址和命令组合成一个字节: dataToSend = read_write_address | WREG; defADC1263_CSPin_Clr; delay_ms (2); defADC1263_CSPIN_SET; delay_ms (2); //将芯片选择设置为低电平来选择器件: defADC1263_CSPin_Clr; delay_ms (2); SPI3_Write (dataToSend);//发送寄存器位置 SPI3_Write (0x00); //要处理的寄存器数 SPI3_Write (DATA); //发送要记录到寄存器的值 delay_ms (2); //将芯片选择设置为高电平以取消选择: defADC1263_CSPin_set; } char ADC_DRDY_Status (){ char ucStatus; if (defADC1263_GetPinStatusDRDY = 0) //监视器数据就绪(DRDY 引脚) { ucStatus = 1; } 否则{ ucStatus = 0; } 返回 ucStatus; }
TIPD188参考设计附带发布了一些 ADS1263示例代码。 请参阅"软件"部分下的"TIPD188固件"下载。 希望这能帮您解决问题! 此致 、Chris