Commit Graph

9 Commits

Author SHA1 Message Date
zhy200308 5abd1abece 关闭每帧串口日志(默认) + 记录数据手册时钟上限与40MHz提速路径
- 数据手册 18.3.4: 4-line SPI 写周期 twc>=100ns => 标称上限 10MHz;
  读 150ns=>6.67MHz(不涉及)。现运行 20MHz 已超规格2倍但零错误。
- 结论: 错位是无TE的扫描不同步撕裂,非时钟错误,提速只降概率。
- ILI9341_LOG_EN 默认置0: 每帧阻塞打印~8ms会打乱帧节奏、放大撕裂观感。
- spi.c 注释记录到40MHz的PLLQ改法(仅SPI123用pll1_q,隔离)及长线风险。
2026-07-08 17:05:37 +08:00
zhy a26b1f7a8a 更新日志打印 2026-07-08 15:16:35 +08:00
zhy200308 1b8f0f806b ILI9341: 修复每帧多耗~5ms的空等 + SPI 10MHz->20MHz,解决移动错位
日志实测定位:单块 flush 耗时~9.7ms,远超面板扫描周期(~16ms)导致扫描
在写入途中'套圈',方块被撕成多个错位副本。两处根因:
- LCD_SPI_WaitShiftEmpty 轮询 TXC,但 HAL 在 EOT 后关闭 SPI,TXC 恒0,
  每帧白等满 5ms 超时。HAL 的 EOT/阻塞传输已保证数据移出,直接删除。
- SPI 仅 10MHz(pll1_q40M/4),0.8us/byte。改 prescaler 4->2 = 20MHz。
合计单块 flush ~9.7ms -> ~2.3ms,远小于扫描周期,错位应显著消除。
spi.c 与 .ioc(本就=_2) 对齐。
2026-07-08 12:18:47 +08:00
zhy b4e0892879 编译烧录版本 2026-07-08 11:46:56 +08:00
zhy cdb7c02e14 添加日志打印文件 2026-07-08 11:45:27 +08:00
zhy200308 fd6c18c4c7 ILI9341: 增加 DMA/纯阻塞 两种传输 + 每次 flush 日志,便于定位错位/残留
- ILI9341_USE_DMA 开关:1=DMA+同步等待,0=纯阻塞SPI(不用DMA),同一入口
- ILI9341_LOG_EN/LOG_EVERY:每次(或每N次)flush 打印 方式/区域/字节/耗时/
  错误码/累计错误/超时/缓冲地址(判断是否落在AXI SRAM)
- DWT 微秒计时;纯阻塞路径无 D-Cache/DMA 一致性问题,用于对照
- README 增加两种模式对照判读表
2026-07-08 11:40:20 +08:00
zhy200308 1273a14bf2 ILI9341: 刷新改为 DMA+任务内同步等待,消除移动残留竞态
- 中断只置完成标志,等待/收尾/回调全部移到任务上下文
- 去掉 ISR 内 lv_disp_flush_ready、ISR 内 Abort、双重收尾等竞态
- flush 返回时该块像素必已完整写入,LVGL 不会提前复用缓冲
- 拉高 CS 前等待 SPI 移位排空,避免尾部像素被截断
- 传输 50ms 超时后重建 SPI 自恢复
2026-07-08 11:16:57 +08:00
zhy200308 e4d61b19f0 重构 ILI9341+LVGL 驱动:异步 DMA + 硬件旋转,修复残影与白屏
- 硬件 MADCTL 旋转,删除软件转置,LVGL 坐标与面板 1:1,消除移动残影
- 全异步 DMA:flush 启动即返回,完成/出错由 SPI 中断收尾,去掉信号量阻塞
- DMA 缓冲经 .lcd_ram 段强制放入 AXI SRAM,规避 DTCM 不可被 DMA 访问导致的白屏
- LV_COLOR_16_SWAP=1,LVGL 直出面板字节序,省去逐像素交换/拷贝
- 看门狗超时重建 SPI 自恢复,单次异常不再级联长时间白屏
- 定制 scatter(motor_ili9341_lcd.sct) 并接入 uvprojx
- 新增 README_ILI9341.md 说明根因/设计/构建验证
2026-07-08 11:02:42 +08:00
zhy b4423fcfa2 首次初始化 2026-07-08 10:30:07 +08:00