能否提供一個CH32V307的FSMC同步方式的例程?

使用如下配置FSMC沒有同步時鐘輸出


void FSMC_SRAM_Init(void)

{

? ? FSMC_NORSRAMInitTypeDef? FSMC_NORSRAMInitStructure={0};

? ? FSMC_NORSRAMTimingInitTypeDef? readWriteTiming={0};

? ? GPIO_InitTypeDef? GPIO_InitStructure={0};


? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE);

? ? RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);


? ? /* FSMC_NADV */

? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOB, &GPIO_InitStructure);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

? ? GPIO_Init(GPIOD, &GPIO_InitStructure);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

? ? GPIO_Init(GPIOE, &GPIO_InitStructure);


? ? readWriteTiming.FSMC_AddressSetupTime = 0x00;

? ? readWriteTiming.FSMC_AddressHoldTime = 0x00;

? ? readWriteTiming.FSMC_DataSetupTime = 0x03;

? ? readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;

? ? readWriteTiming.FSMC_CLKDivision = 0x00;

? ? readWriteTiming.FSMC_DataLatency = 0x00;

? ? readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_D;


? ? FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;

? ? FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;

? ? FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_PSRAM;

? ? FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;

? ? FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Enable;

? ? FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;

? ? FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;

? ? FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;

? ? FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;

? ? FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;

? ? FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;

? ? FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;

? ? FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;

? ? FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;

? ? FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming;


? ? FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

//? ? FSMC_Bank1->BTCR[0] = 0x00001197;

//? ? FSMC_Bank1->BTCR[1] = 0x30000300;

? ? FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);

}


您好,暫時沒有同步模式的例程,關于FSMC同步模式的部分初始化配置,可按照下圖配置方式配置看看,若有問題,可將問題發(fā)我郵箱(lzs@wch.cn)聯(lián)系.

Snipaste_2021-12-17_18-54-04.jpg



將FSMC_CLKDivision設置為1后能輸出同步時鐘。系統(tǒng)時鐘為72MHz,AHB分配器為無分頻,同步時鐘頻率只有4MHz,

請問

1、如何提高FSMC的同步時鐘頻率?

2、如何像STM32一樣持續(xù)輸出同步時鐘?

1639809590208576.png

1639809592105494.png



無意中退出調試狀態(tài),同步時鐘有36MHz。難道CH32V307在調試狀態(tài)下系統(tǒng)時鐘只有8MHz?


您好,正常情況下,調式時和程序正常運行時系統(tǒng)主頻應該都是一樣不會有變化的,可以檢查一下在調式時是不是什么地方出問題切換為內部晶振了,若后續(xù)有問題,可將問題發(fā)我郵箱(lzs@wch.cn)聯(lián)系.


FAE你好,按照上圖的配置,捕獲的FSMC同步通信波形還是有點問題,請問下還有別的什么需要配置么?

(這是一個讀操作,NOE和CLK的相位關系異常。)

image.png


您好,已郵件回復你,后續(xù)問題可繼續(xù)通過郵件溝通


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频