This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C129XNCZAD:光栅配置问题、基于 TIDM-TM4CFLASHSRAM 示例

Guru**** 2386600 points
Other Parts Discussed in Thread: TM4C129XNCZAD, TIDM-TM4CFLASHSRAM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1345938/tm4c129xnczad-raster-configuration-issue-based-on-tidm-tm4cflashsram-exmaple

器件型号:TM4C129XNCZAD
主题中讨论的其他器件: TIDM-TM4CFLASHSRAM

我们有一款采用 TIDM-TM4CFLASHSRAM TM4C129xnczad 设计的新器件 。 我们目前使用的是24个 BPP 光栅、但 LCD 屏幕的高速更新存在问题。 我希望从非紧凑24 bpp 切换到 rast_fmt_active_16bpp。 这使我们能够以两倍的速度移动数据、但 tivaware lcd.h 标头中未对数据进行声明、该数据仅存在于文档中。 任何人都知道为什么删除此栅格设置。 此外、我们还使用并行 SRAM/闪存、它可以将8位数据从闪存中拉出、将其转换为24 BPP 像素数据、然后使用 SRAM 作为显示缓冲区、并通过运行速度为30Mhz 的 EPI 引脚完成通信。 我正在探索切换到调色板和8bpp 设置、但到目前为止还没有任何运气。 我们的液晶屏屏幕目前更新在一个最低2Hz,它更新在几个不同的部分总计约500毫秒每个屏幕变化,它是明显非常慢. 任何建议都是有帮助的,我有点过头,继承了一个不完整的项目由外部承包商完成。 最后一个障碍是让屏幕以合理的频率进行更新。 我可以发布液晶屏和 EPI 设置、但可能无法开机自检。 任何增加像素时钟频率的尝试都会导致下溢、我所看到的唯一允许我增加频率的事情就是将前沿值增加到错误的高数(从77增加到1024)。 任何关于什么是导致这是如此慢或我应该看谁先解决我的问题的帮助将会非常惊讶,即使我不能发布更多的代码,我在这里张贴. (uiSysClk/38 = 3.15MHz 我可以更改此数字、但任何更高的值都会触发下溢)。 屏幕是640x 480 LCD。  

EPIDividerSet (EPI0_BASE、0x2);//将时钟设置为 SYSCLK 的四分之一= 30MHz
EPIModeSet (EPI0_BASE、EPI_MODE_HB16);
//设置 SRAM 和闪存,EPIOS27是 SRAM 意味着 CS0,EPIOS26是闪存意味着
//CS1
EPIConfigHB16Set (EPI0_BASE、(EPI_HB16_MODE_ADMUX | EPI_HB16_WRWAIT_0 | EPI_HB16_RDWAIT_0 |
EPI_HB16_CSCFG_ALE_DUAL_CS | EPI_HB16_ALE_HIGH)、255);
EPIConfigHB16TimingSet (EPI0_BASE、0、EPI_HB16_CAP_WIDTH_1 | EPI_HB16_WRWAIT_MINUS_ENABLE | EPI_HB16_RDWAIT_MINUS_ENABLE);
EPIConfigHB16TimingSet (EPI0_BASE、1、EPI_HB16_CAP_WIDTH_1 | EPI_HB16_WRWAIT_MINUS_ENABLE | EPI_HB16_RDWAIT_MINUS_ENABLE);
EPIAddressMapSet (EPI0_BASE、(EPI_ADDR_PER_SIZE_16MB | EPI_ADDR_PER_BASE_A |
EPI_ADDR_RAM_SIZE_256MB | EPI_ADDR_RAM_BASE_8);
SetDMABACKGROUNDColor (0x00000000);

//启用 LCD 模块
LCDModeSet (LCD0_BASE、(LCD_MODE_RATE | LCD_MODE_AUTO_UFLOW_RESTART)、ui32SysClk/38、ui32SysClk);//实现所有对象稳定性的最大像素时钟
LCDRasterConfigSet (LCD0_BASE、RASTE_FMT_ACTIVE_24bpp_unpacked | RASTER_LOAD_DATA_ONLY、0);
LCDRasterTimingSet (LCD0_BASE、&(Kyocera_Display));
LCDDMAConfigSet (LCD0_BASE、LCD_DMA_BURST_16 | LCD_DMA_FIFORDY_64_WORD | LCD_DMA_BYTE_ORDER_0123);
LCDRasterFrameBufferSet (LCD0_BASE、0、g_pui32DisplayBuffer、size_image*4);//假设缓冲区是整个 SRAM 空间
LCDIntEnable (LCD0_BASE、(LCD_INT_DMA_DONE | LCD_INT_SYNC_LOST |
LCD_INT_underflow | LCD_INT_PAL_LOAD |
LCD_INT_EOF0 | LCD_INT_EOF1);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我想从非紧凑24 bpp 切换到 raster_fmt_active_16bpp。 这使我们能够以两倍的速度移动数据、但 tivaware lcd.h 标头中未对数据进行声明、该数据仅存在于文档中。 [/报价]

    我不具备 LCD 控制器方面的专业知识。 至于 raster_fmt_active_16bpp、 我认为这可能是一个文档问题。 我试着回到10多年前的 TivaWare 版本、 lcd.h 文件中没有 raster_fmt_active_16bpp。 TivaWare SDK 中也没有任何光栅模式示例、因为这些示例是针对具有 kentec320x240x16_ssd2119 LCD 的 EVM 开发的。 该 LCD 具有内置帧缓冲器的集成 SSD2119显示控制器。 可以通过8080或6800处理器等 MPU 接口访问显示控制器。 我认为、如果您同样选择 LCD、您将看到性能提高。 根据我的描述、您正尝试访问一个通过 EPI 访问的外部帧缓冲区。 您的性能将受到外部存储器访问的限制。