DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_Buffer; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)DST_Buffer;
采用M2M模式,在本地RAM测试通过。即 SRC_Buffer[x]={}; DST_Buffer[x]; //都是RAM里开出来的区域。
问题来了,我扩展了一类似RAM的东东,就是TFT。 描述一下TFT的操作:TFT自带了显存,扩展地址: #define LCD_DATA (*((u16 volatile *)(0x60020000)))// ILI9320 数据;
写TFT_ILI9320 不同于一般外部SRAM,不需要地址信号,只管向LCD_DATA 送数据,地址是ILI9320 内部自己增加,如:整屏写一次TFT Writ_ILI9320 () { for(int i=0; i<768000, <i++) //768000 = 320*240 LCD_DATA = DATA; }
现在改变目的地址 DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_Buffer; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)LCD_DATA ;
DMA_InitStructure.DMA_BufferSize = 320; 这样不能实现写ILI9320 ; DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_Buffer; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)LCD_DATA ;
DMA_InitStructure.DMA_BufferSize = 1; 这样也不能实现写ILI9320 ;
后一种方法只是测试,应该可以写才对的。前一种方法,肯定不对了,首地是LCD_DATA ,下一个地址就不对了。不管多少数据我都是从LCD_DATA 写入,有办法吗??????????????
|