CH592使用SPI+DMA驅(qū)動液晶屏,DMA搬運圖像數(shù)據(jù)(const數(shù)組)顯示異常

CH592使用SPI驅(qū)動液晶屏,使用DMA搬運保存在FlashROM里的圖像數(shù)據(jù)(const數(shù)組),顯示內(nèi)容花屏,查看datasheet發(fā)現(xiàn)DMA搬運地址只有低15位有效,使用__attribute__強制指定const數(shù)組地址到FlashROM的前32K區(qū)域,仍然顯示花屏。是不是DMA不能訪問FlashROM,只能訪問SRAM的28K內(nèi)存?另外SPI的DMA是不是也不能從其他外設(shè)地址搬運數(shù)據(jù)到SPI發(fā)送緩沖?那么這個DMA功能和STM32比起來功能差好多,太雞肋了。如果圖片數(shù)據(jù)放在SRAM,使用DMA搬運速度還可以,而使用使用FIFO連續(xù)發(fā)送多字節(jié)刷圖片數(shù)據(jù)也太慢了,花費時間是DMA的6倍多。

DMA搬運的函數(shù)傳參只能是RAM地址,沒辦法是FLASH地址。

標準流程,應(yīng)該是,加一個緩存,將FLASH的數(shù)據(jù)先搬運到RAM緩存中,然后SPIDMA再從該緩存搬運數(shù)據(jù)。

可以發(fā)送郵件至zhaiyw@wch.cn,提供一份SPI驅(qū)動TFT的參考。


加一個緩存,將FLASH的數(shù)據(jù)先搬運到RAM緩存中,然后SPIDMA再從該緩存搬運數(shù)據(jù),該方法試過,速度還不如使用FIFO連續(xù)發(fā)送多字節(jié)的方法,從flash搬運數(shù)據(jù)到ram中還是太浪費時間了。


SPI的速度算2分頻,也就是30Mhz。

搬運的速度,使用memcpy搬運4K約100us,也就是40M/s的速度。是比SPI的速度要快的。

你這里搬運的速度如果比較慢,可以通過該方法處理。

584 585 提升數(shù)組互相拷貝效率-memcpy - debugdabiaoge - 博客園


該博客截圖里的代碼和給出的代碼文本不一致,另外博客內(nèi)容基本沒有文字說明,代碼修改流程不是太清除,按截圖和猜測修改后編譯報錯CH592EVT/EVT/EXAM/SRC/StdPeriphDriver/CH59x_sys.c:346: undefined reference to `__MCPY'


官方工程里似乎沒有包含__MCPY這個函數(shù)的鏈接,是另外實現(xiàn)的嗎?


查了一下內(nèi)核文件,CH584代碼工程里內(nèi)核文件用匯編實現(xiàn)了void __MCPY(void *dst, void *start, void *end)函數(shù),但是CH592和CH582這些芯片代碼工程里并未實現(xiàn),似乎是不支持mcpy匯編指令,復(fù)制CH584代碼工程里用匯編實現(xiàn)的void __MCPY(void *dst, void *start, void *end)函數(shù)到CH592工程里,編譯會報錯Error: unrecognized opcode `mcpy a2,a1,a0'


沒人解疑嗎?


沒人回復(fù)了嗎?


592可以參考:

CH592 memcpy - SweetTea_lllpc - 博客園


感謝指導(dǎo),速度提升明顯,經(jīng)測試4K數(shù)據(jù)只需要116us


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

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