|
楼主 |
发表于 2021-7-10 10:33:52
|
显示全部楼层
本帖最后由 噜噜噜 于 2021-7-10 10:44 编辑
static void AD7606_FSMCConfig(void)
{
/*
TFT-LCD£¬OLEDoíAD76061«óÃò»¸öFMCÅäÖã¬èç1û¶¼¿aÆô£¬ÇëòÔFMCËù¶è×îÂyμÄÎa×¼¡£
′ó¶ø±£Ö¤ËùóDíaé趼¿éòÔÕy3£1¤×÷¡£
*/
SRAM_HandleTypeDef hsram = {0};
FMC_NORSRAM_TimingTypeDef SRAM_Timing = {0};
/*
AD76061æ¸ñêéòaÇó(3.3Vê±£¬í¨DÅμçƽVdriver)£oRD¶áDÅoÅμíμçƽÂö3å¿í¶è×î¶ì21ns£¬¶Ôó|FMCμÄDataSetupTime
CSƬѡoíRD¶áDÅoŶàᢷ½ê½μĸßμçƽÂö3å×î¶ì¿í¶è15ns¡£
CSƬѡoíRD¶áDÅoÅ2¢áa·½ê½μĸßμçƽÂö3å×î¶ì¿í¶è22ns¡£
Õaàォ22ns×÷Îa×îD¡Öμ¸üoÏàíD©£¬¶Ôó|FMCμÄAddressSetupTime
4-x-6-x-x-x : RD¸ß3ÖDø35.7ns£¬μíμçƽ3ÖDø23.8ns. ¶áè¡8·Ñù±¾êy¾Yμ½Äú′æ2î2»¶à¾íêÇ476ns¡£
*/
hsram.Instance = FMC_NORSRAM_DEVICE;
hsram.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
/* FMCê1óÃμÄHCLK£¬Ö÷Æμ168MHz£¬1¸öFMCê±ÖóÖüÆú¾íêÇ5.95ns */
SRAM_Timing.AddressSetupTime = 4; /* 4*5.95ns=23.8ns£¬μØÖ·½¨á¢ê±¼ä£¬·¶Î§0 -15¸öFMCê±ÖóÖüÆú¸öêy */
SRAM_Timing.AddressHoldTime = 0; /* μØÖ·±£3Ö걼䣬ÅäÖÃÎaÄ£ê½Aê±£¬óÃ2»μ½′Ë2Îêy ·¶Î§1 -15¸öê±ÖóÖüÆú¸öêy */
SRAM_Timing.DataSetupTime = 3; /* 6*5.95ns=35.7ns£¬êy¾Y±£3Ö걼䣬·¶Î§1 -255¸öê±ÖóÖüÆú¸öêy */
SRAM_Timing.BusTurnAroundDuration = 0; /* ′ËÅäÖÃóÃ2»μ½Õa¸ö2Îêy */
SRAM_Timing.CLKDivision = 0; /* ′ËÅäÖÃóÃ2»μ½Õa¸ö2Îêy */
SRAM_Timing.DataLatency = 0; /* ′ËÅäÖÃóÃ2»μ½Õa¸ö2Îêy */
SRAM_Timing.AccessMode = FSMC_ACCESS_MODE_A; /* ÅäÖÃÎaÄ£ê½A */
hsram.Init.NSBank = FSMC_NORSRAM_BANK1; /* ê1óÃμÄBANK4£¬¼′ê1óÃμÄƬѡFSMC_NE4 */
hsram.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE; /* ½ûÖ1μØÖ·êy¾Y¸′óà */
hsram.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM; /* ′æ′¢Æ÷ààDíSRAM */
hsram.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16; /* 16λ×üÏß¿í¶è */
hsram.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE; /* 1رÕí»·¢Ä£ê½ */
hsram.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW; /* óÃóúéèÖÃμè′yDÅoÅμļ«DÔ£¬1رÕí»·¢Ä£ê½£¬′Ë2ÎêyÎTD§ */
hsram.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS; /* 1رÕí»·¢Ä£ê½£¬′Ë2ÎêyÎTD§ */
hsram.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE; /* óÃóúê1Äü»òÕß½ûÖ1D′±£»¤ */
hsram.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE; /* 1رÕí»·¢Ä£ê½£¬′Ë2ÎêyÎTD§ */
hsram.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE; /* ½ûÖ1à©Õ1Ä£ê½ */
hsram.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE; /* óÃóúòì2½′«êäÆú¼ä£¬ê1Äü»òÕß½ûÖ1μè′yDÅoÅ£¬ÕaàïÑ¡Ôñ1Ø±Õ */
hsram.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE; /* ½ûÖ1D′í»·¢ */
hsram.Init.ContinuousClock = FSMC_CONTINUOUS_CLOCK_SYNC_ONLY; /* ½öí¬2½Ä£ê½2Å×öê±Öóêä3ö */
hsram.Init.WriteFifo = FSMC_WRITE_FIFO_ENABLE; /* ê1ÄüD′FIFO */
/* 3õê¼»ˉSRAM¿ØÖÆÆ÷ */
if (HAL_SRAM_Init(&hsram, &SRAM_Timing, &SRAM_Timing) != HAL_OK)
{
/* 3õê¼»ˉ′íÎó */
Error_Handler(__FILE__, __LINE__);
}
}
|
|