I.MX6U-ALPHA/Mini开发平台介绍
要学嵌入式Linux驱动开发肯定需要一个硬件平台,也就俗称的开发板,本书使用的是正点原子出品的I.MX6U-ALPHA/Mini开发板。ALPHA是全功能开发板,Mini是精简版。这两款都是以NXP的I.MX6ULL为核心的Cortex-A7开发平台,板载资源丰富,非常适合以前学过Cortex-M内核单片机(比如STM32)的工程进阶嵌入式Linux开发。工欲善其事,必先利其器,本章我们就先来详细了解一下未来将会陪伴我们很长一段时间的朋友——I.MX6U-ALPHA/Mini开发平台。
5.1 正点原子I.MX6U-ALPHA/Mini开发板资源初探
正点原子目前已经拥有多款STM32、I.MXRT以及FPGA开发板,这些开发板常年稳居淘宝销量冠军,累计出货超过10W套。这款ALPHA开发板,是正点原子推出的第一款Linux开发板,采用底板+核心板的形式。接下来我们分别介绍I.MX6U-ALPHA开发板的底板和核心板。
5.1.1 I.MX6U-ALPHA开发板底板资源
首先,我们来一下I.MX6U-ALPHA开发板的底板资源图,如图5.1.1.1所示:
图5.1.1.1 I.MX6U-ALPHA开发板底板资源图
从图5.1.1.1可以看出,I.MX6U-ALPHA开发板底板资源十分丰富,把I.MX6UL/ULL的内部资源发挥到了极致,基本所有I.MX6UL/ULL的内部资源都可以在此开发板上验证,同时扩充丰富的接口和功能模块,整个开发板显得十分大气。
开发板的外形尺寸为100mm*180mm大小,板子的设计充分考虑了人性化设计,并结合正点原子多年的开发板设计经验,经过多次改进,最终确定了这样的设计。
正点原子I.MX6U-ALPHA开发板底板板载资源如下:
- 1个核心板接口,支持I.MX6UL/6ULL等核心板
- 1个电源指示灯(蓝色)
- 1个状态指示灯(红色)
- 1个六轴(陀螺仪+加速度)传感器芯片,ICM20608
- 1个高性能音频编解码芯片,WM8960
- 1路CAN接口,采用TJA1050芯片
- 1路485接口,采用SP3485芯片
- 1路RS232串口(母)接口,采用SP3232芯片
- 1个ATK模块接口,支持正点原子蓝牙/GPS/MPU6050/手势识别等模块
- 1个光环境传感器(光照、距离、红外三合一)
- 1个摄像头模块接口
- 1个OLED模块接口
- 1个USB串口,可用于代码调试
- 1个USB SLAVE(OTG)接口,用于USB从机通信
- 1个USB HOST(OTG)接口,用于USB主机通信
- 1个有源蜂鸣器
- 1个RS232/RS485选择接口
- 1个串口选择接口
- 1个TF卡接口(在板子背面)
- 2个10M/100M以太网接口(RJ45)
- 1个录音头(MIC/咪头)
- 1路立体声音频输出接口
- 1路立体声录音输入接口
- 1个小扬声器(在板子背面)
- 2个扬声器外接接口,左右声道。
- 1组5V电源供应/接入口
- 1组3.3V电源供应/接入口
- 1个直流电源输入接口(输入电压范围:DC6~18V)
- 1个启动模式选择配置接口
- 1个RTC后备电池座,并带电池
- 1个复位按钮,可用于复位MPU和LCD
- 1个功能按钮
- 1个电源开关,控制整个板的电源
- 1个Mini PCIE 4G模块接口
- 1个Nano SIM卡接口
- 1个SDIO WIFI接口正点原子I.MX6U-ALPHA开发板底板的特点包括:
1)、接口丰富。板子提供十来种标准接口,可以方便的进行各种外设的实验和开发。
2)、设计灵活。我们采用核心板+底板形式,板上很多资源都可以灵活配置,以满足不同条件下的使用;我们引出了105个IO口,极大的方便大家扩展及使用。
3)、资源丰富。板载高性能音频编解码芯片、六轴传感器、百兆网卡、光环境传感器以及各种接口芯片,满足各种应用需求。
4)、人性化设计。各个接口都有丝印标注,且用方框框出,使用起来一目了然;部分常用外设大丝印标出,方便查找;接口位置设计合理,方便顺手。资源搭配合理,物尽其用。
5.1.2 I.MX6U-Mini开发板底板资源
首先,我们来一下I.MX6U-Mini开发板的底板资源图,如图5.1.2.1所示:
图5.1.2.1 I.MX6U-Mini开发板底板资源图
从图5.1.2.1可以看出,I.MX6U-Mini开发板底板其实就是I.MX6U-ALPHA开发板的精简底板。Mini开发板的外形尺寸为100mm*130mm。
正点原子I.MX6U-Mini开发板底板板载资源如下:
- 1个核心板接口,支持I.MX6ULL核心板。
- 1个电源指示灯(蓝色)。
- 1个状态指示灯(红色)。
- 1路CAN接口,采用TJA1050芯片。
- 1路485接口,采用SP3485芯片。
- 1个ATK模块接口,支持正点原子蓝牙/GPS/MPU6050/手势识别等模块。
- 1个摄像头模块接口。
- 1个USB串口,可用于代码调试。
- 1个USB HOST接口,用于USB主机通信。
- 1个有源蜂鸣器 。
- 1个RS232/RS485选择接口。
- 1个TF卡接口。
- 1个10M/100M以太网接口(RJ45)
- 1组5V电源供应/接入口
- 1组3.3V电源供应/接入口
- 1个直流电源输入接口(输入电压范围:DC6~18V)
- 1个启动模式选择配置接口
- 1个RTC后备电池座,并带电池
- 1个复位按钮,可用于复位MPU和LCD
- 1个ON/OFF按钮。
- 1个功能按钮
- 1个电源开关,控制整个板的电源
- 1个SDIO WIFI接口正点原子I.MX6U-Mini开发板底板的特点包括:
1)、外设部分电路原理图基本与ALPHA开发板一致,因此可以直接使用ALPHA开发板的所有开发资料、视频和教程。
2)、Mini底板相比ALPHA开发板在成本上有优势,适合学生朋友使用。
5.1.3 I.MX6U核心板资源
接下来,我们来看I.MX6ULL核心板资源图,正点原子的I.MX6ULL核心板根据存储芯片的不同分为EMMC和NAND两种,根据对外提供的接口可以分为邮票孔和BTB两种。本教程主要使用与教学的,所以只会讲解BTB接口的核心板,BTB接口的NAND版本核心板如图5.1.3.1所示:
图5.1.3.1 I.MX6ULL NAND BTB接口核心板资源图
从图5.1.3.1可以看出,I.MX6ULL核心板板载资源丰富,可以满足各种应用的需求。整个核心板的外形尺寸为46mm*36mm大小,非常小巧,并且采用了贴片板对板连接器,使得其可以很方便的应用在各种项目上。I.MX6ULL NAND版核心板为工业级工作温度,可以应用在温度要求严格的场合。
正点原子I.MX6ULL NAND版核心板板载资源如下:
- CPU:MCIMX6Y2CVM05AB(工业级)或MCIMX6Y2CVM08AB(工业级),主频分别为528MHz和800MHz(实际为792MHz),BGA289
- 外扩DDR3L:NT5CC128M16JR-EK,256MB字节,工业级
- NAND FLASH:MT29F2G08ABAEAWP-IT或 MT29F4G08ABADAWP-IT,分别为256MB/512MB字节,均为工业级
- 两个2*30的防反插BTB座,共引出120 PIN 。BTB接口的EMMC版本核心板如图5.1.3.2所示:
图5.1.3.2 I.MX6ULL EMMC BTB接口核心板资源图
从图5.1.3.2可以看出,EMMC版本的核心和NAND版本的基本一样,不同之处在于将NAND换成了EMMC,将DDR3L换成了512MB的商业级。因此正点原子的EMMC核心板为商业级的工作温度范围,如需工业级的请联系定制。
正点原子I.MX6ULL EMMC版核心板板载资源如下: - CPU:MCIMX6Y2CVM08AB(工业级),800MHz(实际792MHz),BGA289
- 外扩DDR3L:NT5CC256M16EP-EK,512MB字节,商业级。
- EMMC:KLM8G1GET,这是一个8GB的EMMC芯片。
- 两个2*30的防反插BTB座,共引出120 PIN
正点原子I.MX6ULL核心板的特点包括:
- 体积小巧。核心板仅46mm*36mm大小,方便使用到各种项目里面。
- 集成方便。核心板使用120P BTB连接座,可以非常方便的集成到客户PCB上,更换简单,方便维修测试。
- 资源丰富。核心板板载:256MB/512MB DDR3L、可以选择NAND或EMMC等存储器,可以满足各种应用需求。
- 性能稳定。核心板采用6层板设计,单独地层、电源层,且关键信号采用等长线走线,保证运行稳定、可靠。
- 不管是NAND还是EMMC核心板均通过了CE和FCC认证。
- 人性化设计。底部放有详细丝印,方便安装;按功能分区引出IO口,方便布线。
5.2 正点原子I.MX6U-ALPHA/Mini开发板资源说明
资源说明部分,这两个开发板我们将分为两个部分说明:硬件资源说明和软件资源说明。
5.2.1 I.MX6U-ALPHA硬件资源说明
这里我们首先详细介绍I.MX6U-ALPHA开发板的各个部分,我们将按逆时针的顺序依次介绍:
1、CAN接口
这是开发板板载的CAN总线接口(CAN),通过2个端口和外部CAN总线连接,即CANH和CANL。这里提醒大家:CAN通信的时候,必须CANH接CANH,CANL接CANL,否则可能通信不正常!
2、RS232/485选择接口
这是开发板板载的RS232(COM3)/485选择接口(JP1),因为RS485基本上就是一个半双工的串口,为了节约IO,我们把RS232(COM3)和RS485共用一个串口,通过JP1来设置当前是使用RS232(COM3)还是RS485。这样的设计还有一个好处。就是我们的开发板既可以充当RS232到TTL串口的转换,又可以充当RS485到TTL485的转换。(注意,这里的TTL高电平是3.3V)
3、I.MX6ULL核心板接口
这是开发板底板上面的核心板接口,由2个2*30的贴片板对板接线端子(3710F公座)组成,可以用来插正点原子的I.MX6UL/ULL核心板等,从而学习I.MX6UL/6ULL等芯片,达到一个开发板,学习多款SOC的目的,减少重复投资。
4、RGBLCD接口
这是转接板自带的RGB LCD接口(LCD),可以连接各种正点原子的RGB LCD屏模块,并且支持触摸屏(电阻/电容屏都可以)。采用的是RGB888格式,可显示1677万色,色彩显示丰富。
5、后备电池接口
这是I.MX6UL/ULL后备区域的供电接口,可以用来给I.MX6UL/ULL的后备区域提供能量,在外部电源断电的时候,维持SNVS区域数据的存储,以及RTC的运行。
6、USB HOST(OTG)
这是开发板板载的一个侧插式的USB-A座(USB_HOST),由于I.MX6U的USB支持OTG功能,所以USB既可作HOST,又可做SLAVE。我们可以通过这个USB-A座,连接U盘/USB鼠标/USB键盘等其他USB从设备,从而实现USB主机功能。不过特别注意,由于USB HOST和USB SLAVE是共用一个USB端口,所以两者不可以同时使用。
7、USB串口/串口1
这是USB串口同I.MX6U的串口1进行连接的接口(JP5),标号RXD和TXD是USB转串口的2个数据口(对CH340C来说),而U1_TX(TXD)和U1_RX(RXD)则是I.MX6U串口1的两个数据口。他们通过跳线帽对接,就可以连接在一起了,从而实现I.MX6U的串口通信。
设计成USB串口,是出于现在电脑上串口正在消失,尤其是笔记本,几乎清一色的没有串口。所以板载了USB串口可以方便大家调试。而在板子上并没有直接连接在一起,则是出于使用方便的考虑。这样设计,你可以把I.MX6U-ALPHA开发板当成一个USB转TTL串口,来和其他板子通信,而其他板子的串口,也可以方便地接到开发板上。
8、USB SLAVE(OTG)
这是开发板板载的一个MiniUSB头(USB_SLAVE),用于USB从机(SLAVE)通信,与上面的USB HOST一起作为OTG功能。通过此MiniUSB头,开发板就可以和电脑进行USB通信了。注意:该接口不能和USB HOST同时使用。
开发板总共板载了两个MiniUSB头,一个(USB_TTL)用于USB转串口,连接CH340C芯片;另外一个(USB_SLAVE)用于I.MX6U内部USB。同时开发板可以通过此MiniUSB头供电,板载两个MiniUSB头(不共用),主要是考虑了使用的方便性,以及可以给板子提供更大的电流(两个USB都接上)这两个因素。
9、USB转串口
这是开发板板载的另外一个MiniUSB头(USB_TTL),用于USB连接CH340C芯片,从而实现USB转串口。同时,此MiniUSB接头也是开发板的电源提供口。
10、摄像头模块接口
这是开发板板载的一个摄像头模块接口(P1),摄像头模块(需自备),对准插入到此插槽中。
11、启动(BOOT)拨码开关
I.MX6U支持多种启动方式,比如SD卡、EMMC、NAND、QSPI FALSH和USB等,要想从某一种设备启动就必须先设置好启动拨码开关。I.MX6U-ALPHA开发板用了一个8P的拨码开关来选择启动方式,正点原子开发板支持从SD卡、EMCM、NAND和USB这四种启动方式,这四种启动方式对应的拨码开关拨动方式已经写在了开发板上。大家在使用的时候根据自己的实际需求设置拨码开关即可。
12、TF卡接口
这是开发板板载的一个标准TF卡接口(TF_CARD),该接口在开发板的背面,采用小型的TF卡接口,USDHC方式驱动,有了这个TF卡接口,就可以满足海量数据存储的需求。
13、光环境传感器
这是开发板板载的一个光环境三合一传感器(U9),它可以作为:环境光传感器、近距离(接近)传感器和红外传感器。通过该传感器,开发板可以感知周围环境光线的变化,接近距离等,从而可以实现类似手机的自动背光控制。
14、蜂鸣器
这是一个有源蜂鸣器,通过高低电平控制蜂鸣器的开关。
15、SDIO WIFI接口
这是开发板上的一个SDIO WIFI(P4)接口,可以通过此接口连接正点原子出品的SDIO WIFI模块。SDIO WIFI接口和TF卡共用一个USDHC接口,因此不能同时和TF卡使用。
16、ATK模块接口
这是开发板板载的一个正点原子通用模块接口(JP2),目前可以支持正点原子开发的GPS模块、蓝牙模块、MPU6050模块、激光测距模块和手势识别模块等,直接插上对应的模块,就可以进行开发。后续我们将开发更多兼容该接口的其他模块,实现更强大的扩展性能。
17、左右声道喇叭接口
开发板板载了一个高性能的音频解码芯片WM8960,此芯片可以驱动左右声道2个8Ω,1W的小喇叭,这两个接口用于外接两个左右声道小喇叭。不过在I.MX6U-ALPHA开发板的背面已经默认焊接了一个小喇叭,这个小喇叭接到了右声道上,因此如果要在此接口的右声道上外接小喇叭,那么必须先将开发板上自带的喇叭拆掉,否则WM8960驱动能力可能不足。
18、耳机输出接口
这是开发板板载的音频输出接口(PHONE),该接口可以插3.5mm的耳机,当WM8960放音的时候,就可以通过在该接口插入耳机,欣赏音乐。此接口支持耳机插入检测,如果耳机不插入的话默认通过喇叭播放音乐,如果插入耳机的话就关闭喇叭,通过耳机播放音乐。
19、录音输入接口
这是开发板板载的外部录音输入接口(LINE_IN),通过咪头我们只能实现单声道的录音,而通过这个LINE_IN,我们可以实现立体声录音。
20、复位按键
这是开发板板载的复位按键(RESET),用于复位I.MX6U,还具有复位液晶的功能,因为液晶模块的复位引脚和I.MX6U的复位引脚是连接在一起的,当按下该键的时候,I.MX6U和液晶一并被复位。
21、用户按键KEY
这是开发板板载的1个机械式输入按键(KEY0),可以做为普通按键输入使用。
22、红色用户LED灯
这是开发板板载的1个LED灯,为红色,用户可以使用此LED灯。在调试代码的时候,使用LED来指示程序状态,这是非常不错的一个辅助调试方法。
23、蓝色电源指示LED灯
这是开发板电源指示LED灯,为蓝色,当板子供电正常的时候此灯就会常亮。如果此灯不亮的话就说明开发板供电有问题(排除LED灯本身损坏的情况)。
24、WM8960音频DAC
这是一颗欧胜公司出品的音频DAC芯片,用于实现音乐播放与录音。
25、MIC(咪头)
这是开发板的板载录音输入口(MIC),该咪头直接接到WM8960的输入上,可以用来实现录音功能。
26、Nano SIM卡接口
这是开发板上的Nano SIM卡接口,如果要使用4G模块的话就需要在此接口中插入Nano SIM卡。
27、ICM20608六轴传感器
这是开发板板载的一个六轴传感器芯片(U6),型号为ICM20608,此芯片采用SPI接口与I.MX6U相连接。ICM20608内部集成1个三轴加速度传感器和1个三轴陀螺仪,该传感器在姿态测量方面应用非常广泛。所以喜欢玩姿态测量的朋友,也可通过本开发板进行学习。
28、Mini PCIE 4G接口
这是开发板板载的一个Mini PCIE座,但是本质上走的USB协议,通过此接口可以连接4G模块,比如高新兴物联的ME3630。接上4G模块以后I.MX6U-ALPHA开发板就可以实现4G上网功能,对于不方便布网线或者没有WIFI的场合来说是个不错的选择。
29、DC6~16V电源输入
这是开发板板载的一个外部电源输入口(DC_IN),采用标准的直流电源插座。开发板板载了DC-DC芯片(JW5060T),用于给开发板提供高效、稳定的5V电源。由于采用了DC-DC芯片,所以开发板的供电范围十分宽,大家可以很方便的找到合适的电源(只要输出范围在DC6~16V的基本都可以)来给开发板供电。在耗电比较大的情况下,比如用到4.3屏/7寸屏/网口的时候,建议使用外部电源供电,可以提供足够的电流给开发板使用。
30、电源开关
这是开发板板载的电源开关(K1)。该开关用于控制整个开发板的供电。这是一个两段式拨动开关,拨到右边关闭开发板电源,整个开发板都将断电,电源指示灯(PWR)会随之熄灭。拨到右边打开开发板电源,整个板子开始供电,电源指示灯(PWR)点亮。
31、5V电源输入/输出
这是开发板板载的一组5V电源输入输出排针(2*3)(VOUT2),该排针用于给外部提供5V的电源,也可以用于从外部接5V的电源给板子供电。
同样大家在实验的时候可能经常会为没有5V电源而苦恼不已,正点原子充分考虑到了大家需求,有了这组5V排针,你就可以很方便的拥有一个简单的5V电源(USB供电的时候,最大电流不能超过500mA,外部供电的时候,最大可达3000mA)。
32、3.3V电源输入/输出
这是开发板板载的一组3.3V电源输入输出排针(2*3)(VOUT1),用于给外部提供3.3V的电源,也可以用于从外部接3.3V的电源给板子供电。
大家在实验的时候可能经常会为没有3.3V电源而苦恼不已,有了I.MX6U-ALPHA开发板,你就可以很方便的拥有一个简单的3.3V电源(最大电流不能超过3000mA)。
33、3路USB HOST接口
这是开发板板载的3路USB HOST接口,I.MX6U有两个USB接口,正点原子的I.MX6U-ALPHA开发板通过GL850芯片将I.MX6U的USB2扩展成了4路USB HOST,其中一路用于连接4G模块,另外3路作为USB HSOT,用户可以通过这三路USB HOST接口连接USB鼠标、USB键盘、U盘等设备。
34、引出的IO口
这是开发板IO引出端口JP6,采用2*16排针,总共引出31个IO口。
35、以太网接口1(RJ45)
I.MX6U有两个网络接口:ENET1和ENET2,这是ENET1网络接口,可以用来连接网线,实现网络通信功能。该接口使用I.MX6U内部的MAC控制器外加PHY芯片,实现10/100M网络的支持。
36、以太网接口2(RJ45)
这是开发板板载的以太网接口2,也就是I.MX6U的ENET2网络接口。
37、RS232接口(母)
这是开发板板载的另外一个RS232接口(COM3),通过一个标准的DB9母头和外部的串口连接。通过这个接口,我们可以连接带有串口的电脑或者其他设备,实现串口通信
38、RS485接口
这是开发板板载的RS485总线接口(RS485),通过2个端口和外部485设备连接。这里提醒大家,RS485通信的时候,必须A接A,B接B。否则可能通信不正常
5.2.2 I.MX6U-ALPHA软件资源说明
上面我们详细介绍了正点原子I.MX6U-ALPHA开发板的硬件资源。接下来,我们将向大家简要介绍一下I.MX6U-ALPHA开发板的软件资源。软件资源分为3部分:Linux系统驱动软件资源、裸机例程、Linux驱动例程,我们依次来看一下这三类软件资源的情况。关于Linux系统软件资源如表5.2.2.1所示:
类型 | 描述 | 备注 |
uboot | uboot版本为2016.03 | 提供源码。 支持LCD显示、支持SD卡和EMMC、支持网络、支持NAND Flash、支持环境变量修改等。 |
Linux内核 | 内核版本为4.1.15 | 提供源码 |
根文件系统rootfs | 提供busybox、buildroot、yocto、ubuntu这四种根文件系统及其制作方法 | 提供详细的制作教程 |
QT5根文件系统 | QT版本为5.6.1 | 提供详细的教程 |
交叉编译器 | arm-linux-gnueaihf,版本4.9.4 | 提供软件 |
系统烧写方法 | MFGTOOL和SD卡两种 | 提供详细的使用教程 |
LCD驱动 | RGB LCD驱动 | 提供源码 |
触摸 | FT5xx6、GT9147等电容触摸屏(仅限正点原子在售) | 提供源码 |
485 | RS485 驱动 | 提供源码 |
232 | RS232驱动 | 提供源码 |
CAN | CAN驱动 | 提供源码 |
网络 | PHY为LAN8720 | 提供源码 |
USB HOST | USB HUB为GL850 | 提供源码 |
USB OTG | USB从机和主机 | 提供源码 |
4G无线 | ME3630 4G模块 | 提供源码 |
按键KEY | GPIO | 提供源码 |
LED | GPIO | 提供源码 |
音频 | 音频DAC为WM8960 | 提供源码 |
SDIO WIFI | 正点原子RTL8189模块 | 提供源码 |
GPS | 正点原子GPS模块 | 提供源码 |
环境光传感器(IIC) | AP3216C,IIC接口 | 提供源码 |
六轴传感器(SPI) | ICM20608,SPI接口 | 提供源码 |
TF卡/EMMC | USDHC驱动 | 提供源码 |
摄像头 | OV5640驱动 | 提供源码 |
串口 | UART1驱动 | 提供源码 |
PWM背光 | LCD PWM背光 | 提供源码 |
RTC | I.MX6U内部RTC | 提供源码 |
USB WIFI | RTL8188 | 提供源码 |
表5.2.2.1 开发板Linux系统软件资源
接下来看一下I.MX6U-ALPHA开发板的裸机例程,如表5.2.2.2所示:
编号 | 实验名字 | 编号 | 实验名字 |
1 | leds | 13 | uart |
2 | ledc | 14 | printf |
3 | ledc_stm32 | 15 | ddr3 |
4 | ledc_sdk | 16 | lcd |
5 | ledc_bsp | 17 | rtc |
6 | beep | 18 | i2c |
7 | key | 19 | spi |
8 | clk | 20 | touchscreen |
9 | int | 21 | pwm_lcdbacklight |
10 | epit_timer | ||
11 | key_filter | ||
12 | highpreci_delay |
表5.2.2.2 正点原子I.MX6U-ALPHA开发板裸机例程
从上表可以看出,正点原子的I.MX6U-ALPHA开发板裸机例程似乎不是很多,不像STM32、RT1052那样六七十个裸机例程,这是因为嵌入式Linux和单片机的开发方式以及应用场合不同。单片机学名叫做Microcontroller,也就是微控制器,主要用于控制相关的应用,因此单片机的外设都比较多,比如很多路的IIC、SPI、UART、定时器等等。嵌入式Linux开发主要注重于高端应用场合,比如音视频处理、网络处理等等。比如一个机器人,高性能处理器加Linux系统(或者其他系统)作为机器人的大脑,主要负责接收各个传感器采集的数据然后对原始数据进行处理,得到下一步执行指令,这个往往需要很高的性能。当处理完成得到下一步要做的动作之后大脑就会将数据发给控制机器人各个关节电机的驱动控制器,这些驱动控制器一般都是单片机做的。所以大家在学习嵌入式Linux开发的时候一定不要深陷裸机,我们之所以讲解裸机是为了给嵌入式Linux打基础,让大家了解所使用的SOC、了解GCC那一套工作流程,最终的目的都是为了嵌入式Linux做准备的。
看完裸机例程以后我们最后再来看一下正点原子为I.MX6U-ALPHA开发板准备的嵌入式Linux驱动例程,如表5.2.2.3所示:
编号 | 实验名字 | 编号 | 实验名字 |
1 | chrdevbase | 13 | irq |
2 | led | 14 | blockio |
3 | newchrled | 15 | noblockio |
4 | dtsled | 16 | asyncnoti |
5 | gpioled | 17 | platform |
6 | beep | 18 | dtsplatform |
7 | atomic | 19 | miscbeep |
8 | spinlock | 20 | input |
9 | semaphore | 21 | iic |
10 | mutex | 22 | spi |
11 | key | 23 | multitouch |
12 | timer |
表5.2.2.3 正点原子I.MX6U-ALPHA开发板Linux驱动例程
因为有些外设驱动在Linux内核里面已经集成了,因此并没有编写独立的驱动,我们会在相应的章节里面对这些驱动进行讲解。关于正点原子I.MX6U-ALPHA开发板的软件资源就讲解到这里,软件资源我们也会持续更新的。
5.2.3 I.MX6U-Mini硬件资源说明
这里我们首先详细介绍I.MX6U-Mini开发板的各个部分的硬件资源,我们将按逆时针的顺序依次介绍。首先,我们来看底板的资源说明:
- SDIO WIFI接口这是开发板上的一个SDIO WIFI(P2)接口,可以通过此接口连接正点原子出品的SDIO WIFI模块。SDIO WIFI接口和TF卡共用一个USDHC接口,因此不能同时和TF卡使用。
- USB转串口USB串口,为MiniUSB接口(USB_TTL),USB连接CH340C芯片,CH340C与I.MX6IULL的串口1相连接,从而实现USB转串口。设计成USB串口,是出于现在电脑上串口正在消失,尤其是笔记本,几乎清一色的没有串口,所以板载USB串口可以方便大家调试。
- I.MX6ULL核心板接口这是开发板底板上面的核心板接口,由2个2*30的贴片板对板接线端子(3710F公座)组成,可以用来插正点原子的I.MX6UL/ULL核心板等,从而学习I.MX6UL/6ULL等芯片,达到一个开发板,学习多款SOC的目的,减少重复投资。
- RGBLCD接口这是转接板自带的RGB LCD接口(LCD),可以连接各种正点原子的RGB LCD屏模块,并且支持触摸屏(电阻/电容屏都可以)。采用的是RGB888格式,可显示1677万色,色彩显示丰富。
- USB HOST接口这是开发板板载的一个卧式USB-A座(USB_HOST),我们可以通过这个USB-A座,连接U盘/USB鼠标/USB键盘等其他USB从设备,从而实现USB主机功能。
- 后备电池接口这是I.MX6ULL后备区域的供电接口,可以用来给I.MX6ULL的后备区域提供能量,在外部电源断电的时候,维持SNVS区域数据的存储,以及RTC的运行。
- 启动(BOOT)拨码开关I.MX6U支持多种启动方式,比如SD卡、EMMC、NAND、QSPI FALSH和USB等,要想从某一种设备启动就必须先设置好启动拨码开关。I.MX6U-Mini开发板用了一个8P的拨码开关来选择启动方式,支持从SD卡、EMCM、NAND和USB这四种启动方式,这四种启动方式对应的拨码开关拨动方式已经写在了开发板上。大家在使用的时候根据自己的实际需求设置拨码开关即可。
- 摄像头模块接口这是开发板板载的一个摄像头模块接口(P1),摄像头模块(需自备),对准插入到此插槽中。
- ATK模块接口这是开发板板载的一个正点原子通用模块接口(P7),目前可以支持正点原子开发的GPS模块、蓝牙模块、MPU6050模块、激光测距模块和手势识别模块等,直接插上对应的模块,就可以进行开发。后续我们将开发更多兼容该接口的其他模块,实现更强大的扩展性能。
- 蜂鸣器这是一个有源蜂鸣器,通过高低电平控制蜂鸣器的开关。
- ON/OFF按键这是一个ON/OFF按键,连接到I.MX6ULL的OF/OFF引脚上。
- 复位按键这是开发板板载的复位按键(RESET),用于复位I.MX6U,还具有复位液晶的功能,因为液晶模块的复位引脚和I.MX6U的复位引脚是连接在一起的,当按下该键的时候,I.MX6U和液晶一并被复位。
- 用户按键KEY这是开发板板载的1个机械式输入按键(KEY0),可以做为普通按键输入使用。
- 蓝色电源指示LED灯这是开发板电源指示LED灯,为蓝色,当板子供电正常的时候此灯就会常亮。如果此灯不亮的话就说明开发板供电有问题(排除LED灯本身损坏的情况)。
- 红色用户LED灯这是开发板板载的1个LED灯,为红色,用户可以使用此LED灯。在调试代码的时候,使用LED来指示程序状态,这是非常不错的一个辅助调试方法。
- 引出的IO口这是开发板IO引出端口P4,采用2*24排针,总共引出41个IO口。
- 3.3V电源输入/输出这是开发板板载的一组3.3V电源输入输出排针(2*3)(JP1),用于给外部提供3.3V的电源,也可以用于从外部接3.3V的电源给板子供电。
大家在实验的时候可能经常会为没有3.3V电源而苦恼不已,有了I.MX6U-Mini开发板,你就可以很方便的拥有一个简单的3.3V电源(最大电流不能超过3000mA)。 - 5V电源输入/输出这是开发板板载的一组5V电源输入输出排针(2*3)(JP2),该排针用于给外部提供5V的电源,也可以用于从外部接5V的电源给板子供电。
同样大家在实验的时候可能经常会为没有5V电源而苦恼不已,正点原子充分考虑到了大家需求,有了这组5V排针,你就可以很方便的拥有一个简单的5V电源(USB供电的时候,最大电流不能超过500mA,外部供电的时候,最大可达3000mA)。 - 电源开关这是开发板板载的电源开关。该开关用于控制整个开发板的供电。这是一个自锁式开关,按下以后打开开发板电源,整个板子开始供电,电源指示灯(PWR)点亮。再次按下开关弹起,关闭开发板电源,整个开发板都将断电,电源指示灯(PWR)会随之熄灭。
- DC6~16V电源输入这是开发板板载的一个外部电源输入口(DC_IN),采用标准的直流电源插座。开发板板载了DC-DC芯片(JW5060T),用于给开发板提供高效、稳定的5V电源。由于采用了DC-DC芯片,所以开发板的供电范围十分宽,大家可以很方便的找到合适的电源(只要输出范围在DC6~16V的基本都可以)来给开发板供电。在耗电比较大的情况下,比如用到4.3屏/7寸屏/网口的时候,建议使用外部电源供电,可以提供足够的电流给开发板使用。
- 以太网接口(RJ45)这是开发板板载的以太网接口,连接到I.MX6U的ENET2网络接口。
- CAN接口这是开发板板载的CAN总线接口(CAN),通过2个端口和外部CAN总线连接,即CANH和CANL。这里提醒大家:CAN通信的时候,必须CANH接CANH,CANL接CANL,否则可能通信不正常!
- RS485/串口3接口这是RS485与I.MX6ULL串口3的跳线帽设置接口,如果将485_R与U3_T、485_T与U3_R连起来,那么RS485接口就会使用I.MX6ULL的串口3。做RS485实验的时候一定要将此接口连起来。
- RS485接口这是开发板板载的RS485总线接口(RS485),通过2个端口和外部485设备连接。这里提醒大家,RS485通信的时候,必须A接A,B接B。否则可能通信不正常
- JTAG接口10P的JTAG接口,可用于连接JLINK等调试器。
- USB OTG接口这是开发板板载的一个MiniUSB头(USB_OTG),用于USB OTG实验。
- TF卡接口
这是开发板板载的一个标准TF卡接口(TF_CARD),该接口在开发板的背面,采用小型的TF卡接口,USDHC方式驱动,有了这个TF卡接口,就可以满足海量数据存储的需求。
5.2.4 I.MX6U-Mini软件资源说明
由于Mini板是ALPHA的精简底板,因此Mini板的软件资源和ALPHA的软件资源可以共用,包括例程、视频和教程,除了Mini板没有的外设。具体软件资源请参考5.2.2小节中对于ALPHA开发板的描述。
5.2.5 I.MX6ULL核心板硬件资源说明
核心板资源参考图5.1.3.1和图5.1.3.2中的标注部分,我们将按逆时针的顺序依次介绍:
- 核心板电源指示灯这是核心板板载的一个蓝色LED灯,用于指示核心板供电是否正常,如果核心板供电正常的话此灯就会点亮。
- NAND/EMMC存储芯片这是核心板上板载的存储芯片,分为NAND和EMMC两种。对于NAND版本的核心板共有256MB和512MB两种容量的NAND,型号分别为MT29F2G08ABAEAWP-IT或 MT29F4G08ABADAWP-IT,这两种型号的NAND FLASH工作温度范围都为工业级。EMMC版本的核心板使用8GB的EMMC,型号为KLM8G1GET。
- DDR3L芯片这是核心板板载的DDR3L芯片,NAND版本核心板的DDR3L容量为256MB,EMMC版本的核心板的DDR3L容量为512MB。型号分别为NT5CC128M16JR-EK和NT5CC256M16EP-EK。如果要用于UI开发,那么最好选择512MB的DDR3L,当然了,正点原子的I.MX6U核心板支持定制,具体定制方法请联系销售。
- CPU这是核心板的CPU,型号为MCIMX6Y2CVM08AB,MCIMX6Y2CVM08AB主频为800MHz(实际792MHz)。该芯片采用Coretx-A7内核,自带32KB的L1指令Cache、32KB的L1数据Cache、128KB的L2Cache、集成NEON和SIMDv2、支持硬件浮点(FPU)计算单元,浮点计算架构为VFPv4-D32、1个RGB LCD接口、2个CAN接口、2个10M/100M网络接口、2个USB OTG接口(USB2.0)、2路ADC、8个串口、3个SAI、4个定时器、8路PWM、4路I2C接口、4路SPI接口、一路CSI摄像头接口、2个USDHC接口,支持4位SD卡,最高可以支持UHS-I SDR 104模式,支持1/4/8位的EMMC,最高可达HS200模式、一个外部存储接口、支持16位的LPDDR2-800、DDR3-800和DDR3L-800、支持8位的MLC/SLC NAND Flash,支持2KB、4KB和8KB页大小,以及124个通用IO口等。
- 32.768KHz晶振 这是一个无源的32.768KHz晶振,供I.MX6U内部RTC使用。
- 24MHz晶振
这是一个无源的24MHz晶振,供I.MX6U使用。
另外,I.MX6U核心板的接口在底部,通过两个2*30的板对板端子(3710M母座)组成,总共引出了104个IO,通过这个接口,可以实现与I.MX6U-ALPHA底板对接。
5.3 I.MX6U-ALPHA开发板底板原理图详解
5.3.1 核心板接口
I.MX6U-ALPHA开发板采用底板+核心板的形式,I.MX6U-ALPHA开发板底板采用2个2*30的3710F(公座)板对板连接器来同核心板连接,接插非常方便,底板上面的核心板接口原理图如图5.3.1.1所示:
图5.3.1.1 底板转接板接口部分原理图
图中的J1和J2就是底板上的转接板接口,由2个2*30PIN的3710F板对板公座组成,总共引出了核心板上面105个IO口,另外,还有:电源、PMIC_ON_REQ、ONOFF、USB、VBAT、RESET等信号。
5.3.2 引出IO口
I.MX6U-ALPHA开发板底板上面,总共引出了31个IO口,如图5.3.2.1所示:
图5.3.2.1 引出IO口
图中JP6就是引出的IO,一共31个IO,外加一个GND。Cortex-A系列的板子首要任务就是保证板子的稳定性,然后再考虑IO的引出。所以相比于STM32这种单片机,I.MX6U-ALPHA开发板引出的IO就要少很多了。
5.3.3 USB串口/串口1选择接口
I.MX6U-ALPHA开发板板载的USB串口和I.MX6U的串口是通过JP5连接起来的,如图5.3.3.1所示:
图5.3.3.1 USB串口/串口1选择接口
图中TXD/RXD是相对CH340C来说的,也就是USB串口的发送和接收脚。而UART1_RXD和UART1_TXD则是相对于I.MX6U来说的。这样,通过对接,就可以实现USB串口和I.MX6U的串口通信了。图5.3.3.1中的U20和U21是SGM3157模拟开关,在底板掉电以后将I.MX6U的UART1_TXD和UART1_RXD这两个IO与CH340C的TXD和RXD断开,因为CH340C的TXD和RXD这两个IO带有微弱的3.3V电压,如果不断开的话会将这微弱的3.3V电压引入到核心板上,可能会影响到启动。
5.3.4 RGB LCD模块接口
ALPHA底板载了RGB LCD接口,此部分电路如图5.3.4.1所示:
图5.3.4.1 RGB LCD接口
图中,RGBLCD就是RGB LCD接口,采用RGB888数据格式,并支持触摸屏(支持电阻屏和电容屏)。该接口仅支持RGB接口的液晶(不支持MCU接口的液晶),目前正点原子的RGB接口LCD模块有:4.3寸(ID:4342,480*272和ID:4384,800*480)、7寸(ID:7084,800*480和ID:7016,1024*600)和10寸(ID:1018,1280*800)等尺寸可选。
图中3个SGM3157模拟开关,用于控制来自I.MX6U的LCD_DATA23(LCD_R7)、LCD_DATA15(LCD_G7)和LCD_DATA7(LCD_B7)和来自RGBLCD屏的LCD_DATA23S、LCD_DATA15S和LCD_DATA7S的通断。这是因为这几个信号有用来设置I.MX6U的BOOT_CFG4[7]/BOOT_CFG2[7]/BOOT_CFG1[7],同时又是RGBLCD屏的ID信号,因此他们存在冲突。如果不加切换,在启动的时候,I.MX6U就可能读到错误的启动配置信息,从而导致启动失败(不运行代码)。加这三个模拟开关,就是为了让I.MX6U在启动的时候可以正常读取BOOT_CFG4[7]/BOOT_CFG2[7]/BOOT_CFG1[7]的值,同时在启动后,用户代码又可以读取正确的RGBLCD ID值。互不影响。三个SGM3157的使能信号默认都是由LCD_VSYNC控制(刚好满足LCD时序)。
图中的I2C2_SCL和I2C2_SDA为I2C2的两根数据线,分别连接到UART5_TXD和UART5_RXD这两个IO上。BLT_PWM是LCD的背光控制IO,连接在I.MX6U的GPIO1_IO8上,用于控制LCD的背光。液晶复位信号RESET则是直接连接在开发板的复位按钮上,和MCU共用一个复位电路。
5.3.5 复位电路
I.MX6U开发板的复位电路如图5.3.5.1所示:
图5.3.5.1 复位电路
因为I.MX6U是低电平复位的,所以我们设计的电路也是低电平复位的
5.3.6 启动模式设置接口
I.MX6U开发板的启动模式设置端口电路如图5.3.6.1所示:
图5.3.6.1 启动模式设置接口
I.MX6U支持从多种不同的设备启动,关于I.MX6U的详细启动方式请参考《第九章I.MX6U启动方式详解》。
5.3.7 VBAT供电接口
I.MX6U-ALPHA开发板的VBAT供电电路如图5.3.7.1所示:
图5.3.7.1 启动模式设置接口
上图的VDD_COIN_3V通过核心板上的BAT54C,接VDD_SNVS_IN脚,从而给核心板的SNVS区域供电。这部分原理图在核心板上,如图5.3.7.2所示:
图5.3.7.2 核心板VBAT供电原理图
如图5.3.7.2所示,VDD_SNVS_IN使用VDD_COIN_3V(接CR1220电池)和VDD_SNVS_3V3混合供电的方式,在有外部电源(VDD_SNVS_3V3)的时候,CR1220不给VDD_SNVS_IN供电,而在外部电源断开的时候,则由CR1220给其供电。这样,VDD_SNVS_IN总是有电的,以保证RTC的走时。
5.3.8 RS232串口
I.MX6U-ALPAH开发板板载了一个母头的RS232接口,电路原理图如图5.3.8.1所示:
图5.3.8.1 RS232串口
因为RS232电平不能直接连接到I.MX6U,所以需要一个电平转换芯片。这里我们选择的是SP3232(也可以用MAX3232)来做电平转接,同时图中的JP1用来实现RS232(UART3)/RS485的选择。所以这里的RS232/RS485都是通过串口3来实现的。图中RS485_TX和RS485_RX信号接在SP3485的DI和RO信号上。
5.3.9 RS485接口
I.MX6U-ALPAH开发板板载的RS485接口电路如图5.3.9.1所示:
图5.3.9.1 RS485接口
RS485电平也不能直接连接到I.MX6U,同样需要电平转换芯片。这里我们使用SP3485来做485电平转换,其中R21为终端匹配电阻,而R19和R20则是两个偏置电阻,以保证静默状态时485总线维持逻辑1。
RS485_RX/RS485_TX连接在JP1上面,通过JP1跳线来选择是否连接在I.MX6U上面,SP3485的RE引脚连接通过一系列的电路连接到了RS485_RX引脚上,这样就可以通过RS485_RX引脚来控制RS485的接收和发送状态,完全将RS485当做一个串口来使用。
5.3.10 CAN接口
正点原子I.MX6U-ALPHA开发板板载的CAN接口电路如图5.3.10.1所示:
图5.3.10.1 CAN接口电路
CAN总线电平也不能直接连接到I.MX6U,同样需要电平转换芯片。这里我们使用TJA1050来做CAN电平转换,其中R10为终端匹配电阻。
CAN1_TX/CAN1_RX直接连接在I.MX6U的UART1_CTS/UART1_RTS上面。
5.3.11 USB HUB接口
正点原子I.MX6U-ALPHA开发板板载了一颗一扩四的USB HUB芯片,用于将I.MX6U的USB2扩展为4个USB HOST接口,如图5.3.15.3所示:
图5.3.11.3 USB HUB接口电路
I.MX6U带有两个USB接口,但是对于Linux应用来说两个USB太少了,如果我们要连接鼠标、键盘、U盘等设备的时候两个USB口完全不够用。因此I.MX6U-ALPHA开发板通过GL850G芯片将I.MX6U的USB2外扩出了4个USB HOST接口,其中有一路(UHB_USB2)外接了4G模块,因此提供给用户的就只剩下了3个USB HOST接口,如果3个USB HOST还不够用的话就可以外接一个USB HUB。
5.3.12 USB OTG接口
I.MX6U-ALPHA也有一路USB OTG接口,USB OTG接口使用了I.MX6U的USB1,USB OTG接口如图5.3.12.1所示:
图5.3.12.1 USB OTG接口
图中的USB_OTG就是USB SLAVE接口,可以将开发板作为USB从机,比如通过USB进行系统烧写等。右侧的USB1_HOST是USB HOST接口,可以将开发板作为USB主机,这样就可以外接USB键盘/鼠标、U盘等设备。这里正点原子将USB OTG的SLAVE和HOST接口都做到了开发板上,这样大家就不需要再额外去购买一个USB OTG线了,方便大家开发。
5.3.13 光环境传感器
I.MX6U-ALPHA开发板板载了一个光环境传感器,可以用来感应周围光线强度、接近距离和红外线强度等,该部分电路如图5.3.13.1所示:
图5.3.13.1 光环境传感器电路
图中的U9就是光环境传感器:AP3216C,它集成了光照强度、近距离、红外三个传感器功能于一身,被广泛应用于各种智能手机。该芯片采用IIC接口,连接在I.MX6U的I2C1接口上,IIC_SCL和IIC_SDA分别连接在UART4_TXD和UART4_RXD上,AP_INT是其中断输出脚,连接在I.MX6U的GOIO1_IO01上。
5.3.14 六轴传感器
I.MX6U-ALIPHA开发板板载了一个六轴传感器,电路如图5.3.14.1所示:
图5.3.14.1 六轴传感器
六轴传感器芯片型号为:ICM20608,该芯片内部集成了:三轴加速度传感器和三轴陀螺仪,这里我们使用SPI接口来访问。
ICM20608支持IIC和SPI两种接口,I.MX6U-ALPHA开发板使用SPI接口,目的是为了在开发板上放一个SPI外设,学习Linux下的SPI驱动开发(因为笔者购买过很多Linux开发板,发现基本都没有SPI外设,不方便学习SPI驱动)。ICM20608通过SPI接口连接到I.MX6U的ECSPI3接口上,SCLK、SDI、CS和SDO分别连接到I.MX6U的UART2_RXD(ECSPI3_SCLK)、UART2_CTS(ECSPI3_MOSI)、UART2_TXD(ECSPI3_SS0)和UART2_RTS(ECSPI3_MISO)。
5.3.15 LED
I.MX6U-ALPHA开发板板载总共有2个LED,其原理图如图5.3.15.1所示:
图5.3.15.1 LED
其中右侧的PWR BLUE是系统电源指示灯,为蓝色。DS0为用户LED灯,连接在I.MX6U的GPIO1_IO03上,此灯为红色。
5.3.16 按键
I.MX6U-ALPHA开发板板载1个输入按键,其原理图如图5.3.16.1所示:
图5.3.16.1 输入按键
KEY0用作普通按键输入,分别连接I.MX6U的UART1_CTS引脚上,这里使用外部10K上拉电阻。
5.3.17 摄像头模块接口
I.MX6U-ALPHA开发板板载了一个摄像头模块接口,连接在I.MX6U的硬件摄像头接口(CSI)上面,其原理图如图5.3.17.1所示:
图5.3.17.1 摄像头模块接口
图中P1接口可以用来连接正点原子摄像头模块。其中,I2C2_SCL和I2C2_SDA是摄像头的SCCB接口,分辨连接在I.MX6U的UART5_TXD和UART5_RXD引脚上。CSI_RESET 和CSI_PWDN这2个信号是不属于I.MX6U硬件摄像头接口的信号,通过普通IO控制即可,这两个线分别接在I.MX6U的GPIO1_IO02和GPIO1_IO04。
此外,CSI_VSYNC/CSI_HSYNC/CSI_D0/CSI_D1/CSI_D2/CSI_D3/ CSI_D4/CSI_D5/CSI_D6
/CSI_D7/CSI_PCLK/CSI_MCLK等信号,接I.MX6U的硬件摄像头接口。
5.3.18 有源蜂鸣器
I.MX6U-ALPHA开发板板载了一个有源蜂鸣器,其原理图如图5.3.18.1所示:
图5.3.18.1 有源蜂鸣器
有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如果是无源蜂鸣器,则需要外加一定频率(2~5Khz)的驱动信号,才会发声。这里我们选择使用有源蜂鸣器,方便大家使用。
BEEP信号直接连接在I.MX6U的SNVS_TAMPER1引脚上,可以通过控制此引脚来控制蜂鸣器开关。
5.3.19 TF卡接口
正点原子ALPHA开发板板载了一个TF卡(小卡)接口,其原理图如图5.3.19.1所示:
图5.3.19.1 TF卡接口
图中SD_CARD为TF卡接口,该接口在开发板的底面。
TF卡采用4位uSDHC方式驱动,非常适合需要高速存储的情况。图中:USDHC1_DATA0~DATA3/USDHC1_CLK/USDHC1_CMD分别连接在I.MX6U的SD1_DATA0~DATA3/SD1_CLK/SD1_CMD引脚上。 USDHC1_CD_B是TF卡检测引脚,用于检测TF卡或SDIO WIFI插拔过程,连接到I.MX6U的UART1_RTS引脚上。注意:TF卡接口和SDIO WIFI接口共用一个SDIO,因此TF卡和SDIO不能同时使用!
5.3.20 SDIO WIFI接口
I.MX6U-ALPHA开发板板载一个SDIO WIFI接口,如图5.3.20.1所示:
图5.3.20.1 SDIO WIFI接口
SDIO WIFI接口用于连接正点原子出品的RTL8189 SDIO WIFI模块,USDHC1_DATA0~DATA3/USDHC1_CLK/USDHC1_CMD分别连接到I.MX6U的I.MX6U的SD1_DATA0~DATA3/SD1_CLK/SD1_CMD引脚上。WIFI_INT和WIFI_REG_ON连接到I.MX6U的SNVS_TAMPER2和SNVS_TAMPER0引脚上。
注意:TF卡接口和SDIO WIFI接口公用一个SDIO,因此TF卡和SDIO不能同时使用!!
5.3.21 4G模块接口
I.MX6U-ALPHA开发板板载4G Mini PCIE接口,如图5.3.21.1所示:
图5.3.21.1 4G模块
U8就是Mini PCIE接口的4G模块座子,用于连接Mini PCIE接口的4G模块,比如高新兴的ME3630模块。U11是Nano SIM卡座,用于插入Nano SIM卡。4G模块虽然采用Mini PCIE接口,但是实际走的USB接口,这里连接到了GL850G扩展出来的一个USB HOST接口上(USB_HUB2)。
5.3.22 ATK模块接口
I.MX6U-ALPHA开发板板载了ATK模块接口,其原理图如图5.3.22.1所示:
图5.3.22.1 ATK模块接口
如图所示,JP2是一个1*6的排座,可以用来连接正点原子推出的一些模块,比如:蓝牙串口模块、GPS模块、MPU6050模块、激光测距模块、手势识别模块和RGB彩灯模块等。有了这个接口,我们连接模块就非常简单,插上即可工作。
图中:UART3_RXD/UART3_TXD连接到了I.MX6U的UART3上,和RS232、RS485共用一个串口,在使用ATK接口的时候需要将JP1跳线帽全部拔掉,防止RS232和RS485干扰到模块。而GBC_KEY和GBC_LED则分别连接在I.MX6U的GPIO1_IO01和JTAG_MOD这两个引脚上。特别注意:GBC_LED/ GBC_KEY和AP_INT/6D_INT共用GPIO1_IO01和JTAG_MOD。
5.3.23 以太网接口(RJ45)
I.MX6U-ALPHA开发板板载了两个以太网接口(RJ45),分别为ENET1和ENET2,其中ENET1网口的原理图如图5.3.23.1所示:
图5.3.23.1 ENET1接口电路
ENET2网络接口原理图如图5.3.23.2所示:
图5.3.23.2 ENET2网络接口
I.MX6U内部自带两个网络MAC控制器,每个网络MAC需要外加一个PHY芯片来实现网络通信功能。这里我们选择的是LAN8720A这颗芯片作为I.MX6U的PHY芯片,该芯片采用RMII接口与I.MX6U通信,占用IO较少,且支持auto mdix(即可自动识别交叉/直连网线)功能。板载两个自带网络变压器的RJ45头(HR91105A),一起组成两个10M/100M自适应网卡。
对于ENET1和ENET2共用ENET_MDIO和ENET_MDC这两根线,这两根线连接到了I.MX6U的GPIO1_IO06和GPIO1_IO07这两个IO上。ENET1和ENET2都有一个复位引脚,分别为ENET1_RSET和ENET2_RESET,这两个IO分别连接到了I.MX6U的SNVS_TAMPER7/SNVS_TAMPER8这两个引脚上。
5.3.24 SAI音频编解码器
I.MX6U开发板板载WM8960高性能音频编解码芯片,其原理图如图5.3.24.1所示:
图5.3.24.1 SAI音频编解码芯片
WM8960是一颗低功耗、高性能的立体声多媒体数字信号编解码器。该芯片内部集成了24位高性能DAC&ADC,并且自段EQ调节,支持3D音效等功能。不仅如此,该芯片还结合了立体声差分麦克风的前置放大与扬声器、耳机和差分、立体声线输出的驱动,减少了应用时必需的外部组件,直接可以驱动耳机(16Ω@40mW)和喇叭(8Ω/1W),无需外加功放电路。
图中,SPK-和SPK+连接了一个板载的8Ω 1W小喇叭(在开发板背面)。MIC是板载的咪头,可用于录音机实验,实现录音。PHONE是3.5mm耳机输出接口,可以用来插耳机。LINE_IN则是线路输入接口,可以用来外接线路输入,实现立体声录音。
该芯片采用SAI与I.MX6U的SAI接口连接,图中:SAI2_TX_SYNC/SAI2_TX_BCLK/SAI2_RX_DATA/SAI2_TX_DATA/SAI2_MCLK/分别接在MCU的:JTAG_TDO/JTAG_TDI/JTAG_TCK/JTAG_nTRST/JTAG_TMS上。特别注意:WM8960和JTAG共用了很多信号,所以WM8960和JTAG接口不能同时使用!并且,经过实测,WM8960会干扰到JTAG,如果要使用JTAG那么就必须将与WM8960复用的这几根线断开!这也是为什么正点原子I.MX6U-ALPHA开发板开发板上面没有留JTAG接口的原因。
WM8960需要一个I2C接口去配置,这里使用I.MX6U的I2C2,I2C2_SCL和I2C2_SDA分别连接到了I.MX6U的UART5_TXD和UART5_RXD这两个引脚上。
5.3.25 电源
I.MX6U-ALPHA开发板板载的电源供电部分,其原理图如图5.3.25.1所示:
图5.3.25.1 电源
图中,总共有2个稳压芯片:U16/U17,DC_IN用于外部直流电源输入,经过U16 DC-DC芯片转换为5V电源输出,其中VD1是防反接二极管,避免外部直流电源极性搞错的时候,烧坏开发板。K1为开发板的总电源开关,F1为2A自恢复保险丝,用于保护USB。U17为3.3V稳压芯片,给开发板提供3.3V电源。
这里还有USB供电部分没有列出来,其中VUSB就是来自USB供电部分,详见5.3.26节。
5.3.26 电源输入输出接口
I.MX6U-ALPHA开发板板载了两组简单电源输入输出接口,其原理图如图5.3.27.1所示:
图5.3.26.1 电源
图中,VOUT1和VOUT2分别是3.3V和5V的电源输入输出接口,有了这2组接口,我们可以通过开发板给外部提供 3.3V和5V电源了,虽然功率不大(最大1000mA),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端口,也可以用来由外部给开发板供电。
图中D1和D2为TVS管,可以有效避免VOUT外接电源/负载不稳的时候(尤其是开发板外接电机/继电器/电磁阀等感性负载的时候),对开发板造成的损坏。同时还能一定程度防止外接电源接反,对开发板造成的损坏。
5.3.27 USB串口
I.MX6U-ALPHA开发板板载了一个USB串口,其原理图如图5.3.27.1所示:
图5.3.27.1 USB串口
USB转串口,我们选择的是CH340C,是国内芯片公司南京沁恒的产品,稳定性非常不错所以还是多支持下国产。CH340C内置晶振,因此就不需要再在外面连接一个晶振。图中可以看出CH340C的电源为3.3V,并且是独立供电的,U19是一个LDO芯片,负责给CH340C提供3.3V的电源。CH340C的电源不受开发板电源开关控制,只要接上USB线CH340就会上电。图中RXD/TXD接JP5的RXD/TXD,是CH340芯片的串口接收和发送脚,可以通过跳线帽连接到I.MX6U的串口1上。
USB_TTL是一个MiniUSB座,提供CH340C和电脑通信的接口,同时可以给开发板和CH340C供电,VUSB就是来自电脑USB的电源,USB_TTL是本开发板的主要供电口。
5.4 I.MX6U-Mini开发板底板原理图详解
5.4.1 核心板接口
I.MX6U-Mini开发板采用底板+核心板的形式,I.MX6U-Mini开发板底板采用2个2*30的3710F(公座)板对板连接器来同核心板连接,接插非常方便,底板上面的核心板接口原理图如图5.4.1.1所示:
图5.4.1.1 底板转接板接口部分原理图
图中两个插座就是底板上的转接板接口,由2个2*30PIN的3710F板对板公座组成,总共引出了核心板上面105个IO口,另外,还有:电源、PMIC_ON_REQ、ONOFF、USB、VBAT、RESET等信号。
5.4.2 引出IO口
I.MX6U-Mini开发板底板上面,总共引出了41个IO口,如图5.4.2.1所示:
图5.4.2.1 引出IO口
图中P4就是引出的IO,一共40个IO,外加一个GND、一个5V、一个3.3V、一个ON_OFF引脚。
5.4.3 USB串口
I.MX6U-Mini开发板板载了一个USB串口,其原理图如图5.4.3.1所示:
图5.4.3.1 USB串口
USB转串口,我们选择的是CH340C,是国内芯片公司南京沁恒的产品,稳定性非常不错所以还是多支持下国产。CH340C内置晶振,因此就不需要再在外面连接一个晶振。图中可以看出CH340C的电源为3.3V,并且是独立供电的,U7是一个LDO芯片,负责给CH340C提供3.3V的电源。CH340C的电源不受开发板电源开关控制,只要接上USB线CH340就会上电。
USB_TTL是一个MiniUSB座,提供CH340C和电脑通信的接口,同时可以给开发板和CH340C供电,VUSB就是来自电脑USB的电源,USB_TTL是本开发板的主要供电口。
图5.4.3.1中的U12和U13是SGM3157模拟开关,在底板掉电以后将I.MX6U的UART1_TXD和UART1_RXD这两个IO与CH340C的TXD和RXD断开,因为CH340C的TXD和RXD这两个IO带有微弱的3.3V电压,如果不断开的话会将这微弱的3.3V电压引入到核心板上,可能会影响到启动。
5.4.4 RGB LCD模块接口
Mini底板载了RGB LCD接口,此部分电路如图5.4.4.1所示:
图5.4.4.1 RGB LCD接口
图中,RGBLCD就是RGB LCD接口,采用RGB888数据格式,并支持触摸屏(支持电阻屏和电容屏)。该接口仅支持RGB接口的液晶(不支持MCU接口的液晶),目前正点原子的RGB接口LCD模块有:4.3寸(ID:4342,480*272和ID:4384,800*480)、7寸(ID:7084,800*480和ID:7016,1024*600)和10寸(ID:1018,1280*800)等尺寸可选。
图中3个SGM3157模拟开关,用于控制来自I.MX6U的LCD_DATA23(LCD_R7)、LCD_DATA15(LCD_G7)和LCD_DATA7(LCD_B7)和来自RGBLCD屏的LCD_DATA23S、LCD_DATA15S和LCD_DATA7S的通断。这是因为这几个信号有用来设置I.MX6U的BOOT_CFG4[7]/BOOT_CFG2[7]/BOOT_CFG1[7],同时又是RGBLCD屏的ID信号,因此他们存在冲突。如果不加切换,在启动的时候,I.MX6U就可能读到错误的启动配置信息,从而导致启动失败(不运行代码)。加这三个模拟开关,就是为了让I.MX6U在启动的时候可以正常读取BOOT_CFG4[7]/BOOT_CFG2[7]/BOOT_CFG1[7]的值,同时在启动后,用户代码又可以读取正确的RGBLCD ID值。互不影响。三个SGM3157的使能信号默认都是由LCD_VSYNC控制(刚好满足LCD时序)。
图中的I2C2_SCL和I2C2_SDA为I2C2的两根数据线,分别连接到UART5_TXD和UART5_RXD这两个IO上。BLT_PWM是LCD的背光控制IO,连接在I.MX6U的GPIO1_IO8上,用于控制LCD的背光。液晶复位信号RESET则是直接连接在开发板的复位按钮上,和MCU共用一个复位电路。
5.4.5 复位电路
I.MX6U-Mini开发板的复位电路如图5.4.5.1所示:
图5.4.5.1 复位电路
因为I.MX6U是低电平复位的,所以我们设计的电路也是低电平复位的
5.4.6 启动模式设置接口
I.MX6U-Mini开发板的启动模式设置端口电路如图5.4.6.1所示:
图5.4.6.1 启动模式设置接口
I.MX6U支持从多种不同的设备启动,关于I.MX6U的详细启动方式请参考《第九章I.MX6U启动方式详解》。
5.4.7 VBAT供电接口
I.MX6U-Mini开发板的VBAT供电电路如图5.4.7.1所示:
图5.4.7.1 启动模式设置接口
上图的VDD_COIN_3V通过核心板上的BAT54C,接VDD_SNVS_IN脚,从而给核心板的SNVS区域供电。这部分原理图在核心板上,如图5.4.7.2所示:
图5.4.7.2 核心板VBAT供电原理图
如图5.4.7.2所示,VDD_SNVS_IN使用VDD_COIN_3V(接CR1220电池)和VDD_SNVS_3V3混合供电的方式,在有外部电源(VDD_SNVS_3V3)的时候,CR1220不给VDD_SNVS_IN供电,而在外部电源断开的时候,则由CR1220给其供电。这样,VDD_SNVS_IN总是有电的,以保证RTC的走时。
5.4.8 RS485接口
I.MX6U-Mini开发板板载的RS485接口电路如图5.4.8.1所示:
图5.4.8.1 RS485接口
RS485电平也不能直接连接到I.MX6U,同样需要电平转换芯片。这里我们使用SP3485来做485电平转换,其中R28为终端匹配电阻,而R26和R25则是两个偏置电阻,以保证静默状态时485总线维持逻辑1。
RS485_RX/RS485_TX连接在JP3上面,通过JP3跳线来选择是否连接在I.MX6U上面,SP3485的RE引脚连接通过一系列的电路连接到了RS485_RX引脚上,这样就可以通过RS485_RX引脚来控制RS485的接收和发送状态,完全将RS485当做一个串口来使用。
5.4.9 CAN接口
正点原子I.MX6U-Mini开发板板载的CAN接口电路如图5.4.9.1所示:
图5.4.9.1 CAN接口电路
CAN总线电平也不能直接连接到I.MX6U,同样需要电平转换芯片。这里我们使用TJA1050来做CAN电平转换,其中R14为终端匹配电阻。
CAN1_TX/CAN1_RX直接连接在I.MX6U的UART1_CTS/UART1_RTS上面。
5.4.10 USB HOST接口
正点原子I.MX6U-Mini开发板有一路USB HOST接口,如图5.4.10.4所示:
图5.4.10.1 USB HOST接口电路
从图5.4.10.1可以看出,USB HOST连接到了I.MX6ULL的USB2接口上。
5.4.11 USB OTG接口
I.MX6U-Mini也有一路USB OTG接口,USB OTG接口使用了I.MX6U的USB1,USB OTG接口如图5.4.11.1所示:
图5.4.11.1 USB OTG接口
图中的USB_OTG接口可以做为SLAVE,也可以作为HOST,如果要做HOST的话需要自己购买Mini USB OTG线。
5.4.12 LED
I.MX6U-Mini开发板板载总共有2个LED,其原理图如图5.4.12.1所示:
图5.4.12.1 LED
其中下方的PWR BLUE是系统电源指示灯,为蓝色。LED1为用户LED灯,连接在I.MX6U的GPIO1_IO03上,此灯为红色。
5.4.13 按键
I.MX6U-Mini开发板板载1个输入按键,其原理图如图5.4.13.1所示:
图5.4.13.1 输入按键
KEY0用作普通按键输入,分别连接I.MX6U的UART1_CTS引脚上,这里使用外部10K上拉电阻。
5.4.14 摄像头模块接口
I.MX6U-Mini开发板板载了一个摄像头模块接口,连接在I.MX6U的硬件摄像头接口(CSI)上面,其原理图如图5.4.14.1所示:
图5.4.14.1 摄像头模块接口
图中P1接口可以用来连接正点原子摄像头模块。其中,I2C2_SCL和I2C2_SDA是摄像头的SCCB接口,分辨连接在I.MX6U的UART5_TXD和UART5_RXD引脚上。CSI_RESET 和CSI_PWDN这2个信号是不属于I.MX6U硬件摄像头接口的信号,通过普通IO控制即可,这两个线分别接在I.MX6U的GPIO1_IO02和GPIO1_IO04。
此外,CSI_VSYNC/CSI_HSYNC/CSI_D0/CSI_D1/CSI_D2/CSI_D3/ CSI_D4/CSI_D5/
CSI_D6/CSI_D7/CSI_PCLK/CSI_MCLK等信号,接I.MX6U的硬件摄像头接口。
5.4.15 有源蜂鸣器
I.MX6U-Mini开发板板载了一个有源蜂鸣器,其原理图如图5.4.15.1所示:
图5.4.15.1 有源蜂鸣器
有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如果是无源蜂鸣器,则需要外加一定频率(2~5Khz)的驱动信号,才会发声。这里我们选择使用有源蜂鸣器,方便大家使用。
BEEP信号直接连接在I.MX6U的SNVS_TAMPER1引脚上,可以通过控制此引脚来控制蜂鸣器开关。
5.4.16 TF卡接口
正点原子I.MX6U-Mini开发板板载了一个TF卡接口,其原理图如图5.4.16.1所示:
图5.4.16.1 TF卡接口
图中SD_CARD为TF卡接口,TF卡采用4位uSDHC方式驱动,非常适合需要高速存储的情况。图中:USDHC1_DATA0~DATA3/USDHC1_CLK/USDHC1_CMD分别连接在I.MX6U的SD1_DATA0~DATA3/SD1_CLK/SD1_CMD引脚上。 USDHC1_CD_B是TF卡检测引脚,用于检测TF卡或SDIO WIFI插拔过程,连接到I.MX6U的UART1_RTS引脚上。注意:TF卡接口和SDIO WIFI接口共用一个SDIO,因此TF卡和SDIO不能同时使用!
5.4.17 SDIO WIFI接口
I.MX6U-Mini开发板板载一个SDIO WIFI接口,如图5.4.17.1所示:
图5.4.20.1 SDIO WIFI接口
SDIO WIFI接口用于连接正点原子出品的RTL8189 SDIO WIFI模块,USDHC1_DATA0~DATA3/USDHC1_CLK/USDHC1_CMD分别连接到I.MX6U的I.MX6U的SD1_DATA0~DATA3/SD1_CLK/SD1_CMD引脚上。WIFI_INT和WIFI_REG_ON连接到I.MX6U的SNVS_TAMPER2和SNVS_TAMPER0引脚上。
注意:TF卡接口和SDIO WIFI接口公用一个SDIO,因此TF卡和SDIO不能同时使用!!
5.4.18 ATK模块接口
I.MX6U-Mini开发板板载了ATK模块接口,其原理图如图5.4.18.1所示:
图5.4.18.1 ATK模块接口
如图所示,U9是一个1*6的排座,可以用来连接正点原子推出的一些模块,比如:蓝牙串口模块、GPS模块、MPU6050模块、激光测距模块、手势识别模块和RGB彩灯模块等。有了这个接口,我们连接模块就非常简单,插上即可工作。
图中:UART3_RXD/UART3_TXD连接到了I.MX6U的UART3上,和RS232、RS485共用一个串口,在使用ATK接口的时候需要将JP1跳线帽全部拔掉,防止RS232和RS485干扰到模块。而GBC_KEY和GBC_LED则分别连接在I.MX6U的GPIO1_IO01和JTAG_MOD这两个引脚上。
5.4.19 以太网接口(RJ45)
I.MX6U-Mini开发板板载了一个以太网接口(RJ45): ENET2,其中ENET2网口的原理图如图5.4.19.1所示:
图5.4.19.1 ENET2网络接口
I.MX6U内部自带两个网络MAC控制器:ENET1和ENET2,每个网络MAC需要外加一个PHY芯片来网络通信功能。这里我们选择的是LAN8720A这颗芯片作为I.MX6U的PHY芯片,该芯片采用RMII接口与I.MX6U通信,占用IO较少,且支持auto mdix(即可自动识别交叉/直连网线)功能。板载两个自带网络变压器的RJ45头(HR91105A),一起组成两个10M/100M自适应网卡。
图中ENET_MDIO和ENET_MDC这两根线连接到了I.MX6U的GPIO1_IO06和GPIO1_IO07这两个IO上。ENET2_RESET网络复位引脚,连接到了I.MX6U的 SNVS_TAMPER8这两个引脚上。
5.4.20 电源
I.MX6U-Mini开发板板载的电源供电部分,其原理图如图5.4.20.1所示:
图5.4.20.1 电源
图中,总共有2个稳压芯片:U6/U4,DC_IN用于外部直流电源输入,经过U6这颗 DC-DC芯片转换为5V电源输出,其中VD1是防反接二极管,避免外部直流电源极性搞错的时候,烧坏开发板。K1为开发板的总电源开关,F1为2A自恢复保险丝,用于保护USB。U4为3.3V稳压芯片,给开发板提供3.3V电源。
这里还有USB供电部分没有列出来,其中VUSB就是来自USB供电部分,详见5.4.3节。
5.4.21 电源输入输出接口
I.MX6U-Mini开发板板载了两组简单电源输入输出接口,其原理图如图5.4.21.1所示:
图5.4.21.1 电源
图中,JP1和JP22分别是3.3V和5V的电源输入输出接口,有了这2组接口,我们可以通过开发板给外部提供 3.3V和5V电源了,虽然功率不大(最大1000mA),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端口,也可以用来由外部给开发板供电。
图中D1和D2为TVS管,可以有效避免VOUT外接电源/负载不稳的时候(尤其是开发板外接电机/继电器/电磁阀等感性负载的时候),对开发板造成的损坏。同时还能一定程度防止外接电源接反,对开发板造成的损坏。
5.5 I.MX6U核心板原理图详解
5.5.1 SOC
I.MX6U-ALPHA开发板配套的I.MX6U核心板,采用MCIMX6Y2CVM08AB(800MHz,实际792MHz)作为主控CPU,为工业级。自带32KB的L1指令和数据Cache、128KB的L2 Cache,集成NEON,集成双精度硬件浮点计算单元VFPv3,并具有128KB OCRAM、2个通用定时器(GPT)、4个周期定时器(EPIT)、8个PWM、1个SDMA控制器、4个ECSPI、3个看门狗、3个SAI、4个IIC、7个串口、2个USB(高速,带PHY)、2个FlexCAN、2个12位ADC、1个SPDIF接口、1个SRTC、1个RTC、2个USDHC接口、1个RGB LCD控制器(ELCDIF)、2个10/100M以太网MAC控制器、1个摄像头接口、1个硬件随机数生成器、以及124个通用IO口等,根据芯片型号的不同主频可以为528Mhz、700MHz(实际696MHz)、800MHz(实际792MHz),轻松应对各种应用。
SOC部分的原理图如图5.5.1.1~图5.5.1.5(因为原理图比较大,缩小下来可能有点看不清,请大家打开开发板光盘的原理图进行查看)所示:
图5.5.1.1 SOC部分原理图1
图5.5.1.2 SOC部分原理图2
图5.5.1.3 SOC部分原理图3
图5.5.1.4 SOC部分原理图4
图5.5.1.5 MCU部分原理图5
MCIMX6Y2CVM05AB/08AB芯片的原理图由5个部分组成,接下来依次看一下这五部分的具体内容:
图5.5.1.1:此部分原理图主要是I.MX6U的部分IO原理图,比如SNVS_TAMPER0~9、JTAG外设IO、USDHC1外设IO、UART外设IO、USB外设IO等。
图5.5.1.2:此部分原理图也是I.MX6U的IO原理图,主要包括NAND Flash外设IO、USDHC2外设IO、CSI摄像头IO等。
图5.5.1.3:此部分原理图也是I.MX6U的IO原理图,包括LCD外设IO、ENET外设IO、GPIO1_IO01~09这一组GPIO。
图5.5.1.4:此部分原理图是I.MX6U的DRAM外设IO。用于连接DDR设备,比如正点原子ALPHA开发板所使用的DDR3L。
图5.5.1.5:此部分原理图是I.MX6U的电源部分。
5.5.2 BTB接口
I.MX6U核心板采用2个2*30的3710M(母座)板对板连接器来同底板连接(在转接板底面),接插非常方便,转接板上面的底板接口原理图如图5.5.2.1所示:
图5.5.2.1 底板接口
图中,J1和J2是2个2*30的板对板母座(3710M),和底板的接插非常方便,方便大家嵌入自己的项目中去。该接口总共引出105个IO口,另外,还有USB、电源、复位、ONOFF等信号。
5.5.3 NAND FLASH
I.MX6U NAND版本核心板板载了一个NAND Flash,此部分电路如图5.5.3.1所示:
5.5.3.1 NAND Flash
对于Linux系统而言,是需要一个存储数据、系统的存储芯片,比如QSPI Flash、NAND Flash、EMMC等。正点原子的I.MX6U-ALPHA开发板有两种核心板,这两种核心板的FLASH存储芯片不同,一个使用的NAND FLASH、一个使用的EMMC。图5.5.3.1中的是NAND Flash的原理图,经过测试,可以支持256MB、512MB、2GB的NAND FLASH存储芯片。
5.5.4 EMMC
I.MX6U EMMC核心板板载了8GB的EMMC,此部分电路如图5.5.4.1所示:
5.5.4.1 EMMC
EMMC也是存储Flash,相比NAND Flash,EMMC使用简单(和SD类似)、速度快、容量高。目前EMMC已经逐渐的取代了NAND Flash,尤其是在手机、平板领域。
5.5.5 DDR3L
I.MX6U核心板板载了DDR3L,此部分电路如图5.5.5.1所示:
5.5.5.1 DDR3L
图中,U5就是DDR3L芯片,根据配置的不同,一共有两种型号,分别为:NT5CC256M16EP-EK(512MB)和NT5CC128M16JR-EK(256MB)。该芯片挂在I.MX6U的MMDC接口上。
5.5.6 核心板电源
I.MX6U对于供电有严格的要求,尤其是上电顺序,正点原子的I.MX6U核心板供电主要分5部分:SNVS供电、DCDC_3V3供电、ARM/SOC内核供电、DDR3L供电和SD卡供电,我们依次来看一下,首先是SNVS供电,I.MX6U的数据手册要求,SNVS必须最先上电,此部分供电电路如图5.5.6.1所示:
图5.5.6.1 SVS_3V3供电
图中,U7是一颗LDO芯片,将5V转化为3.3V,作为SNVS_3V3,由于SNVS_3V3电流不大,所以一个LDO芯片就可以了。接下来是DCDC_3V3,也就是核心板的主电源,如图5.5.6.2所示:
图5.5.6.2 DCDC_3V3
U8是一个DCDC芯片,用于将5V转换为3.3V,但是电流大,MP2144最大输出2A大电流,因此作为核心板的3.3V主电源。这里要注意,U8的使能引脚使用了I.MX6U的PMIC_ON_REQ引脚来控制,当SNVS_3V3供给I.MX6U的VDD_SNVS_IN引脚以后,I.MX6U的PMIC_ON_REQ引脚就会输出高电平,从而产生DCDC_3V3,DCDC_3V3也是I.MX6U的VDD_HIGH_IN电源。接下来就是ARM/SOC内核电源,如图5.5.6.3所示:
图5.5.6.3 ARM/SOC电源
U6也是一片DCDC,用于产生ARM/SOC内核电压,此内核电压可以通过I.MX6U的GPIO_DVFS和PMIC_STBY_REQ来调节。U6的使能脚连接到了DCDC_3V3_PG信号上,此信号是由U8产生的,当U8输出3.3V电压以后DCDC_3V3_PG信号就会产生,为一个高电平信号。通过DCDC_3V3_PG来控制VDD_ARM_SOC_IN电源的产生,这样就保证了VDD_HIGH_IN比ARM_SOC_IN先上电的要求。接下来看一下DDR3L电源,正点原子的I.MX6U核心板使用的是DDR3L,DDDR3L的工作电压为1.35V,此部分电源电路如图5.5.6.4所示:
图5.5.6.4 DDR3L电路
U11也是一个DCDC芯片,用于将5V电源转换为1.35V供DDR3L使用。接下来看一下SD卡部分电路,如图5.5.6.5所示:
图5.5.6.5 SD卡电源
U9是一片LDO,用于将5V电源转为3.3V或1.8V供SD卡使用,因为高速SD卡需要1.8V供电,因此此路电源电压是可调的,通过SD1_VSELECT来选择使用3.3V还是1.8V,SD1_VSELECT连接到了I.MX6U的GPIO1_IO05上。
最后还有I.MX6U其他外设电源,如图5.5.6.6所示:
图5.5.6.6 I.MX6U其他外设电源
5.6 开发板使用注意事项
为了让大家更好的使用正点原子I.MX6U-ALPHA开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
①、1个USB供电最多500mA,且由于导线电阻存在,供到开发板的电压,一般都不会有5V,如果使用了很多大负载外设,比如4.3寸屏、网络、摄像头模块等,那么可能引起USB供电不够,所以如果是使用4.3屏的朋友,或者同时用到多个模块的时候,建议大家使用一个独立电源供电。如果没有独立电源,建议可以同时插2个USB口,并插上仿真器,这样供电可以更足一些。
②、当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。
③、开发板上的跳线帽比较多,大家在使用某个功能的时候,要先查查这个是否需要设置跳线帽,以免浪费时间。
④、当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重插试试)。
⑤、开发板的USB OTG的USB SLAVE和USB HOST共用同一个USB口,所以,他们不可以同时使用。使用的时候多加注意。
⑥、当需要从底板上拆转接板下来的时候,请左右晃动取下,不要太大幅度,否则有可能拆坏座子。
至此,本手册的实验平台(正点原子I.MX6U-ALPHA开发板)的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于理解后面的代码,在编写软件的时候,可以事半功倍,希望大家细读!另外正点原子开发板的其他资料及教程更新,都可以在技术论坛www.openedv.com下载到,大家可以经常去这个论坛获取更新的信息。