使用OMAP-L138通过SPI控制两款屏幕:
屏幕1:像素160*128,16比特;
屏幕2:像素320*240,16比特;
均使用EDMA3写入显存数据,屏幕1数据量较小(160*128*2=40960字节),使用A Sync模式,屏幕2数据量较大(320*240*2=153600字节),使用AB Sync模式。按照表格中配置DMA参数,屏幕1可以正常显示,屏幕2却不能正常显示且程序卡死。请问我的参数是不是配置的不正确,或者除了Param这几个寄存器,使用AB Sync模式还需要配置哪些寄存器,请高手指点,不胜感激。
屏幕1 |
屏幕2 |
param.opt =EDMA_TCC(channel); param.src = dma_phyaddr; param.a_b_cnt = (20480 << 16) | 2; edma_write_slot(channel, ¶m); edma_write_slot(dummy_slot, ¶m); |
param.opt =EDMA_TCC(channel) | SYNCDIM; param.src = dma_phyaddr; param.a_b_cnt = (240 << 16) | 2; edma_write_slot(channel, ¶m); edma_write_slot(dummy_slot, ¶m); |
再次附上屏幕2的参数配置:
#define ACNT 2
#define BCNT 240
#define CCNT 320
#define BCNTRLD 0
#define LINK 0xFFFF
#define DSTBIDX 0
#define SRCBIDX 2
#define DSTCIDX 0
#define SRCCIDX (ACNT * BCNT)
Tony Tang:
这个问题好像在其它地方回答过了。
http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/p/97184/254240.aspx#254240