之前用HC32F005的SPI(未使用DMA)系统频率24MHz,驱动LCD刷屏速度感觉很快。程序移植到CH573芯片,主频60MHz,使用SPI驱动LCD屏感觉刷屏速度慢,而且使用了DMA发送指令数据感觉速度也没有明显的提升,这是为什么?
因为芯片有片外Flash,速度实际是主频的Fsys/8。
如果需要跑的运行达到60MHz,可以把相应的函数放到RAM中运行,加上定义
__attribute__((section(".highcode")))
比如
该定义仅适用于当前函数,不含上一级函数或者该函数里面调用的函数。
缺点是当前函数需要在RAM中运行,需注意RAM的消耗。
是把LCD显示函数前加上__attribute__((section(".highcode")))就可以提高刷屏速度吗
楼主的SPI的初始化设置函数能够共享下不,初始化SPI的时候,需要对SPI的IO口状态做初始化不,我按照示例初始化程序,好像没看到对IO的状态做初始化,楼主帮忙看下。
/*******************************************************************************
* 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方式
}
看你发了很多回复,这个CH569中的代码,GPIO初始化是直接操作R32_PB_XXX寄存器实现的
楼主,问题最后解决了吗?是通过给显示相关函数加常驻ram属性解决的吗?