之前用HC32F005的SPI(未使用DMA)系統(tǒng)頻率24MHz,驅(qū)動LCD刷屏速度感覺很快。程序移植到CH573芯片,主頻60MHz,使用SPI驅(qū)動LCD屏感覺刷屏速度慢,而且使用了DMA發(fā)送指令數(shù)據(jù)感覺速度也沒有明顯的提升,這是為什么?
因為芯片有片外Flash,速度實際是主頻的Fsys/8。
如果需要跑的運行達到60MHz,可以把相應(yīng)的函數(shù)放到RAM中運行,加上定義
__attribute__((section(".highcode")))
比如
該定義僅適用于當(dāng)前函數(shù),不含上一級函數(shù)或者該函數(shù)里面調(diào)用的函數(shù)。
缺點是當(dāng)前函數(shù)需要在RAM中運行,需注意RAM的消耗。
是把LCD顯示函數(shù)前加上__attribute__((section(".highcode")))就可以提高刷屏速度嗎
? ? ? ?樓主的SPI的初始化設(shè)置函數(shù)能夠共享下不,初始化SPI的時候,需要對SPI的IO口狀態(tài)做初始化不,我按照示例初始化程序,好像沒看到對IO的狀態(tài)做初始化,樓主幫忙看下。
/*******************************************************************************
* Function Name? : SPI1_MasterDefInit
* Description? ? : 主機模式默認初始化
* Input? ? ? ? ? : None
* Return? ? ? ? ?: None
*******************************************************************************/
void SPI1_MasterDefInit( void )
{
? ? R8_SPI1_CLOCK_DIV = 4;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//主頻時鐘4分頻
? ? R8_SPI1_CTRL_MOD = RB_SPI_ALL_CLEAR;
? ? R8_SPI1_CTRL_MOD = RB_SPI_MOSI_OE | RB_SPI_SCK_OE ;
? ? R8_SPI1_CTRL_CFG |= RB_SPI_AUTO_IF;
? ? R8_SPI1_CTRL_CFG &= ~RB_SPI_DMA_ENABLE;? ? ? ? ? ? ? ? ? //不啟動DMA方式
? ? //R8_SPI1_CTRL_CFG |= RB_SPI_DMA_ENABLE;? ? ? ? ? ? ? ? ?//啟動DMA方式
}
看你發(fā)了很多回復(fù),這個CH569中的代碼,GPIO初始化是直接操作R32_PB_XXX寄存器實現(xiàn)的
樓主,問題最后解決了嗎?是通過給顯示相關(guān)函數(shù)加常駐ram屬性解決的嗎?