首先非常感谢雅特力科技赠送的开发板!!之前我一直在寻找一颗高性价比,同时支持硬件I2C的主控MCU,用于一款HDMI转eDP的便携液晶显示器的驱动板的主控MCU。后来机缘巧合听说了雅特力的AT32F421这颗芯片,当看到它的价格和配置的时候,瞬间让我震惊!真的是理想的主控MCU首选!
这次测评中,我主要还是想要用AT32来实现HDMI转eDP的主控。视频处理器我选择的是新港海岸的NCS8803,该视频处理器需要通过外部MCU对它进行初始化,同时需要实时监控eDP屏幕的状态和HDMI电缆的接入状态,然后通过监控视频处理器的模拟端寄存器进行实时的动态配置和复位等操作,从而支持HDMI的热插拔、eDP屏幕参数配置 和 EDID参数计算和动态生成等工作。在申请本开发板的过程中,我就已经开始设计制作视频处理器部分的PCB了,然后等开发板到了以后,用杜邦线将两个板子连起来就可以调试了。
首先是视频处理器部分的原理图连接
这样看起来还是非常清晰明了的。这里需要MCU控制的有I2C(主要负责对视频处理器的内部寄存器控制),PWD(开关机控制)和RSTB(复位控制)。同时eDP屏幕端也是需要MCU参与控制的,屏幕端原理图如下:
这里主要需要MCU控制的一个是EDP_BL_EN(屏幕背光开启信号)和EDP_BL_PWM(背光亮度信号)。所以需要MCU提供一路PWM亮度输出。
然后画好电源和一些调试接口,同时为了方便显示屏幕的工作状态和相关信息,我还添加了一个OLED显示屏,用于开发和调试期间使用,也一样跟视频处理器挂到同一路I2C上。然后就完成了PCB的Layout工作,画完的PCB如下图:
然后用3D图简单说明下重要的部分:
然后没过几天板子就回来了:
然后贴片并安装焊接好插件和模块等:
然后此时我的开发板也到了:
然后大约经过了1天多的调试,终于成功点亮!
-------------------------------------------------------------------------------------------------------------------------------
然后接下来大致说下代码。首先从雅特力官网下载最新对应型号的固件库(一定下载对应系列的):
解压完以后,这里重点是I2C程序,所以直接找到固件库中的I2C的例子(我这里采用的是DMA的I2C):
首先是main.c文件中,几乎关键用户相关的操作全都在这里,主要根据你的链接修改这里的宏配置即可:
当然,如果你有自己的工程,需要将固件库中的I2C代码移植到你的工程中的话,还要注意在at32f421_int.c中也有相应的中断处理代码需要同步移植:
同时,这个I2C的中断代码,是采用宏定义名字与汇编启动文件中的中断入口点对应的,宏也不要忘记复制:
然后就是PWM输出,我这里参考的是:
既采用timer3的CH1输出一路PWM,主要的代码也在main.c中:
其中各个cxdt_val的值,就是对应的占空比,但是它的最大值为665,既100%时,该变量取值为665。这些变量的初始值也在该文件中有定义:
至于视频处理器部分的初始化和控制,就直接按照新港海岸给提供的DEMO移植一下就OK,然后将对应的I2C读写函数改为雅特力固件库提供的I2C操作函数即可:
(首先是我自己封装了一层)
(然后才是给其他驱动使用)
然后是OLED部分也同理:
好了,到这里我们就把比较关键的代码搞定了,是不是非常简单易用?确实,固件库里面给的例子可以说是非常的全!而且写的也非常通俗易懂,方便用户移植,给开发者节省了大量的调试时间。AT32系列MCU超高的性价比,同时提供了非常完善的资料和固件库,里面有非常丰富的例程,可以说无论是用来做项目还是创客DIY都是性价比非常高的首选MCU!
最后再次感谢雅特力科技赠送的开发板!让我有机会学习性价比如此之高的MCU!!而且上手如此轻松简单!!最后希望本文能够入选,获得AT-LINK+再次进行学习和深入研究!!非常感谢!!
|