根据勘误 LCD#01:
"只要通过置位 LCD LIDD 控制(LCDLIDDCTL)寄存器的 DMAEN 位来请求 LIDD 模式 DMA 事务、在分别置位 LCDDMABAFB 和 LCDDMACAFB 寄存器中的 LCD DMA 帧缓冲器 n 基地址和上限地址之后、 下一次尝试访问任何 LCD 控制器寄存器会导致微控制器和 JTAG 连接无响应。 上电复位可恢复器件。"
建议的解决方法是在每次 DMA 事务之前插入复位 DMA 引擎的代码、并在该复位期间将 CS 线路临时重新配置为 GPIO。
我正在使用 来自 TivaWare 外设库2.1.4的 LCD.c 中的 API 进行 LIDD 模式 DMA 事务、如下所示。 似乎适用勘误表 LCD#01。 但是 、我 从未观察到控制器在写入 LCD 时无响应的任何问题。 我目前没有使用推荐的解决方法。 我有2个问题:
1.如果 对我的代码应用了勘误表 ,我是否会每次都看到错误? 或者,这是否是一个静止的问题,在一个蓝色的月里,它的丑陋头会被一个可怕的问题?
2.我是否应该应用变通办法? 我对这种变通方法有点怀疑。 如果 有必要、为什么它没有在 LCD.c LCDIDDDMAWrite()内实现?
我的代码示例如下:
//逐行发送脏矩形
for (int y = top; y <= bottom;y++)
{
//指向 nex 显示行;
//设置 DMA 的开始和长度
(笑声)
//启动 DMA 传输
uint32_t mask =(LCD_INT_EOF0 | LCD_INT_DMA_DONE);
LCDIntClear (LCD0_BASE,MASK);
LCDIDDDMAWrite (LCD0_BASE、0、dmaStart、dmaLength);
//等待 DMA 完成
while ((LCDIntStatus (LCD0_BASE、false)& mask)!= mask){}
LCDIDDDMADisable (LCD0_BASE);
}