从晶元到人工智能

    返回首页    发表留言
本文作者:李德强
          第二节 控制模块
 
 

        在本节中,我们来完成控制模块的电路设计。首先我们需要对控制模块做一下简单的功能分析,也就是说我们先要了解控制模块都具有哪些功能,然后再逐步的完成这些功能。

  • 控制系统处理器和其周边电路功能
  • 电源模块插槽
  • NanoPi插槽
  • 其它接口(距离模块、GPIO等)

        实际上我们所做的控制模块除了本身的功能之外,还需要将电源模块和NanoPi两个电路板插在其上方组合在一起,所以我们的控制电路板的整体结构如下:

        也就是说,控制模块是一个底板,上面带有几组插槽,电源模块和NanoPi通过引脚插入到底板当中完成组装。

        此外,控制模块还需要接入超声波模块用于测量前方障碍物到国体的距离,以及一些预留的GPIO引脚。

        现在我们来完成控制模块的电路设计,首先是芯片的选型,我们本来可以选用STM32F103RCT6作为控制模块的处理芯片,并在其上完成嵌入式程序的开发,但就目前情况来看此芯片价格高居不下,于是我们选用了STM32F407VET6,也就是说使用了Cortex-M4系列芯片来作为我们的处理芯片。

一、原理设计

        第一步,为STM32F407VET6加入到我们的电路原理图当中:

        第二步,在12和13脚上加入外部晶振电路,其中晶振频率为8MHz,两个电容均为22pF:

        第三步,为14脚加入复位电路,并将94脚BOOT0和37脚BOOT1通过下拉电阻接地:

        第四步,为VBAT、VDD、VSS、VDDA、VERF接入电源并接入电容:

        第五步,为72脚和76脚加入SWD固件烧写接口,即1.27mm间距孔(使用其它间距也可以,例如2.54mm间距):

        第六步,为VCAP加入电容:

        这样我们的STM32F407VET6的基础电路就完成,之后我们需要在相应的GPIO上加入我们定制的功能。

        功能一:加入AD采集功能,我们使用PA0、PA1、PC2、PC3进行电压采集,分别是ADC1_CH0、ADC1_CH1、ADC1_CH12、ADC1_CH13,其中ADC1_CH0为我们的电源电压采集功能,其它通道为预留功能:

        功能二:电机驱动信号PWM输出,我们使用TIM4的4个PWM输出脚PD12、PD13、PD14、PD15以及TIM3的4个PWM输出脚PC6、PC7、PC8、PC9,其中TIM3的4路PWM输出为预留功能:

        功能三:使用HCSR04超声波测距功能,接入PD9和PD8,由于HCSR04的ECHO脚输出是5V,所以我们使用10K和20K分压电阻将其转为3.33V:

        功能四:我们参考MPU6050电子陀螺仪的外围电路,将其加入到设计图当中,并将PA6和PA7接入到其中,也就是I2C1接口,其中PB6和PB7都加了10K的上拉电阻:

        功能四:我们使用PE0和PE1两个引脚来作为系统的信号指示灯:

        功能五:加入与电源模块的接口,此接口我们在前一节中已经完成,对应的连接到控制模块中。接口中输入5V电源,我们需要通过AMS1117电源芯片将其转为3.3V,同时加入一个LED电源指标灯,当电源工作正常时LED灯亮起:

        功能六:加入NanoPi接口并将其USB接口引出,NanoPi与我们控制模块中有几个部分需要连接:

电源接口5V供电。

使用串口与STM32连接。

引出USB插槽到控制模块。

        我们参考NanoPi Duo2的GPIO定义其接口如下:

 

 

Pin# GPIO1 Name Linux gpio   Pin# GPIO2 Name Linux gpio
1 5V VDD_5V     2 RXD DEBUG_RX(UART_RXD0)/GPIOA5/PWM0 5
3 5V VDD_5V     4 TXD DEBUG_TX(UART_TXD0)/GPIOA4 4
5 3V3 SYS_3.3V     6 GND GND  
7 GND GND     8 SCL I2C0_SCL/GPIOA11 11
9 IRRX GPIOL11/IR-RX 363   10 SDA I2C0_SDA/GPIOA12 12
11 PG11 GPIOG11 203   12 CS UART3_TX/SPI1_CS/GPIOA13 13
13 DM3 USB-DM3     14 CLK UART3_RX/SPI1_CLK/GPIOA14 14
15 DP3 USB-DP3     16 MISO UART3_CTS/SPI1_MISO/GPIOA16 16
17 DM2 USB-DM2     18 MOSI UART3_RTS/SPI1_MOSI/GPIOA15 15
19 DP2 USB-DP2     20 RX1 UART1_RX/GPIOG7 199
21 RD- EPHY-RXN     22 TX1 UART1_TX/GPIOG6 198
23 RD+ EPHY-RXP     24 CVBS CVBS  
25 TD- EPHY-TXN     26 LL LINEOUT_L  
27 TD+ EPHY-TXP     28 LR LINEOUT_R  
29 LNK EPHY-LED-LINK     30 MP MIC_P  
31 SPD EPHY-LED-SPD     32 MN MIC_N

 

        我们根据NanoPi Duo2的GPIO接口来完成相应的功能:

        其中,U4为USB插座,用于插入USB摄像头;P3为NanoPi-Duo2自身的Debug接口;NanoPi的UART1和STM32的UART1相连,用于数据通信,注意Tx和Rx需要反相接入。

        功能七:使用串口2作为STM32的Debug接口:

        最后:引出预留的5V电源和3V电源以及一些GPIO脚:

        这样,我们就基本上完成了控制模块的电路设计,整体设计原理图如下:

        可以看到我们的STM32F407VET6和NanoPi-Duo2剩余了很多GPIO引脚没有被使用,包括I2C、SPI、UART、GPIO等功能,读者可以根据自己的需要加入相应的功能。我们接下来对控制模块的电路进行布局和布线。

二、布局布线

        首先我们需要将元器件摆放在相应的位置上,同样的原则,将同一模块的中的元器件摆放在一起,如下图将ASM1117和其相关的元器件摆放在一起:

        之后,我们将Cortex-M4处理器,也就是我们选用的STM32F407VET6的电源电容与其摆放在一起,电容尽量靠近芯片的电源引脚:

        之后,将8MHz晶振和其振荡电路的电容C5和C8摆放在一起:

        将L2和R4以及L3和R8摆放在一起,其中L2和L3是两个LED灯:

        一些排针插座:

        MPU6050电子陀螺仪和其相关的外围电路:

        最后,NanoPi Duo2的插座和USB插座:

        至此,我们的布局工作就完成了,来看一下整体布局:

        接下来,对所有网线进行布线:

        最后,对PCB顶层和底层进行覆铜,完成GND网络的连接:

        最终效果:

        这样,我们就完成控制电路板PCB的设计工作,之后我们需要将设计图提交到工厂进行生产。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号