我尝试将以下内容直接发送给 TI 支持、但这太痛苦了、所以我将其发布在这里、以防它对其他人有用。
在开发过程中、我遇到了一些问题、我会将这些问题称为芯片异常、但您的勘误表中目前未记录这些问题。
- 我为菊花链单次 PWM 配置了 Timer 1A 和 B 以及 Timer 2 A 和 B。 所有计时器均配置为具有相同的周期和占空比。 如果我尝试将计时器配置为大于16位的周期,则当上一个计时器过期时,链中的下一个计时器不会触发。 仅计时器1A 运行。 如果我将计时器配置为重复计时、它们按预期工作、或者如果我将计时器配置为65536或更短的周期、则它们按预期工作。 如果我将预分频设置或预分频匹配设置为非零,则链中的下一个计时器不会启动。 我找到的唯一权变措施是使用 ALTCLK 来驱动计时器、以获得我想要的更长周期。 系统以120MHz 的频率运行、我尝试将菊花链的每个相位设置为6ms。
- 我将调色板动画用于 LCD 控制器。 由于固件中存在错误、每隔30秒左右会发生几百次调色板写入的突发。 启动后大约20分钟到8小时、显示屏将闪烁、恢复它的唯一方法是重置主 LCD 时钟(LCDCLKRESET 中的 MAIN 位)。 我们每次修改调色板条目0时,使用的 TI LCD 库都会使用 RAM 结构写入调色板条目0,即使调色板条目0没有被修改。 如果条目0被更改、并且一旦 LCD 控制器被设置、应用程序从不更改条目0、我将库代码更改为仅更新调色板条目0。 使用的 TI 库版本是“这是 Tiva 外设驱动程序库版本2.0.1.11577的一部分”。 LCD 初始化代码为:
Ui32SysClkHz = 120000000
define PIXEL_CLOCK_FREQ 6000000
。
。
。
SysCtlPeripheralEnable (SYSCTL_Periph_LCD0);
while (!(SysCtlPeripheralReady (SYSCTL_Periph_LCD0)));
LCDModeSet (LCD0_BASE、(LCD_MODE_RRAGH |LCD_MODE_AUTO_UFLOW_RESTART)、PIXEL_CLOCK_FREQ、ui32SysClkHz);
LCDRasterConfigSet (LCD0_BASE、Raster FMT_ACTIVE_PALETTIZED_12位、0);
LCDRasterTimingSet (LCD0_BASE、&g_sRasterTimings);
LCDDMAConfigSet (LCD0_BASE、LCD_DMA_BURST_4 | LCD_DMA_BYTE_ORDER 0123);
LCDRasterFrameBufferSet (LCD0_BASE、0、(uint32_t *)&lcdMemory、sizeof (lcdMemory));
LCDRasterPaletteSet (LCD0_BASE、LCD_PAGE_TYPE_8bpp、(uint32_t *) lcdMemory.palette、(uint32_t *) paletteData、0、 sizearray (paletteData));
LCDRasterEnable (LCD0_BASE);