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.

[参考译文] AFE4300:afe4300和stm32f103rb,rdy针脚未更改

Guru**** 2531950 points
Other Parts Discussed in Thread: AFE4300

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/597555/afe4300-afe4300-and-stm32f103rb-rdy-pin-unchanged

部件号:AFE4300

您好,

 我在让AFE4300启动ADC测量时遇到问题。 我开始使用一款使用TI的参考设计设计设计的新主板。 我尝试通过stm32f103rb (Nucleo)与主板通信。

我设置了SPI模式1,想要使用身体成分测量(BCM)。

我通过ARM PWM信号给4300电路板提供1MHz的安全信号。

这就是发生的情况

1.我无法读取ADC数据结果寄存器。当我读取ADC数据结果时,它只显示“0”。

2. RDY引脚状态保持不变。保持高状态。

 

int main()
{
	SystemInit();
	UART2_Init();
	DelayInit();
	PWM_Init();
	
	
	
	reset_init();
	init_SPI1();
	
	resetAFE4300();
	initAFE4300();
	initBCM();

	//
while (1)
	{


		IF (GPIO,PIN_DRDY)=1){

				printf ("register_Name\n\r");
				readf ("AGPIO_ReadInputDataBit(GPIOC,PIN_DRDY)=1);0x_printf(0x_readf)readf ("register %X%x%x_register %x%x%x%x%x%x"register)
				
				
				
				printf ("0x%X\n\r",readRegister (device_control_1));
				printf ("0x%X\n\r",readRegister (ISW_Matrix));
				printf ("0x%X\n\r",readRegister (VSW_Matrix));
				printf ("0x%X\n\r",readRegister (i_scale),readn(r_weight)
				
				printf ("0x%X\n\r",readRegister (BCM_DAC_FREQ));
				printf ("0x%X\n\r",readRegister (device_control_2));
				printf ("0x%X\n\r",readRegister (AGPIO_CONTROL_REGPI_REGIO_NOIT
				

		
		
				
				
		
		
	
)<0x_DEIT_AGP3%/<_RESUPI_DEIT_AGP>0_AGPI_DEIT_AGP>0_AGPI_DE_AGP_AGP_DEIT0_DE_AGO_AGO_NO_DEITF(NO_NO_DE0)=<0%/<_DEIT_NOST_AGP1%/<_AGP1%/<_AGPI_RES_DE_AGPI_NO_NO_AGPI_NO_NO_NO_AGP1%/<)=<_RESP1%/<_RES_RES_RESP1%/<=<_RESP1%/<=<_NO_NO_AGP1%/<0_AGP1%/<


	
	
		
	

		//启用GPIO时钟*/
		RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA, enable);
		RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOC, enable);

		/*配置GPIO引脚*/
		GPIO接口结构.GPO_IP接口;
		
		
		GPIO = GPIO;GPIO =
	
		GPIO _InitStructure.GPIO针脚= SPI_CS_PIN;
		GPIO _InitStructure.GPIO模式= GPIO模式输出PP;
		GPIO _结构.GPIO _速度= GPIO速度_50MHz;
		GPIO _初始化(GPIOA,&GPIO _结构);
	
		GPIO_InitStructure.GPIO针脚= PIN_DRDY;
		GPIO _InitSGPI.GPIO模式= GPIO模式_IPD;
		GPIO _结构.GPIO _速度= GPIO速度_50MHz;
		GPIO _初始化(GPIOC, GPIO &);
		//
		gPIO_SetBits(GPIOA, gPIO_PIN_4);
	}

UINT32_t RDY_READ(void){
	返回gPIO_ReadInputDataBit(GPIOC, PIN_DRDY);
}

void reset_high (void_gPI){//gPIA-IGPI_RESET_IGPI=GPIO_IGPI_RESET;{IGPI_RESET_IGIOF;}_RESET_RESTRF;{_IGIOF_IGIOF_RESET_BITOF;}_RESID_RESET_RESET_RESET_BISTRITEF;}_RESET_RESIDF;}_RESET_RESIDF;{_IGOF;}_RESET_RESET_AGPI_RESIDF;}_RESET_RESET_RESIDETOF(GPF;}/AGPI_AGPI=GPF;}/AGPI_AGPI_AGPI=GPF_AGPI_AGPI_AGPI_RESET_AGPI_RESET_RESET_AGPI=(GPI=GPF;
	
	



	
	
	



	
	
	
	




	
	
		
		

	//启用GPIOs时钟*/
	RCC_APB2Periph_GPIOd (RCC_APB2Periph_GPIOA,启用);

	/*启用SPI时钟*/ RCC_APB2PeriphClockCmd
	(RCC_APB2Periph_SPI1,启用);

	/*配置SPI SCKPI_GPI_POI_POPI_I SC2Perc_IPM_
	
	
	结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_PIPOPIPOPIPOPIPOPIPOPIPOPI_SPI_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_结构_
	


	/* SPI配置---------------------------------- */

	SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
	SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
	SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
	SPI_InitSSPI.CPOL = SPI_CPOL = SPI_Low;SPI_InitSStructure_CPHA_=
	SPI_CPHA; SPI_CPHA_21
	SPI_InitStructure.SPI_NSS = SPI_NSS_soft;

	SPI_InitBitBitBit.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;	//32
	SPI_InitStructure.SPI_FirstBitBIT = unsigned_FirstBit_MSB;IO_InitStructure.CRCPolit_32;SPI_1; SPI_Reset1
	
	

	
	

;SPI_NOST_Spi_8


	
	
	
	;SPI_NOTE; SPI_POST_BIST_BITE; SPITE; SPI_NOST_BISTE; SPI1; SPITE; SPI_8
	
	
	
	
	SPI_Byte Byte (secondByte);
	
	GPIO _SetBits(GPIOA, GPIO PIN_4);
}

int readRegister (无符号字符地址){

	int spiReceive =0;
	uint8_t spiReceiveFirst =0;
	uint8_t spiReceiveSecond =0;
		

	address = address & 0x1F;//最后5位指定地址
	地址=地址=地址| 0x20;sendp_gPI_spiO pin接收
	
	头= 0;需要第一个
	
	地址;sendpin_gPI_gPI_GPA
	spiReceiveFirst = SPI_SendByte(0x00);
	spiReceiveSecond = SPI_SendByte(0x00);
	
	GPIO_SetBits(GPIOA, GPIO PIN_4);
	
	spiReceivive =(spiReceiveFirst <<8);
	spiReceiveSecond;
	
	return spiReceive;
}


void initAFE4300(void)
{
		writeRegister(ADC_CONTRACT_register,0x5140);writeRegister
		(MISC1_register,0x0000);//	
			
		fic_register; f2
		
		
			
		
		//
		writeRegister (dever_control_2,0x0000);
		writeRegister (ADC_CONTROL_REGISTER_2,0x0011);
		writeRegister (MISC3_REGIS,0x00C0);
}

void initBCM(void)
{
		writeRegister (ADC_CONTROL_REGIS,0x4120);//差分测量模式32 iSC3F/4120//////eRegister 11.0001万; eNO_ECT0EC_ECF;eREG;eRegister DU_EC_EC_ECF;0
		
		
		
		
		
		
		


UINT8_t SPI_SendByte (uint8_t Data)
{
	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_Flag_TXE)== reset);
	SPI_I2S_SendData(SPI1, Data);
	while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)== reset);

	返回SPI_I2S_ReceiveData(SPI1);
}

任何潜在客户都将有很大帮助

 

此致,

DJ

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,DongJun,

    您是否可以验证SPI写入/读取是否正常工作?
    对于SPI写入,您可以在启用体重秤信号链之前和之后测量VLDO引脚电压。
    在启用之前,它应该是~0V,而在启用之后,它应该是~1.7V。

    此致,
    Prabin