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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版