请教一下AD7616软件并行模式读写时序问题

最近在调试AD7616芯片,采用的方案是软件并行模式,使用STM32F429+FMC转换并读取ad7616采样数据,目前在ad7616的读写时序配置上出现了一些问题,根据ad7616数据手册上的相关时序参数配置设置之后仍然无法正确读写寄存器,请问下各位正确的时序应该如何设置?比如FMC的AddressSetupTime及DataSetupTime、以及读取ad7616寄存器时写寄存器地址及读取数据之间的延时应该怎么设置?

以下是相关代码:

1. FMC配置

/* FMC initialization function */
void MX_FMC_Init(void)
{
    FMC_NORSRAM_TimingTypeDef Timing;
    FMC_NORSRAM_TimingTypeDef ExtTiming;
    
    /** Perform the SRAM1 memory initialization sequence
    */
    hsram1.Instance = FMC_NORSRAM_DEVICE;
    hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
    /* hsram1.Init */
    hsram1.Init.NSBank = FMC_NORSRAM_BANK1;
    hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
    hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
    hsram1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
    hsram1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
    hsram1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
    hsram1.Init.WrapMode = FMC_WRAP_MODE_DISABLE;
    hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
    hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
    hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
    hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
    hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
    hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
    hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
    hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
    /* Timing */
    Timing.AddressSetupTime = 6;       //ADDSET
    Timing.AddressHoldTime = 1;
    Timing.DataSetupTime = 9;          //DATAST        
    Timing.BusTurnAroundDuration = 1;
    Timing.CLKDivision = 0;
    Timing.DataLatency = 0;
    Timing.AccessMode = FMC_ACCESS_MODE_A;
    /* ExtTiming */
    ExtTiming.AddressSetupTime = 6;     //ADDSET
    ExtTiming.AddressHoldTime = 1;
    ExtTiming.DataSetupTime = 6;        //DATAST
    ExtTiming.BusTurnAroundDuration = 1;
    ExtTiming.CLKDivision = 0;
    ExtTiming.DataLatency = 0;
    ExtTiming.AccessMode = FMC_ACCESS_MODE_A;
    
    if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK)
    {
        _Error_Handler(__FILE__, __LINE__);
    }
}

2. 读ad7616寄存器

/********************************************************************************************************
*	函 数 名: AD7616_ParRead
*	功能说明: AD7616并行模式寄存器数据读取。  //回读时间tRB>231ns, 实际选取tRB=300ns
*	输    入: reg_addr : 寄存器地址
*	输    出: 无
*	返 回 值: 寄存器数据
********************************************************************************************************/
s16 AD7616_ParRead(u8 reg_addr)
{
	s16 read_data;
	
	AD7616_CoreWrite(ADC_MEM_BASEADDR, 0x0000 | ((reg_addr & 0x3F) << 9));
	delay_us(10);      //这个延时应如何设置?
	
	read_data = AD7616_CoreRead(ADC_MEM_BASEADDR) & 0xff;
	delay_us(50);      //这个延时应如何设置?

	return read_data;
}

/********************************************************************************************************
*	函 数 名: AD7616_CoreRead
*	功能说明: AD7616数据读取。
*	输    入: adc_baseaddr : adc器件地址
*	输    出: 无
*	返 回 值: AD7616数据
********************************************************************************************************/
s16 AD7616_CoreRead(u32 adc_baseaddr)
{
	return *(vu16 *)adc_baseaddr;
}

/********************************************************************************************************
*	函 数 名: AD7616_CoreWrite
*	功能说明: AD7616数据写入。
*	输    入: adc_baseaddr : AD7616器件地址
*	          data         : 待写入数据
*	输    出: 无
*	返 回 值: 0: 成功, -1: 失败
********************************************************************************************************/
s16 AD7616_CoreWrite(u32 adc_baseaddr, u16 reg_data)
{
	*(vu16 *)adc_baseaddr = reg_data;

	return 0;
}