你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 R/2R 电阻网络驱动VGA

[复制链接]
codysafe 发布时间:2019-4-21 00:30
先上效果图。
NES 模拟器,用的原子哥的代码,很流畅(为了USB超频的192M)。PS 用论坛里的那个模拟器,卡的不能看,超频到260M都不行。

nes.jpg
stm32f4disco 的demo。800x600@60Hz 超频了,180M很花。这是配置到260M。

demo.jpg

原本想说下历史的,想想还是不废话了。
LTDC 接口的行场同步对应VGA的行场同步,数据用电阻网络接到VGA数据引脚。
图中R10 R16 应该是33R。

connect.png dat.png
VGA电阻网络这里就不介绍了,这里只说stm32 怎么配置VGA时序。
左边是VGA的,右边是RM文档的。图是一样的,就是说LTDC参数合适,VGA就正常了。

VGA.png st.png
关于VGA需要的参数大家可以从http://www.tinyvga.com/vga-timing 上找。上面demo配置的是800x600@60Hz。

需要配置的是 Pixel freq 和下面2个表格的。如果看过RM文档LTDC部分,肯定能发现LTDC 中也有对应的参数。

QQ截图20190421000228.png
下面是我的配置部分。红色部分是要配置的。

****************************************************************************

/* LTDC Configuration *********************************************************/  
  /* Polarity configuration */
  /* Initialize the horizontal synchronization polarity as active low */
  LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AH;     // 网上的图是低有效,我试过的几个显示器是高有效 ?
  /* Initialize the vertical synchronization polarity as active low */  
  LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AH;     // 网上的图是低有效,我试过的几个显示器是高有效 ?
  /* Initialize the data enable polarity as active low */
  LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;     
  /* Initialize the pixel clock polarity as input pixel clock */
  LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;
  
  /* Configure R,G,B component values for LCD background color */                  
  LTDC_InitStruct.LTDC_BackgroundRedValue = 0;            
  LTDC_InitStruct.LTDC_BackgroundGreenValue = 0;         
  LTDC_InitStruct.LTDC_BackgroundBlueValue = 0;  
  
  /* Configure PLLSAI prescalers for LCD */
  /* Enable Pixel Clock */
  /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
  /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAI_N = 192 Mhz */
  /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAI_R = 192/4 = 48 Mhz */
  /* LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 48/8 = 6 Mhz */
  RCC_PLLSAIConfig(160, 7, 2);     // 我是12M晶振  PLL_M=6  
  RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
  
  /* Enable PLLSAI Clock */
  RCC_PLLSAICmd(ENABLE);
  /* Wait for PLLSAI activation */
  while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET)
  {
  }
  
  /* Timing configuration */  
  /* Configure horizontal synchronization width */     
LTDC_InitStruct.LTDC_HorizontalSync = 127;
  /* Configure vertical synchronization height */
  LTDC_InitStruct.LTDC_VerticalSync = 3;
  /* Configure accumulated horizontal back porch */
LTDC_InitStruct.LTDC_AccumulatedHBP = 215;
  /* Configure accumulated vertical back porch */
  LTDC_InitStruct.LTDC_AccumulatedVBP = 26;  
  /* Configure accumulated active width */  
LTDC_InitStruct.LTDC_AccumulatedActiveW = 1015;
  /* Configure accumulated active height */
  LTDC_InitStruct.LTDC_AccumulatedActiveH = 626;
  /* Configure total width */
  LTDC_InitStruct.LTDC_TotalWidth = 1055;
  /* Configure total height */
  LTDC_InitStruct.LTDC_TotalHeigh = 627;
  
  LTDC_Init(&LTDC_InitStruct);
同步 前沿后沿那些可以看下RM文档483页,也就是下面这个截图。

QQ截图20190421001328.png

Pixel freq 误差要尽量小,最简单的方式用cube配,不关心怎么算的。

最后来个板子的靓照。

PCB.jpg


收藏 1 评论10 发布时间:2019-4-21 00:30

举报

10个回答
zxcv1ddd 回答时间:2019-4-21 00:40:20
谢谢分享
湛无双 回答时间:2019-4-21 01:05:01
火前留名,楼主可以试试更牛逼的H743,以前可以到400M,最新消息据说可以到480M,那样可以做到更高的分辨率。
zmbiesan 回答时间:2019-4-21 10:27:10
好厉害的样子
Kevin201707 回答时间:2019-4-21 11:28:37
点赞,好厉害
eafs 回答时间:2019-4-21 11:30:07
看看
toofree 回答时间:2019-4-21 23:16:46
厉害!电阻网络搞VGA,成本够低
木森林的年轮 回答时间:2019-4-22 17:48:57
这个很优秀,记得只看还看到用esp8266搞的,不过他是把它做成一个模块,可以插拔。
codysafe 回答时间:2019-4-22 21:29:07
湛无双 发表于 2019-4-21 01:05
火前留名,楼主可以试试更牛逼的H743,以前可以到400M,最新消息据说可以到480M,那样可以做到更高的分辨率 ...

sdram 的速度是瓶颈。
zxcv1ddd 回答时间:2019-4-22 21:47:39
多谢分享
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版