I.MX6ULL终结者开发板采用核心板+底板的方式,核心板与底板硬件连接形式上采用的是邮票孔的方式,相比起连接器的方式此种方式具有连接性稳定,抗震动等优点。底板上相应的原理图如图 1.1所示:
从上图我们可以看到邮票孔的封装一共引出了146个引脚,其中i.MX6ULL引出了120个IO,另外还有电源,GND。考虑到信号完成性的要求,连接器上引出了尽可能多的GND。
I.MX6ULL支持很多种启动方式,我们可以通过设置与启动方式有关的IO状态来选择启动方式,具体的原理如图 2.1所示:
从上图我们可以看到,启动方式的IO中大多数的IO都是通过电阻下拉了,只有8位IO可以通过一个8位的拨码开关来选择对应的状态。具体的启动方式设置我们整理成了下面表格(关于启动方式更详细的说明,大家可以参考下5.1章节):
1 2 3 4 5 6 7 8 启动设备
0 1 x x x x x x USB串行启动
1 0 0 0 0 0 1 0 SD/TF卡启动
1 0 1 0 0 1 1 0 EMMC启动
1 0 0 0 1 0 0 1 NAND FLASH启动
从上图我们可以看到电源部分使用了一个DCDC的电源芯片U24,外部输入电源首先从JACK1输入,经过防反接二极管D7到达电源开关(J1),当我们按下电源开关(J1)的时候,电源会到达电源芯片(U24)的输入端,最终经过电源芯片会输出5V的电源给系统供电。由于我们使用的电源芯片U24是个宽电压芯片,允许输入的电压是5V~16V直流电源,所以我们可以很方便的就能找到一个与之匹配的电源适配器来使用,采用宽压电源芯片的优点是如果错接了12V的电源,板子也不会因为输入电压过高,而导致器件损坏(默认我们提供5V的电源适配器)。
从上图我们可以看到开发板是低电平产生复位。i.MX6ULL终结者开发板通过专用的复位芯片来实现系统的复位。因为我们真正做产品的时候,有可能我们产品工作在环境非常恶略的环境下,比如电磁干扰之类的,复位引脚有可能在受到干扰的情况下,会发生瞬间的复位信号,如果这个信号直接接到处理器的复位引脚,处理器收到这个复位信号可能就会执行复位了,可是实际上我们并没有要求系统复位。因此我们可以使用专门的复位芯片,它能够排除瞬间的干扰,又可以防止系统在启动和关闭期间的误操作,保证系统的稳定。所以我们的终结者开发板不仅仅是一款学习板,而且也可以拿来作为参考,设计真正的产品。
i.MX6ULL终结者开发板的纽扣电池用来给i.MX6ULL的SNVS模块供电,保证在系统电源断电的情况下给SNVS模块提供持续的电源,原理图如图 5.1所示:
在上图中VDD_COIN_3V是连接到核心板的,最终给i.MX6ULL的SNVS模块供电,DCDC_3.3V和纽扣电池(BAT1)同时给VDD_COIN_3V提供电源。DCDC_3.3V是系统电源5V转换出来的,当系统电源断开以后,DCDC_3.3V电源就会停止输出,此时纽扣电池会继续给VDD_COIN_3V提供持续的电源,最终使得i.MX6ULL的SNVS模块有3V的电源,从而使得RTC时钟模块继续运行(RTC时钟模块属于SNVS模块)。
i.MX6ULL终结者开发板板载了两路CAN接口,原理图如图 6.1和图 6.2所示:
i.MX6ULL处理器芯片内部集成了两路CAN控制器,我们在底板上通过两个CAN的协议转换芯片(TJA1040T)分别引出了两路标准的CAN接口(H,L),其中R1031和R1032分别是两路CAN的终端匹配电阻。另外我们分别在两路CAN的数据线上加了TVS保护器件(D77,D78,D79,D80),使其能够达到抗静电的效果。
I.MX6ULL终结者开发板板载了一个RS485接口,该485接口和UART3是复用的,因此我们增加了一个RS485和UART3的选择接口,原理图如图 7.1所示:
从上图我们可以看到这个选择接口是用一个2x3的排针引出的,通过跳线帽可以选择是使用RS485,还是使用TTL串口功能。例如,我们使用RS485功能,可以把上图中的1和3、2和4分别通过跳线帽短接起来;如果我们使用TTL串口功能,我们需要把3和5、4和6分别通过跳线帽短接起来。
为了便于功能扩展,i.MX6ULL终结者开发板通过一个20pin的排座,引出了一个GPIO扩展接口,原理如图 8.1所示:
从上图可以看出该接口引出了两路ADC,一路SPI,一路TTL串口,一路I2C,5个GPIO。通过这些接口我们可以很容易的扩展其他外设。
I.MX6ULL终结者开发板板载了一路RS485接口,原理图如图 9.1所示:
从上图我们可以看到RS485实际上是串口通过一个485协议转换芯片(SP3485EN)转换出来的,由于SP3485EN这个芯片是半双工的(收发不能同时进行),所以需要一个收发方向的控制引脚(SP3485EN芯片的2、3引脚),一般这两个收发方向控制的引脚会连接到CPU处理器,软件除了要操作串口的收发,还需要控制这两个引脚的状态,这样会增加软件的工作量。为了减少软件的工作量,我们的原理设计使用的是自收发的控制,参照我们的原理设计,我们的软件只需要实现串口的收发功能就可以,而不用去考虑设置SP3485EN的收发控制引脚的状态了。为了提高485接口的抗静电能力,我们在485的数据总线上加了TVS静电保护(D55,D76)电路。
I.MX6ULL终结者开发板板载了一个USB串口,原理图如图 10.1和图 10.2所示:
USB转串口我们使用的是CH340G芯片,该芯片是由南京沁恒微电子研发生产的一款国产芯片。CH340G的工作电压支持3.3V、5V,甚至是3V,从上图可以看到我们给CH340G的电压是5V,并且是Mini USB接口提供的5V电源,与开发板上的电源是独立的,只要我们接上USB线CH340G就会上电。USB转串口最终通过一个Mini USB座子(J49)引出。
I.MX6ULL终结者开发板板载了两个LED发光二极管,原理图如图 11.1所示:
其中上面的LED1是系统电源指示灯。LED2是用户LED灯,正极通过510欧的电阻连接到3.3V电源上,负极连接到i.MX6ULL的GPIO_IO03引脚上。
i.MX6ULL终结者开发板板载了一个输入按键,原理如图 12.1所示:
按键KEY0作为普通按键输入,一端接在GND上,另一端连接在i.MX6ULL的UART1_CTS引脚上,并且通过一个10K的电阻上拉到3.3V。默认情况下UART1_CTS的引脚是高电平状态,按下按键的时候,UART1_CTS引脚和GND直接连在一起,电平就会变成低。
i.MX6ULL终结者开发板板载了一个有源蜂鸣器,原理如图 13.1所示:
蜂鸣器有两种:有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内部自带了震荡电路,只需要接上电源,就会震荡发声;无源蜂鸣器需要外接一个定频(2~5KHz)的驱动信号,才会发声。为了电路设计简单,方便大家使用,我们使用的是有源蜂鸣器。蜂鸣器的开关通过控制三极管的通断来实现,我们使用i.MX6ULL的SNVS_TAMPER1这个IO来控制三极管的通断。
i.MX6ULL终结者开发板板载了一个TF卡接口,原理如图 14.1所示:
开发板采用标准的TF卡插座,采用USDHC驱动,SD1_DATA0、SD1_DATA1、SD1_DATA2、SD1_DATA3是4位数据总线,分别连接到i.MX6ULL的SD1_DATA0~SD1_DATA03引脚上面。SD1_CMD和SD1_CLK分别是USDHC的命令和时钟线,分别接到了i.MX6ULL的SD1_CMD和SD1_CLK引脚上了。SD1_CD是TF卡的插拔检测引脚,通过该引脚状态可以检测是不是有TF卡连接。
i.MX6ULL终结者开发板板载了一个EEPROM存储芯片,原理如图 15.1所示:
EEPROM存储芯片我们使用的是AT24C02芯片,该芯片的容量是2K bit,它与i.MX6ULL通过I2C总线进行通信。
i.MX6ULL终结者开发板板载了一个音频编解码芯片WM8960,原理如下图所示:
WM8960是一款低功耗、立体声编解码芯片,内部集成了24位高性能的DAC/ADC,并且支持3D音效等功能。采用D类扬声器驱动器,为8Ω负载提供每通道1W功率。集成完整的麦克风接口和立体声耳机驱动器。由于无需单独的麦克风、扬声器或耳机放大器,因此显著降低了外部元件的需求。高级片上数字信号处理功能为麦克风或线路输入执行自动电平控制。
图中的WM8960的SPK+和SPK-分别通过两组排针引出,方便用户连接8Ω 1W的喇叭。J16(Mic In)是通过3.5mm的耳机接口实现立体声录音。J17(SPEAKER)是3.5mm的耳机接口,用来实现音频的输出。
WM8960芯片与i.MX6ULL通过SAI接口连接,图中的SAI2_MCLK、SAI2_BCLK、SAI2_SYNC、SAI2_TXD、SAI2_RXD分别接在i.MX6ULL的JTAG_TMS、JTAG_TDI、JTAG_TDO、JTAG_TRST、JTAG_TCK引脚上。
WM8960还通过I2C连接到i.MX6ULL的I2C2总线上了,在使用WM8960之前,我们需要通过这个I2C接口对他进行配置。
i.MX6ULL终结者开发板板载了一路RGB屏幕接口,如图 17.1所示:
上图中CN1是RGB的屏幕接口,通过一个40pin的FPC座子引出,同时也支持触摸屏。该接口仅支持RGB接口的屏幕,目前迅为电子的RGB接口屏幕有4.3寸(480272),5寸(800600),7寸(1024*600)。
上图中的BLT_PWM是控制屏幕背光的引脚,他连接到了i.MX6ULL的GPIO1_IO08引脚。SNVS_TAMPER9是控制触摸芯片复位的,它连接到了i.MX6ULL的SNVS_TAMPER9引脚上面。GPIO_9是触摸的中断引脚,它连接到了i.MX6ULL的GPIO1_IO09引脚上面。I2C2_SDA和I2C2_SCL是用于和触摸芯片通信的,他们分别连到了i.MX6ULL的UART5_RX_DATA和UART5_TX_DATA的引脚上面。
I.MX6ULL开发板板载了两种不同接口形式的LVDS接口,原理如图 18.1所示:
从上图我们可以看到LVDS接口是RGB信号通过芯片GM8285C(U13)转换出来的,GM8285C最大支持将28位并行数据转换为4对串行LVDS差分信号,同时并行输出1路LVDS差分时钟信号。I/O电压支持1.8V/3.3V。
在上图我们看到有两种LVDS屏幕接口:J18(30pin的FPC座子)和CON3(HDMI座子)。这两个接口实际上是一路LVDS信号,只是对外引出的方式不一样,因为迅为电子的LVDS屏幕有两种接口(30pin FPC座子和HDMI接口),所以为了适配迅为电子屏幕的接口,i.MX6ULL终结者底板引出了这两种接口。(大家一定要注意下:CON3(HDMI座子)只能用来连接迅为电子的LCD屏幕,不能用来连接电脑显示器!!!)。
I.MX6ULL终结者开发板板载了一路USB OTG接口,原理如图 19.1所示:
上图中USB OTG接口的USB_OTG1_DN和USB_OTG1_DP分别接到了i.MX6ULL的USB_OTG1_DN和USB_OTG1_DP引脚上了。USB OTG接口通过一个Mini USB座子引出,我们可以通过此接口给开发板烧写镜像。
i.MX6ULL终结者开发板提供两路USB HOST接口,原理如图 20.1 所示:
从图中我们可以看到两路USB HOST是i.MX6ULL的USB OTG2接口(USB_OTG2_DP,USB_OTG2_DN)通过一个芯片FE1.1S(U15)扩展出的。FE1.1S是一款高性能,低功耗的USB HUB芯片,他支持USB2.0协议,可以把一路USB HOST,能扩展出4路USB HOST接口。
上图中的J20和J21是FE1.1扩展出的其中两路USB HOST,通过这两个USB接口我们可以链接USB Device(例如:U盘,鼠标,键盘等等)。
i.MX6ULL终结者开发板板载了一路CSI的摄像头接口,原理如图 21.1所示:
图中的J22接口可以用来连接迅为电子的500w摄像头模块。其中的CSI_MCLK、CSI_PIXCLK、CSI_HSYNC、CSI_VSYNC、CSI_DATA0、CSI_DATA1、CSI_DATA2、CSI_DATA3、CSI_DATA4、CSI_DATA5、CSI_DATA6、CSI_DATA7这些信号连接到i.MX6ULL摄像头模块相应的引脚上。
图中的I2C2_SDA和I2C2_SCL连接到i.MX6ULL的I2C2总线上,摄像头模块需要i.MX6ULL通过I2C初始化配置以后才能正常工作。GPIO_2控制摄像头模块的复位,它连接到i.MX6ULL的GPIO1_IO02引脚上。GPIO_4控制摄像头模块的开关使能,它连接到i.MX6ULL的GPIO1_IO04引脚上。
i.MX6ULL终结者开发板板载了一个WIFI/蓝牙二合一的模块,原理如图 22.1所示:
我们使用的WIFI/蓝牙二合一模块型号是RTL8723,这个模块的电路非常简单,使用3.3V电源,与i.MX6ULL通过USB总线传输数据,对外引出了ipex的天线接口(U58)。
i.MX6ULL终结者开发板板载了一个Mini PCIE的4G模块接口,原理如图 23.1和图 23.2所示:
上图中U25是Mini PCIE座子,可以用来连接Mini PCIE的4G模块,比如移远的EC20模块,高新兴的ME3630模块。虽然我们使用的是Mini PCIE接口,实际上传输数据用到的是USB接口(使用的FE1.1S扩展出来的一路USB接口)。上图中的CON5是SIM卡插座,使用4G模块联网,我们必须要插入SIM卡。
i.MX6ULL终结者开发板板载了一个6轴重力加速度计,原理如图 24.1所示:
从上图我们可以看到6轴重力加速度计芯片是MPU6050(U36),该芯片内部集成了:三轴加速度传感器和三轴陀螺仪。我们使用I2C来访问它。I2C1_SCL和I2C1_SDA分别连接到i.MX6ULL的UART4_TX_DATA、UART4_RX_DATA这两个IO上面了。
i.MX6ULL终结者开发板板载了一个光环境传感器,如图25.1所示:
上图中的U37是光环境传感器AP3216C,该芯片可以感应周围光线的强弱,接近距离和红外强度,使用的是I2C的接口,I2C1_SCL和I2C1_SDA分别连接到i.MX6ULL的UART4_TX_DATA、UART4_RX_DATA这两个IO上面了,GPIO_1是AP3216C的中断输出引脚,连接在i.MX6ULL的GPIO1_IO01上面了。
I.MX6ULL终结者开发板板载了温湿度传感器接口,原理如图 26.1所示:
从上图可以看到该接口可以兼容DHT11(温湿度采集模块)和DS18B20(温度采集模块)。该接口的电路比较简单,3.3V电源供电,一个数据引脚直接连到i.MX6ULL的SNVS_TAMPER2引脚上了。
i.MX6ULL终结者开发板板载了一个电位器,原理如图 27.1所示:
从上图可以看到电位器(R1036)的原理很简单,使用3.3V供电,输出引脚通过GPIO_5链接到i.MX6ULL的GPIO1_IO05引脚上了。GPIO1_IO05可以复用成ADC功能,这样就能够实现电位器的电压采集了,我们调节电位器上的旋钮,ADC采集到的电压会在0~3.3V范围内变化。
i.MX6ULL终结者开发板板载了一个红外接收模块,原理如图 28.1所示:
从上图可以看到红外接收模块(U38)使用的是HS0038B模块,该模块的原理很简单,使用3.3V供电,数据输出引脚UART2_RXD连接到i.MX6ULL的UART2_RX_DATA引脚上面了。
i.MX6ULL终结者开发板板载了一路HDMI接口,原理如图 29.1和图 29.2所示:
I.MX6ULL处理器本身是不支持HDMI接口的,从上图我们可以看到HDMI接口是RGB接口通过Sil9022A(U43)转换出来的。Sil9022A可以将24位的RGB数据转换成标准的HDMI信号,i.MX6ULL的RGB模块相关的引脚与该芯片直接相连。另外该还需要通过I2C(I2C2_SCL、I2C2_SDA)与i.MX6ULL进行连接,因为在使用之前,需要通过I2C对该芯片进行配置。CON22是标准的HDMI接口,我们可以通过HDMI线,连接显示器到该接口。
i.MX6ULL终结者开发板板载了两路以太网接口,分别是ETHERNET1和ETHERNET2,其中ETHERNET1的原理如图 30.1所示:
I.MX6ULL内部集成了两个MAC控制器,每个MAC外接一个PHY芯片,就可以实现网络通信功能。我们使用的是KSZ8081RNB这个PHY芯片,该芯片一端与i.MX6ULL通过RGMI接口连接,另一端连接到带网络变压器的RJ45接口,组成一个10M/100M自协商的网卡。
ETNERNET1和ETHERNET2通过MDIO接口与i.MX6ULL连接在一起,通过MDIO接口i.MX6ULL可以读写PHY芯片的寄存器,从而可以对PHY芯片进行配置。MDIO接口由两根线组成ENET_MDIO和ENET_MDC。这两根线分别连接到了i.MX6ULL的GPIO1_IO06和GPIO1_IO07引脚上面了。另外ETHERNET1和ETHERNET2分别有一个复位引脚,这两个复位引脚是SNVS_TAMPER7和SNVS_TAMPER8,这两个引脚连接到i.MX6ULL的SNVS_TAMPER7和SNVS_TAMPER8引脚上了。