大家好,我正在调试一个板,它与STM32F767和ADS1299之间的通信。 现在我遇到了一些问题。 我的ADS1299使用内部参考并配置为双极电源。 我按照数据表中的说明初始化系统。 我将0xE0写入CONFIGUURE3,并延迟几乎1秒。 但VREFP仍为-2.5V,电压转换为0x00。 寄存器可以正确写入和读取。 我不知道为什么。 有人能帮我吗,谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
感谢您回复我。 现在Vrefp的问题已解决,Vcap1的电压高于1.1V。 但ADS1299的输出数据仍为0x00h,而寄存器可以正确读取。 但在单次激发模式下,输出不稳定,数据不可靠。 我使用STM32F7系列ARM,代码如下。 请帮我吗?
内部主(无效)
{
uINT8_t地址,数据,I;
易失性UINT32_t RAW_DATA_32[8]={0,0,0,0,0,0,0];
易失性UINT32_t temp_32;
UINT8_t ADS1299_DATA_raw1[27];
双ADS1299_voltage[8];
HAL_Init();
/*配置系统时钟*/
SystemClock_Config();
/*初始化所有已配置的外围设备*/
mx_gPIO_Init();
mx_SPI2_Init();
//加电
HAL_GPIO_WritePin (GPIOC,GPIO PIN_6,GPIO PIN_SET);
HAL_DELAY (2);
HAL_GPIO_WritePin (GPIOC,GPIO PIN_6,GPIO PIN_RESET);
HAL_DELAY (2);
HAL_GPIO_WritePin (GPIOC,GPIO PIN_6,GPIO PIN_SET);
HAL_DELAY (1000);
//重置
HAL_GPIO_WritePin (GPIOD,GPIO PIN_15,GPIO PIN_SET);
HAL_DELAY (2);
HAL_GPIO_WritePin (GPIOD,GPIO PIN_15,GPIO PIN_RESET);
HAL_DELAY (2);
HAL_GPIO_WritePin (GPIOD,GPIO PIN_15,GPIO PIN_SET);
HAL_DELAY (1000);
//CS1过低
HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_RESET);
//SDATAC
数据= 0x11;
HAL_SPI_Transmit (&hspi2,&data,11000);
//CS2低
HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_RESET);
//SDATAC
数据= SDATAC;
HAL_SPI_Transmit (&hspi2,&data,11000);
//将0xE0写入CONFIG3
地址= 0x43;
HAL_SPI_Transmit (&hspi2,&address,11000);
数据= 0x00;
HAL_SPI_Transmit (&hspi2,&data,11000);
数据= 0xE0;
HAL_SPI_Transmit (&hspi2,&data,11000);
HAL_DELAY (1000);
地址=0x40;
HAL_SPI_Transmit (&hspi2,&address,11000);
Data=0x17;
HAL_SPI_Transmit (&hspi2,&data,1,50);
HAL_SPI_Transmit (&hspi2,ADS1299ReG_Conituous_setting,0x181000);
HAL_DELAY (1000);
地址= 0x20;
HAL_SPI_Transmit (&hspi2,&address,11000);
数据= 0x17;
HAL_SPI_Transmit (&hspi2,&data,11000);
HAL_SPI_receive (&hspi2,ADS1299_REG_2,241000);//读取要检查的寄存器数据
HAL_GPIO_WritePin (GPIOD,GPIO PIN_14,GPIO PIN_RESET);//启动PIN设置为低
HAL_DELAY (10);
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14,GPIO PIN_SET);//启动PIN设置高
数据= RDATAC;
HAL_SPI_Transmit (&hspi2,&data,11000);
//CS2高
HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_SET);
同时(1)
{
}
}
以下代码是中断函数。当/DRDY引脚拉低时,该函数将从ADS1299中读取数据。
void EXTI9_5_IRQHandler (void)
{
/*用户代码BEGIN EXTI9_5_IRQn0 */
//uint8_t地址,数据,i;
//uint8_t reg[0x18];
HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_RESET);
HAL_SPI_receive (&hspi2,ADS1299_DATA_RAW,27,50);
地址= 0x20;//读取要检查的寄存器数据
HAL_SPI_Transmit (&hspi2,&address,1,50);
数据= 0x17;
HAL_SPI_Transmit (&hspi2,&data,1,50);
HAL_SPI_receive (&hspi2,ADS1299_REG_2,0x18,50);
HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_SET);
/*用户代码END EXTI9_5_IRQn 0 */
HAL_GPIO EXTI_IRQHandler (GPIO_PIN_8);
/*用户代码BEGIN EXTI9_5_IRQn 1 */
}
您好,Pisani,
我按照您的手册中的说明对代码进行了编程,如下所示。
在为RDATAC模式配置寄存器之后,我将起始引脚设置为高,并将RDATAC命令写入ADS1299,然后程序处于无限循环中。 代码为“Blow (吹气)
地址=0x40; //将连续模式写入寄存器
HAL_SPI_Transmit (&hspi2,&address,11000);
Data=0x17;
HAL_SPI_Transmit (&hspi2,&data,1,50);
HAL_SPI_Transmit (&hspi2,ADS1299ReG_CONTINUIENT_setting,0x181000);
HAL_DELAY (10);
地址= 0x20;
HAL_SPI_Transmit (&hspi2,&address,11000);
数据= 0x17;
HAL_SPI_Transmit (&hspi2,&data,11000);
HAL_SPI_receive (&hspi2,ADS1299_REG,241000);
HAL_GPIO_WritePin (GPIOD,GPIO PIN_14,GPIO PIN_RESET);//启动PIN设置为低
HAL_DELAY (10);
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14,GPIO PIN_SET);//启动PIN设置高
数据=启动;
HAL_SPI_Transmit (&hspi2,&data,1,50);
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO_PIN_SET);// CS设置高
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO PIN重置);// CS设置为低
数据= RDATAC; //发送RDATAC命令。
HAL_SPI_Transmit (&hspi2,&data,1,50);
//HAL_DELAY (10);
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO_PIN_SET);// CS设置高
同时(1)
{
}
当转换完成且数据准备好检索时,PD12引脚将被拉低并运行到EXT中断程序中,如下所示。
void EXTI15_10_IRQHandler (void)
{
/*用户代码BEGIN EXTI15_10_IRQn 0 */
uINT8_t地址,数据;
HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_RESET); //CS设置为低
HAL_SPI_receive (&hspi2,ADS1299_DATA_RAW,2.71万); //从ads1299读取27字节
地址= 0x20; //读取寄存器进行检查
HAL_SPI_Transmit (&hspi2,&address,1,50);
数据= 0x17;
HAL_SPI_Transmit (&hspi2,&data,1,50);
HAL_SPI_receive (&hspi2,ADS1299_REG,24,50);
HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_SET);
/*用户代码END EXTI15_10_IRQn 0 */
HAL_GPIO EXTI_IRQHandler (GPIO_PIN_12);
/*用户代码BEGIN EXTI15_10_IRQn 1 */
/*用户代码END EXTI15_10_IRQn 1 */
}
这就是代码,谢谢。