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.

ADS8686S: can't drive ADS8686 through parallel interface

Part Number: ADS8686S

I am trying to use the STM32F407VGT6 to drive the ADS8686 through the parallel interface. The wiring is shown in the diagram.

My program, as shown below, is designed to read the data from the configuration registers. However, I am not getting any data:


#define ADC_BASE_ADDRESS ((uint32_t)0x60000000)
uint32_t usb_read_data=0;

void MX_FSMC_Init(void)
{
/* USER CODE BEGIN FSMC_Init 0 */

/* USER CODE END FSMC_Init 0 */

FSMC_NORSRAM_TimingTypeDef Timing = {0};

/* USER CODE BEGIN FSMC_Init 1 */

/* USER CODE END FSMC_Init 1 */

/** Perform the NOR1 memory initialization sequence
*/
hnor1.Instance = FSMC_NORSRAM_DEVICE;
hnor1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
/* hnor1.Init */
hnor1.Init.NSBank = FSMC_NORSRAM_BANK1;
hnor1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_ENABLE;
hnor1.Init.MemoryType = FSMC_MEMORY_TYPE_NOR;
hnor1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
hnor1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
hnor1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
hnor1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
hnor1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
hnor1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
hnor1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
hnor1.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
hnor1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
hnor1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
hnor1.Init.PageSize = FSMC_PAGE_SIZE_NONE;
/* Timing */
Timing.AddressSetupTime = 15;
Timing.AddressHoldTime = 15;
Timing.DataSetupTime = 255;
Timing.BusTurnAroundDuration = 15;
Timing.CLKDivision = 16;
Timing.DataLatency = 17;
Timing.AccessMode = FSMC_ACCESS_MODE_A;
/* ExtTiming */

if (HAL_NOR_Init(&hnor1, &Timing, NULL) != HAL_OK)
{
Error_Handler( );
}

}

int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USB_DEVICE_Init();
MX_FSMC_Init();
HAL_GPIO_WritePin(SER_PAR_BYTE_GPIO_Port, SER_PAR_BYTE_Pin, GPIO_PIN_RESET);


while (1)
{

uint16_t writedata = (0x2&0x3F)<<9;    //配置寄存器
*((volatile uint16_t *)ADC_BASE_ADDRESS) = writedata;
HAL_Delay(1);
uint16_t data = *((volatile uint16_t *)(ADC_BASE_ADDRESS));

char myStr[64] = {0};
sprintf(myStr, "Address: %d, Data: %d \r\n", usb_read_data, data);
CDC_Transmit_FS((uint8_t *)myStr, strlen(myStr));

HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}