求助,SPI屏驱动有问题。

2019-10-11 14:16发布

IMG_20170319_160921.jpg
非常奇怪,同一个程序,2星期前能正常驱动,程序没改动过,但是现在死活点不亮。各位大神帮忙看下,谢谢。

另外分享一下DMA+SPI点亮这个屏的一段程序
void LCD_clear(u16 color)
{
        SPI2_bit(8);
        LCD_set_xy(0,0,319,239);
        SPI2_bit(16);
        LCD_CS=0;  //LCD_CS=0
        LCD_RS=1;       

////////////////////////////DMA刷屏方式//////////////////////
        SPI2->CR2|=1<<1;//使能发送DMA
        LCD_DMA_start((u32)&color,0xFFFF);
        while(!(DMA1->ISR&(1<<17)));//等待传输完成,DMA每次只能传65535个数据
        DMA1->IFCR|=1<<17;//清除传输完成标志位
        LCD_DMA_start((u32)&color,11267);
        while(!(DMA1->ISR&(1<<17)));//等待传输完成,DMA每次只能传65535个数据
        DMA1->IFCR|=1<<17;//清除传输完成标志位       
        while(SPI2->SR&(1<<7));//等待传输完成
        SPI2->SR;//消除错误
        SPI2->DR;//消除错误,这个很重要,不然不能重新设置。
        SPI2->CR2&=~(1<<1);//失能发送DMA
       
        LCD_CS=1;
        SPI2_bit(8);
}

DMA+SPI发送完成后一定要消除错误,不然再次用DMA发送数据会出错。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。